#!/usr/local/bin/perl
# 自分自身のファイル名を取得
$script_name = $ENV{SCRIPT_NAME};
$script_name =~ s|.*/([^/]+)$|$1|;
# データファイル名
$data_file = $script_name;
$data_file =~ s/\.cgi$/.dat/;
# jcode.pl をロード
require 'jcode.pl';
# 標準入力からデータを読み込む
read(STDIN,$buf,$ENV{CONTENT_LENGTH});
# 引数解析
foreach ( split('&',$buf) ){
($key,$value) = split('=',$_);
$value =~ tr/+/ /;
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C",hex($1))/eg;
&jcode::convert(\$value,'euc');
$value =~ s/&/&/g;
$value =~ s/</g;
$value =~ s/>/>/g;
$value =~ s/\r\n|\r|\n/
/g;
if ( $key eq 'FROM' ){
$from = $value;
} elsif ( $key eq 'MESSAGE' ){
$message = $value;
}
}
print "Content-type: text/html\n\n";
print <
掲示板
掲示板
END
# 発言ならデータファイルに追加
if ( $from ne '' && $message ne '' ){
($sec,$min,$hour,$day,$mon,$year) = localtime(time());
$year += 1900;
$mon++;
$now_date = sprintf("%d/%02d/%02d %02d:%02d:%02d",
$year,$mon,$day,$hour,$min,$sec);
if ( $ENV{REMOTE_HOST} =~ m/^[\d\.]+$/ ){
$host = $ENV{REMOTE_HOST};
} else {
$host = gethostbyaddr(pack('C4',split(/\./,$ENV{REMOTE_ADDR})),2)
|| $ENV{REMOTE_ADDR};
}
open(IN,"$data_file");
@buf = ;
close(IN);
open(OUT,"> $data_file");
print OUT "発言者: $from
\n";
print OUT "$now_date $host
\n";
print OUT "$message
\n";
print OUT @buf;
close(OUT);
}
# データファイル内容を表示
open(IN,"$data_file");
print ;
close(IN);
print <
END