Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
  • ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CGIでテキストボックスの内容によって条件分岐)

CGIでテキストボックスの内容によって条件分岐

このQ&Aのポイント
  • CGI超初心者です。htmlファイルに設置したテキストボックスの値によってCGIで表示させる内容を変えたいです。
  • テキストボックスに、50以上の数字を入力しても、50以下の数字を入力してもどちらも「変数hの内容は50より小さいです。」と表示されてしまいます。
  • CGIは使わない方向で検討中ですが、途中まで足をつっこんでしまい、気になったので質問させていただきました。

質問者が選んだベストアンサー

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5417/14099)
回答No.1

書かれているプログラムだと $FORM の中身は空っぽです。 まずはフォームから送られてきたデータを変数に入れましょう。 下記のようなプログラムで変数に入れることができます。 if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $str, $ENV{'CONTENT_LENGTH'}); } else { $str = $ENV{'QUERY_STRING'}; } foreach $i (split('&', $str)) { $i =~ tr/+/ /; $i =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg; ($t1, $t2) = split('=', $i); $FORM{"$t1"} = $t2; }

masunona
質問者

お礼

ありがとうございます! いただいたコードをそのまま貼り付けたら正常に動作するようになりました! 今後もっと勉強します。 大変助かりました! ありがとうございました!

すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.2

CGIでPOSTのデータを受け取るには、 read(STDIN, $data, $ENV{'CONTENT_LENGTH'}); のように受け取る必要があります。 この形で受け取ると、 $data の中に hen=20&submit=%91%97%82%e8 というようなデータが格納されますので、 この文字列を分割して、変数に分けて・・・ (詳しいコードは参考URLを参照ください!) という形で利用できるようになると思います。 PHPでは $_POST['hen'] の形で受け取ることができますが、 CGIではひと手間必要な形ですね。

参考URL:
http://www.aimix.jp/cgi/syohofrmgetvw.html
masunona
質問者

お礼

ありがとうございます! >PHPでは $_POST['hen'] の形で受け取ることができますが、 >CGIではひと手間必要な形ですね。 私が参考にしていたものが、PHPとCGIでまざっていたんですね・・・。 勉強になりました! ありがとうございました!

すると、全ての回答が全文表示されます。

関連するQ&A