一言メッセージ掲示板 その1
CGIへフォーム内容を渡すスクリプト その5を利用して一言メッセージの掲示板をつくってみました。
まず、ファイル名bbs01.cgiを作成し、下のソースを貼り付けてパーミションを755にします。 同じ階層に空のファイルlog.datを作成してパーミションを666にします。
サンプル
ソース
#!/usr/bin/perl
#このスクリプトの場所
$this = "./bbs01.cgi";
#ログファイルの場所
$logfile = "./log.dat";
#フォームからデータを読み込み
#読み込んだデーターを$inputに代入
$input = $ENV{ 'QUERY_STRING' };
#$inputから文字列をsplitで分解(=を削除)して$nameと$commentに代入
($name,$comment) = split /=/, $input;
#--valueデータのデコード処理
$comment =~ tr/+/ /;
$comment =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
#データファイル読み込み
open(LOG, "$logfile");
@log = <LOG>;
close(LOG);
#ログ保存数を設定
$data_max = 10;
#コメントが追加された時の処理
if ($comment){
open(LOG,">$logfile") ;
unshift (@log,"$comment\n");
#ログ保存数を設定($# は変数のインデックスの最大値を求める記述)
if ($#log > ($data_max -1)){
$#log = $data_max -1;
}
print LOG @log;
close(LOG);
}
#HTMLの表示
print <<"HTML";
Content-type: text/html
<html><head><title>一言メッセージ</title></head>
<body>
<h3>一言メッセージを書いてください。</h3>
<form action="$this"><br>
保存コメント数は $data_max です。<br>
入力 =>
<input type=text name="comment">
<input type="submit" value="送信">
<p>
HTML
#コメント部分の表示
foreach $com (@log){
print "=> $com<br/>";
}
print "</p></body></html>";
exit;
__END__
|
