CGIへフォーム内容を渡すスクリプト その4
一つのCGIファイルにHTMLフォーム部分を記述します。
form04.cgiを作成して下のソースをそれぞれ貼り付けます。
form04.cgiのパーミションを755に変更します。ソース form04.cgi
#!/usr/bin/perl
&decode;
#表示部分の振り分けサブルーチン
if ($mode eq 'regist') { ®ist; }
&html;
#htmlを表示
sub html {
print <<"HTML";
Content-type: text/html
<html><head><title>名前の問い合わせ</title></head>
<body>
<h3>あなたのお名前を教えてください。
<form method=post action="form04.cgi">
<input type=hidden name=mode value="regist">
入力(ローマ字)=>
<input type=text name="name">
<input type="submit" value="送信">
</form></body></html>
HTML
exit;
}
sub regist{
print <<"HTML";
Content-type: text/html
<html><body>
こんにちは<b>${name}</b>さん<br>
</body></html>
HTML
exit;
}
sub decode {
#フォームからデータ「yourname=○○○」、「mode=regist」を読み取り、
#読み込んだデーターを$inputに代入
read STDIN,$input,$ENV{'CONTENT_LENGTH'};
@pairs = split(/&/,$input);
foreach $pair (@pairs) {
($list, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FORM{$list} = $value;
}
$name = $FORM{'name'};
$mode = $FORM{'mode'};
}
__END__
|
