CGIでhtmlページを表示する
連日質問させていただいています。
CGI超初心者です。
htmlファイルにラジオボタンを設置し、
Aを選んだらhttp://www.a.html、
それ以外を選んだらhttp://www.b.html
というサイトを開くような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;
}
$q1 = $FORM{'radio'};
print "Content-Type: text/html; charset=Shift_JIS\n\n";
print "<html>\n";
print "<head></head>\n";
print "<body>\n";
if ($q1 eq "A") {
print "Location: http://www.a.html\n\n";
} else {
print "Location: http://www.b.html\n\n";
}
print "</body>\n";
print "</html>\n";
exit;
#============================================
上記のようにすると、以下のように、ただ文字が表示されてしまいます。
Location: http://www.a.html
#============================================
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;
}
$q1 = $FORM{'radio'};
print "charset=Shift_JIS\n\n";←★
print "<html>\n";
print "<head></head>\n";
print "<body>\n";
if ($q1 eq "A") {
print "Location: http://www.a.html\n\n";
} else {
print "Location: http://www.b.html\n\n";
}
print "</body>\n";
print "</html>\n";
exit;
#============================================
★部分が悪いのかなぁと思い、上記のように修正してみたり、
(Content-Type: text/html; を削除してみました)
★部分を全部削除してみると
Internal Server Error
となってしまいます。
よろしくお願いいたします!
お礼
ご回答ありがとうございます。 大変申し訳ございません、具体的にどのようにソースを書けば宜しいのでしょうか? perlの知識が余りありません。お手数をおかけし申し訳ありませんが、よろしくお願いします。
補足
ありがとうございます。解決しました。