GET、POSTパラメータの取得
GETパラメータとPOSTパラメータの同時取得可能。しかし同名の場合は片方が無効となる
test06a.cgi
#!"C:/Perl64/bin/perl.exe"
use strict;
use warnings;
print "Content-Type: text/html\n\n";
# タイトル
my $title = "テストタイトル";
my $data = "テスト Hello World";
print <<HTML_EOF;
<html>
<head>
<title>$title</title>
</head>
<body>
<div>
$data
</div>
<hr />
<form action="./test06b.cgi?xxx=111&yyy=222&zzz=333" method="post">
<div>
ccc=<input type="text" name="ccc" value="" /><br />
ddd=<input type="text" name="ddd" value="" /><br />
</div>
<br />
<input type="submit" value="OK" />
</form>
<hr />
</body>
</html>
HTML_EOF
HTML結果
test06b.cgi
#!"C:/Perl64/bin/perl.exe"
use strict;
use warnings;
sub get_params{
# パラメータを取得
my ($_hash) = @_;
# 取得したパラメータをハッシュ型配列へ設定
my %list;
my @params = split /&/, $_hash;
foreach my $var(@params){
# キーとデータを分割
my ($key, $value) = split(/=/, $var);
$list{$key} = $value;
}
# 返却
return %list;
}
print "Content-Type: text/html\n\n";
# GETパラメータ取得
my $_get = $ENV{'QUERY_STRING'};
# POSTパラメータ取得
my $_post = <>;
my %_list1 = get_params($_get);
my %_list2 = get_params($_post);
# タイトル
my $title = "テストタイトル";
my $data = "テスト Hello World";
print <<HTML_EOF;
<html>
<head>
<title>$title</title>
</head>
<body>
<div>
$data
</div>
<hr />
<div>
get =$_get <br />
post=$_post<br />
</div>
<hr />
HTML_EOF
print "<hr />";
while(my ($key, $value) = each(%_list1)){
print "$key=$value<br />";
}
print "<hr />";
while(my ($key, $value) = each(%_list2)){
print "$key=$value<br />";
}
print <<HTML_EOF;
</body>
</html>
HTML_EOF
HTML結果
<html>
<head>
<title>テストタイトル</title>
</head>
<body>
<div>
テスト Hello World
</div>
<hr />
<div>
get =xxx=111&yyy=222&zzz=333 <br />
post=ccc=3333333&ddd=4444444<br />
</div>
<hr />
<hr />xxx=111<br />yyy=222<br />zzz=333<br /><hr />ccc=3333333<br />ddd=4444444<br /> </body>
</html>
画面結果
test06a.cgiで開きSubmitする
test06b.cgiで確認する
最終更新:2012年01月16日 22:50