AN HTTPD ゲストブック/コメント集(2001年1月24日14:50)


中田昭雄 nakata@st.rim.or.jp 2001/01/24 21:16

tomo さん、
"T1=aaaaa" がリクエスト(のボディ)にあったとしても、それが CGI(Perl)スクリプトの $T1 に自然に入るわけではありません。

POSTメソッドの場合は、
read(STDIN, $in, $ENV{'CONTENT_LENGTH'});
などとして、まず(たとえば)$in に "T1=aaaaa" を読み込んで、それを処理するというのが普通です。

なお、理屈を理解したら、実際にはこのあたりの処理は入力のデコードなども含めて cgi-lib.pl や CGI.pm などのライブラリを利用する方がよりよいと思います。


tomo qubetu@yahoo.co.jp 2001/01/24 14:50

初歩的な質問で恥ずかしいのですが
HTMLで入力したテキスト項目が、
どうやってもcgi側で引継がれません。

htmlは 
<form method="POST" action="/cgi-bin/test.cgi">
<p align="center">
<input type="text" name="T1" size="20" value="aaaaa">
<input type="submit" value="送信" name="B1">
<input type="reset" value="リセット" name="B2"></p>
</form>

cgiは
#!/usr/bin/perl
print "Content-type: text/html\n";
print "\n";
print "<HTML>\n";
print "<HEAD>\n";
print "<TITLE>CGIテスト</TITLE>\n";
print "</HEAD>\n";
print "<BODY>\n";
print "CGIのテスト\n";
print "T1 = $T1\n";
print "</BODY>\n";
print "</HTML>\n";
この状態で送信ボタンを押すと(仮にT1)
トレースを参照すると、
T1=aaaaa
となり、代入は出来ているようなのですが
cgiで内容の表示をすると
T1 =
となってしまいます。
どなたか教えてください。