|
#!/usr/local/bin/perl
use strict;
use CGI;
use Jcode;
# CGIモジュールを誕生させる
my $query = new CGI;
# クッキーの状態を見て、正解者か判定する
my $seikai = $query->cookie(-name=>'panda_quiz'); #…(1)
if ($seikai ne 'seikai'){
fuseikai_error_page();
exit;
}
# フォームからのデーターを取り出す
my $name = $query->param('name');
my $address = $query->param('address');
my $age = $query->param('age');
my $email = $query->param('email');
# EUC文字コードに統一する
$name = new Jcode($name)->euc;
$address = new Jcode($address)->euc;
# エラーメッセージをセットする配列
my @message;
# 名前のチェック
unless ($name){
push(@message, '名前が未入力です。'); #…(2)
}
# 住所のチェック
unless ($address){
push(@message, '住所が未入力です。');
}
# 年齢のチェック
if ($age){
if ($age =~ /\D/){ #…(3)
push(@message, '年齢は半角数字で入力してください。');
}
}
else{
push(@message, '年齢が未入力です。');
}
# メールアドレスのチェック
if ($email){
if ($email =~ /[^0-9a-zA-Z@._\-]/){ #…(4)
push(@message, '年齢は半角英数字と記号(@._-)で入力してください。');
}
}
else{
push(@message, 'メールアドレスが未入力です。');
}
# エラーがあればエラーページを返し、終了
if (@message > 0){ #…(5)
input_error_page(@message);
exit;
}
# 応募データーを保存
if (open (FILE, ">>oubo.txt")){
my $ouboData;
$ouboData = join(',', $name, $address, $age, $email);
print FILE "$ouboData\n";
close FILE;
}
else {
die ("オープンエラー");
}
# Webページを返す
print "Content-Type: text/html\n\n";
print <<"END_HTML";
<html>
<head>
<title>パンダクイズ</title>
</head>
<body bgcolor="#FFFFFF">
<table border="0" cellpadding="10"
cellspacing="0">
<tr>
<td><img src="img/panda2.gif" width="111"
height="150"></td>
<td>$nameさん、ご応募ありがとうございました。</td>
</tr>
</table>
</body>
</html>
END_HTML
#--------------------------------------------------
# 正解者でないページを返す
#--------------------------------------------------
sub fuseikai_error_page {
print "Content-Type: text/html\n\n";
print "<html>\n";
print "<head>\n";
print "<title>パンダクイズ エラー</title>\n";
print "</head>\n";
print "<body bgcolor=\"#FFFFFF\">\n";
print "あなたは正解していません。<br>\n";
print "</body>\n";
print "</html>\n"
}
#--------------------------------------------------
# エラーページを返す
#--------------------------------------------------
sub input_error_page {
my @message = @_; #…(6)
my $text;
print "Content-Type: text/html\n\n";
print "<html>\n";
print "<head>\n";
print "<title>パンダクイズ エラー</title>\n";
print "</head>\n";
print "<body bgcolor=\"#FFFFFF\">\n";
print "<h2>入力エラー</h2>\n";
print "ブラウザの戻るボタンで戻って正しく入力してください。<br>\n";
foreach $text (@message){
print "$text<br>\n";
}
print "</body>\n";
print "</html>\n"
}
|