携帯サイト構築・奮闘記

Perl&HTML:複数のsubmitボタンを判断する

メモ:
HTMLに複数のボタンを配置し、どのボタンが押されたかをPerlで判断する。

<起動側CGI(test1.cgi)>
#!c:¥perl¥bin¥perl
# CGI submit テスト

print <<"EOL";
Content-type: text/html; charset=iso-2022-jp

<html>
<head><title>TEST1</title></head>
<body>
<form action="test2.cgi" method=post>
<input type=submit name="ok" value="OK">
<input type=submit name="back" value="戻る">
</form>
</body></html>
EOL
exit 0;

<起動されるCGI(test2.cgi)>
#!c:¥perl¥bin¥perl
# CGI submit テスト(2)
&GetCgiParams; # CGIデータ取得
$back = $param{‘back’};
$ok = $param{‘ok’};
print <<"EOL";
Content-type: text/html; charset=iso-2022-jp

<html>
<head><title>test2</title></head>
<body>
ok=($ok)<br>
back=($back)<br>
</body></html>
EOL

exit 0;

sub GetCgiParams{
if ($ENV{"REQUEST_METHOD"} eq "POST"){
read(STDIN, $buffer, $ENV{"CONTENT_LENGTH"});
} else {
$buffer = $ENV{"QUERY_STRING"};
}
# デコード
$buffer =~ tr/+/ /;
$bufferMoto = $buffer; # 元を控える
$buffer =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
# フォーム入力データの取り出し
@pairs = split(/&/,$buffer);
foreach(@pairs){
my ($key, $value) = split(/=/, $_);
$value =~ s/[¥n¥r]//g; # 改行コードの削除
$value =~ s/[<>]//g; # HTMLコードの無効化
$value =~ s/ //g; # スペースの削除
$param{$key} = $value; # CGIデータを連想配列に追加
}
return 0;
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください