一言メッセージ掲示板 その4
上のスプリクトに暗号化パスワード削除機能をつけました。
まず、ファイル名bbs01.cgiを作成し、下のソースを貼り付けてパーミションを755にします。 同じ階層に空のファイルlog.datを作成してパーミションを666にします。サンプル
ソース bbs04.cgi
#!/usr/bin/perl
#
#初期設定項目
#最大ログ保存数
$data_max = 50;
#このスクリプトの場所
$this = "./bbs04.cgi";
#ログファイルの場所
$logfile = "./log.dat";
#1ページのコメント表示数
$comsize = 10;
#メイン処理
&decode;
if ($mode eq 'regist'){ ®ist; }
elsif ($mode eq 'delete'){ &delete; }
&html;
#html表示
sub html{
#ログファイル読み込み
open(IN,"$logfile");
@log = <IN>;
close(IN);
print <<"HTML";
Content-type: text/html
<html><head><title>一言メッセージ</title></head>
<body>
<h3>一言メッセージを書いてください。</h3>
<form method="POST" action="$this">
<input type=hidden name=mode value="regist"><br>
入力 =>
<input type=text name="comment"><br>
パスワード<input type="password" name="password" size=10"><br>
<input type="submit" value="送信"></form><p>
HTML
#コメント部分の表示
$start = $page +1;
$end = $page + $comsize;
$i= 0;
foreach $in (@log){
$i++;
if ($i < $start){ next;}
elsif ($i > $end ){ next;}
($num,$comment,$password,$jptime) = split(/ /,$in);
print "$num> $comment<br>";
}
&next;
print <<"END";
$next $back $rest
$total
<br>
<form method="POST" action="$this">
<input type=hidden name=page value=$page><br>
<input type=hidden name=mode value=delete><br>
パスワード<input type="password" name=password size=10"><br>
削除番号<input type=text name=no size=4><br>
<input type=submit value=削除></form>
</p></body></html>
END
exit;
}
#デコード処理
sub decode{
$method = $ENV{ 'REQUEST_METHOD' };
if( $method eq 'GET' ) {
$input = $ENV{ 'QUERY_STRING' };
}
else {
read( STDIN,$input,$ENV{ 'CONTENT_LENGTH' } );
}
@in = split(/&/,$input);
foreach (@in) {
($list, $value) = split(/=/);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
$form{$list} = $value;
}
$mode = $form{'mode'};
$comment = $form{'comment'};
$no = $form{'no'};
$page = $form{'page'};
$password = $form{'password'};
}
#ログファイルに書き込み
sub regist{
if ($comment eq '' || $password eq ''){
&error('エラー','コメントとパスワードを記入してください。')
}
#現在時間所得
&time;
open(IN,"$logfile");
@log = <IN>;
close(IN);
$top = $log[0];
($top_no,$top_comment,$top_password,$top_jptime)
|
