|
前回、フォームから送ったデータを、デコードしてCGIスクリプトで読み出せるようにするための、準備を整えました。今回は、デコードしたデータを表示する方法を学びましょう。
始めに、「cgi-bin」フォルダ内に適当な名前のフォルダを作成します。ここでは「test2」という名前のフォルダを作成しました。
次にフォームを作成しましょう。
<form method="POST" action=test2.cgi>
<input type=text name=name>
<input type=text name=age size=4>
<input type=text name=address>
<input type=submit value=送信>
<input type=reset value=中止>
</form>
ブラウザでは、以下のように表示されますね。テーブルにいれたり、インデントをつけたりして、きれいに整形してもかまいません。上の通りに半角英数で書いてください。別の単語にしたときは、以下の文章を自分の入れた文字に読み替えてください。
作成したフォームに名前を付けて保存します。ここでは仮に「fomr.html」としましょう。保存先は先ほど作成した「cgi-bin/test2」の中です。
今度はCGIスクリプトを作成します。「Perl Editor」を起動して、「定型文」メニューの「初期設定」と「HTML出力」を使って、HTMLファイルを生成します。言うまでもありませんが、CGIスクリプトのファイル名は、
<form method="POST" action=test2.cgi>
で指定したファイル名です。
完成したら、名前を付けて保存します。ここでは仮に「test2.cgi」とします。保存先はform.htmlと同じく、「cgi-bin/test2」の中です。jcode.plへのパスの設定も忘れずに。
今回は「ヒアドキュメント」を使います。「test2.cgi」の、
print "<hr width=40\%><br>\n";
print "</body></html>\n";
の間に、
print <<"EOF";
と入力します。ヒアドキュメントを終了するのを忘れないように、何行か改行して
EOF
と入力します。EOFは必ず左端に書くこと。スペースを空けたりすると動作しません。
print <<"EOF";
この間にHTMLタグを書きます。
EOF
まず、何も考えずに、次のコードを書いてみましょう。(inputタグのname属性を変えた人は、自分の記述した文字に置き換えてください)
名前:$FORM{'name'}<br>
年令:$FORM{'age'}才<br>
住所:$FORM{'address'}<br>
:は全角コロンです。書き終えたら、上書き保存しましょう。
では、さっそくスクリプトが動くかどうか試してみます。
http://127.0.0.1/cgi-bin/test2/form.html
を呼び出します。
フォームが表示されたら、適当な文字を入力して「送信」してみましょう。
名前:山田太郎
年令:25才
住所:東京都
のように、あなたの入力した通りの文字が表示されれば成功です。
$FORM{'name'}
$FORM{'age'}
$FORM{'address'}
これは、連想配列と呼ばれる、Perlの機能を使っています。連想配列に付いては、次項で説明しています。
正しくデコード処理されていれば、
<input type=xxx name=yyy value=zzz>(今回はvalueは指定しませんでした)
のname=yyyの「yyy」が$FORM{'yyy'}となります。
この仕組みさえ覚えてしまえば、難しく考えなくても、送られてきたデータをCGIスクリプト上で表示させることは簡単にできるようになります。
最後に、送信されたデータをテーブルなどで、きれいに整形してみてください。完成したら、スクリプトを上書き保存します。
うまくできましたか?サーバーエラーで動作しない場合は、じっくりとスクリプトを読み返してみましょう。「"」「\」「;」が抜けていたり、ヒアドキュメントを閉じ忘れていたり、ヒアドキュメントの最後の「EOF」が左端になかったり、EOFの行に余分なスペースやタブが入っていたりしていませんか?
jcode.plへのパスが正しいかどうかも確かめましょう。
|