#!/usr/local/bin/perl #================# # 設定変数の定義 # # スクリプト名 $mycgi = 'linebbs1.cgi'; # ログファイル名 $logfile = 'linebbs1.log'; # ログの保存行数 $maxlog = 50; #====================# # 入力内容のデコード # if($ENV{'REQUEST_METHOD'} eq "POST"){ read(STDIN,$in,$ENV{'CONTENT_LENGTH'}); }else{ $in = $ENV{'QUERY_STRING'}; } @in = split/&/,$in; foreach(@in){ ($key,$val) = split/=/; $val =~ tr/+/ /; $val =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C",hex($1))/eg; $val =~ s/\r//g; $val =~ s/\n//g; $val =~ s//>/g; $in{$key} = $val; } #==========# # 発言処理 # # 名前と本文が入力されていたら書き込み if($in{'name'} and $in{'body'}){ # 追加するログデータの作成 $newlog = "
$in{'name'} > $in{'body'}\n"; # ログファイル読込 open FILE,$logfile; @log = ; close FILE; # 先頭に新規ログデータを追加 unshift @log,$newlog; # 保存行数を超える分末尾を削除 while(@log > $maxlog){ pop @log; } # 更新されたデータでログファイルに上書き open FILE,">$logfile"; print FILE @log; close FILE; } #==========# # 出力処理 # # ログファイル読込 open FILE,$logfile; @log = ; close FILE; # 出力 print <<"EOT"; Content-Type: text/html; 一行掲示板
お名前
本文
@log EOT exit;