- ベストアンサー
フォームのアクションから引数をとる
<form action="test.cgi?ref=5" method="post"> このような感じで、引数を送ります。 my $cgi = CGI::new(); my $ref = $cgi->param('ref'); if ($ref eq 0){ (省略) }elsif ($ref eq 5){ こんな感じでプログラムを書きました。 アドレスを見ても、ちゃんとref=5となっていますし、 普通に<a href="test.cgi?ref=1">などのリンクから飛べば、指定したifの処理に入ります。 しかし、 <form action="test.cgi?ref=5" method="post"> 上のフォームのsubmitから送ると、ref=5のifが判別されません。 どうすれば、判別してくれるのでしょうか? ご存知の方がいらっしゃいましたら、ご教授ください
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
GETとPOSTの違いを理解されているとして。 ★ もちろん、hiddenで渡せば済むという話ではないですよね。 CGI::new()では、POSTで要求された場合のQUERY_STRINGSは無視されるはず。マニュアルをチェックすること そこで、 cgi.params.merge!(CGI::parse(cgi.query_string)){|key, self_val, other_val| self_val } name = cgi.params['name'] などを一行追加すればよい。それともCGI::newを使わない。 たとえば、こんなふうに http://hpcgi1.nifty.com.local/ENV_FORM.cgi?ref=5
その他の回答 (1)
- zxcv0000
- ベストアンサー率56% (111/196)
<form action="test.cgi" method="post"> <input type="hidden" name="ref" value="5"> の様に、hidden を使用してください。
お礼
なるほど、そういうやり方があるのですか・・・ 気がつきませんでした
お礼
http://hpcgi1.nifty.com.local/ENV_FORM.cgi?ref=5 のやり方がよく分からなかったので、とりあえず、 cgi.params.merge!(CGI::parse(cgi.query_string)){|key, self_val, other_val| self_val } name = cgi.params['name'] を使用させていただきます。 まだ、CGIは使い始めたところで、いろいろ分かっていない部分がありますので、もっと勉強していきたいと思います。 今回は、ありがとうございました