重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

<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が判別されません。

どうすれば、判別してくれるのでしょうか?
ご存知の方がいらっしゃいましたら、ご教授ください

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/11/18 23:46

<form action="test.cgi" method="post">


<input type="hidden" name="ref" value="5">

の様に、hidden を使用してください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/11/18 23:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!