CGIへフォーム内容を渡すスクリプト その3
フォームからCGIのデータ送り方、GETとPOST両方対応させます。
ファイルform03.htmlとform03.cgiを作成して下のソースをそれぞれ貼り付けます。
form03.cgiのパーミションを755に変更します。POSTで送信する場合はform03.htmlファイルのformタグのmethod=getをmethod=postに変更します。
form03.html
<html><head><title>名前の問い合わせ</title></head> <body> <h3>あなたのお名前を教えてください。 <form method=get action="form03.cgi"> 入力(ローマ字)=> <input type=text name="yourname"> <input type="submit" value="送信"> </form> </body> </html> |
ソース form03.cgi
#!/usr/bin/perl
#GETでPOSTどちらでデータが送られて来たか選別
$method = $ENV{ 'REQUEST_METHOD' };
#どちらで来たか選別後
#フォームからデータ「yourname=○○○」を読み取り、
#読み込んだデーターを$inputに代入
if( $method eq 'GET' ) {$input = $ENV{ 'QUERY_STRING' };}
else {read( STDIN,$input,$ENV{ 'CONTENT_LENGTH' } );}
#$inputから文字列をsplitで分解(=を削除)して$yournameと$nameに代入
($yourname,$name) = split /=/, $input;
#--nameデータのデコード処理
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
#htmlを表示
print "Content-type: text/html\n\n";
print "<html><body>\n";
print "こんにちは<b>${name}</b>さん\n";
print "</body></html>"
__END__
|
