• ベストアンサー

フォームのアクションから引数をとる

<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が判別されません。 どうすれば、判別してくれるのでしょうか? ご存知の方がいらっしゃいましたら、ご教授ください

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

  • ベストアンサー
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.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

if-so-at
質問者

お礼

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は使い始めたところで、いろいろ分かっていない部分がありますので、もっと勉強していきたいと思います。 今回は、ありがとうございました

その他の回答 (1)

  • zxcv0000
  • ベストアンサー率56% (111/196)
回答No.1

<form action="test.cgi" method="post"> <input type="hidden" name="ref" value="5"> の様に、hidden を使用してください。

if-so-at
質問者

お礼

なるほど、そういうやり方があるのですか・・・ 気がつきませんでした

関連するQ&A

専門家に質問してみよう