#!/web/mc/cgi-bin/perl2.0
;# WebFORM v4.0 by kaja@Tetsu. (SJIS仕様)
#------ 初期設定 ----------------------------------------------------------
#■日本語コード変換ライブラリ
require '/web/mc/cgi-bin/jcode.pl';
#■SENDMAILの設定
$sendmail = 'usr/sbin/sendmail';
#■受信先メールアドレス
$mailto = 'motorcycle@yokohama-city.com';
#■名称
$title = 'Development';
#■処理画面のボディ設定
$body = '
';
#■記入者申告メールアドレス( name="email"の時 )未入力でも送信する 1:する 0:しない
$mailcheck = 1;
#--------------------------------------------------------------------------
#時刻取得
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
if ($month < 10) { $month = "0$month"; }
if ($mday < 10) { $mday = "0$mday"; }
if ($sec < 10) { $sec = "0$sec"; }
if ($min < 10) { $min = "0$min"; }
if ($hour < 10) { $hour = "0$hour"; }
$month = ($mon + 1);
$wday = ('SUN','MON','TUE','WED','THU','FRI','SAT')[$wday];
$date_now = "$month\/$mday $wday $hour\:$min";
#タイトル欄に入力がない場合のデフォルト値
$subject = "- NO SUBJECT -";
#データ入力
if ($ENV{'REQUEST_METHOD'} ne "POST") { &error('エラー','標準入力 METHOD=POST を設定してください.
<form method=post action=........>'); }
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
if ($buffer eq '') { &error('エラー','このCGIは直接起動されません.'); }
$ref = $ENV{'HTTP_REFERER'};
$buffer2 = $ENV{'QUERY_STRING'};
if ($buffer2 ne '') { &error('エラー','標準入力 METHOD=POST に設定してください.
<form method=post action=........>'); }
#デコード
@pairs = split(/&/,$buffer);
foreach $pair (@pairs) {
($name,$value) = split(/=/,$pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
&jcode'convert(*name,'sjis'); &jcode'convert(*value,'sjis');
if ($value =~ /\r\n/) { $value =~ s/\r//g; }
elsif ($value =~ /\r/) { $value =~ s/\r/\n/g; }
if ($name eq "location") { $lct = $value; }
elsif ($name eq "c_copy" && $value eq "on") { $cc = "on"; }
elsif ($name eq "no_check" && $value eq "on") { $nocheck = "on"; }
elsif ($name eq "space_check" && $value eq "on") { $spcheck = "on"; }
elsif ($name eq "no_check") { ; }
elsif ($name eq "ref_url") { $ref_url = $value; }
elsif ($name eq "ref_name") { $ref_name = $value; }
elsif ($name eq "subject" && $value ne "") { $subject = $value; }
elsif ($name eq "subject") { ; }
elsif ($name eq "ref_page") { $ref = $value; }
elsif ($name eq "password") {
$password = $value;
push(@DATA_N,$name);
push(@DATA_V,$value);
}
else {
if ($name =~ /^email/i || $name =~ /^e\-mail/i) {
$value =~ s/ / /g;
if ($value =~ / / || $value =~ /;/) { $value = ""; }
if (!($value =~ /(.*)\@(.*)\.(.*)/)) { $value = ""; }
$email = $value;
}
push(@DATA_N,$name); push(@DATA_V,$value);
$name =~ s/\</g; $value =~ s/\</g;
$name =~ s/\>/>/g; $value =~ s/\>/>/g;
$name =~ s/\"/"/g; $value =~ s/\"/"/g;
push(@DATA_NS,$name); push(@DATA_VS,$value);
}
}
#入力チェック
if (!$mailcheck && $email eq '') { &error('Eメールを入力してください',''); }
if ($mailcheck && $email eq '') { $email = 'anonymous@on.the.net'; }
if ($spcheck eq "on") { foreach (@DATA_V) { if ($_ eq "") { &error('送信不可','受信者の意向により、全ての項目を埋めないと送信できません.'); } }}
if ($mailto eq '' || !($mailto =~ /(.*)\@(.*)\.(.*)/)) { &error('設定ミス','受信先メールアドレスが設定されていません.'); }
if ($nocheck eq "on") { &sendmail; }
#内容確認画面出力
print "Content-type: text/html\n\n";
print "
$title
$body
内容確認
修正したい場合は、ブラウザの【戻る】ボタンで戻って下さい。
\n";
print "送信先:$mailto\n";
print "\n";
exit;
sub sendmail {
if (!(open(OUT,"| $sendmail -t"))) { &error('システム異常','申し訳ありませんが何らかの原因で処理できません.'); }
print OUT "X-Mailer: WebMail v4.0 by Creative Works\n";
print OUT "X-HTTP_REFERER: $ref\n";
print OUT "Errors-To: $mailto\n";
print OUT "To: $mailto\n";
print OUT "From: $email\n";
&jis("Subject: $subject"); print OUT "$msg\n";
print OUT "Content-Transfer-Encoding: 7bit\n";
print OUT "Content-Type: text/plain\; charset=\"ISO-2022-JP\"\n\n\n";
&jis("----------------------------------------"); print OUT "$msg\n\n";
$count = @DATA_N;
foreach (0..$count-1) {
if ($DATA_V[$_] =~ /\n/) { &jis("$DATA_N[$_] =\n\n$DATA_V[$_]\n"); print OUT "$msg\n"; }
else { &jis("$DATA_N[$_] = $DATA_V[$_]"); print OUT "$msg\n"; }
}
&jis("----------------------------------------"); print OUT "\n$msg\n";
$host = $ENV{'REMOTE_HOST'};
$addr = $ENV{'REMOTE_ADDR'};
if ($host eq $addr) { $host = gethostbyaddr(pack('C4',split(/\./,$host)),2) || $addr; }
print OUT "Remote-host : $host\n";
print OUT "Remote-Addr : $ENV{'REMOTE_ADDR'}\n";
print OUT "----------------------------------------";
close(OUT);
if ($cc eq "on" && $lct ne '') {
print "Content-type: text/html\n\n";
print "
$title\n";
print "$body\n";
print "送信完了
\n";
print "ただ今$mailto宛てに送信された内容は以下の通りです.
\n";
print "内容の写しとしてお控えください.\n";
print "
\n";
print "
";
}
elsif ($cc eq "on") {
print "Content-type: text/html\n\n";
print "$title\n";
print "$body\n";
print "送信完了
\n";
print "ただ今$mailto宛てに送信された内容は以下の通りです.
\n";
print "内容の写しとしてお控えください.\n";
print "
\n";
if ($ref_url ne '' && $ref_name ne '') { &jcode'convert(*ref_name,'sjis'); print "
"; }
print "\n";
}
elsif ($lct ne '') { print "Location: $lct\n\n"; }
else {
print "Content-type: text/html\n\n";
print "$title\n";
print "$body\n";
print "送信完了
\n";
print "ご記入されたものは$mailto宛てに電子メールされました.
\n";
print "Thank you for sending comments to $mailto .\n";
if ($ref_url ne '' && $ref_name ne '') { &jcode'convert(*ref_name,'sjis'); print "
"; }
print "