ひとつのCGIファイルに複数のページの動作を管理
CGI超初心者です。
HTMLファイルにいくつかラジオボタンを設置し、
これとこれを選んだらこのページを開く、
次のページで、
これとこれを選んだらこのページを開く・・・
というような構成でサイトを作っています。
CGIで条件分岐させていますが
書き方が良く分からないので教えてください。
第一ページ用の条件分岐CGIの下に、第二ページ用の条件分岐CGIを書きましたが
うまく動いてくれません。
どちらかを削除するとうまく動きます。
ひとつのCGIファイルに、
複数のページの条件分岐をまとめて書くことは出来ないのでしょうか?
ページごとに別々のCGIファイルを作成しなければならないですか?
以下具体例です。
---第一ページ.html---
<form name="q1" action="test.cgi" method="POST" >
・・・
<input type="submit" value="送信する" />
</form>
---第二ページ.html---
<form name="q2" action="test.cgi" method="POST" >
・・・
<input type="submit" value="送信する" />
</form>
---CGI---
#====================下準備======================
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;
}
#===================変数の設定===================
$q11 = $FORM{'q11'};
$q12 = $FORM{'q12'};
#=================条件分岐_質問1=================
if ($q11 eq "q11_a") {
print "Location: ./ba1.html\n\n";
}
elsif ($q11 eq "q11_c") {
print "Location: ./ba2.html\n\n";
}
・
・
・
else {
print "Location: ./go2.html\n\n";
}
#===================変数の設定===================
$q21 = $FORM{'q21'};
$q22 = $FORM{'q22'};
#=================条件分岐_質問2==================
if ($q21 eq "q21_a") {
print "Location: ./co3.html\n\n";
}
elsif ($q22 eq "q22_a") {
print "Location: ./ba4.html\n\n";
}
・
・
・
else {
print "Location: ./go3.html\n\n";
}
お礼
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は使い始めたところで、いろいろ分かっていない部分がありますので、もっと勉強していきたいと思います。 今回は、ありがとうございました