#!/usr/bin/perl # # #初期設定項目 # #文字コードライブラリー require './jcode.pl'; #最大ログ保存数 $data_max = 50; #このスクリプトの場所 $this = "./onebbs3.cgi"; #ログファイルの場所 $logfile = "./b2.dat"; #1ページのコメント表示数 $comsize = 10; #メイン処理 &decode; if ($mode eq 'regist'){ ®ist; } elsif ($mode eq 'delete'){ &delete } &html; #html表示 sub html{ #ログファイル読み込み open(IN,"$logfile"); @log = ; close(IN); print <<"HTML"; Content-type: text/html 一言メッセージ

一言メッセージを書いてください。


入力 =>

HTML #コメント部分の表示 $start = $page +1; $end = $page + $comsize; $i= 0; foreach $in (@log){ $i++; if ($i < $start){ next;} elsif ($i > $end ){ next;} $in =~ s/\n//; ($num,$comment) = split(/\t/,$in); print "$num> $comment
"; } &next; print <<"END"; $next$back$rest



削除番号
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; &jcode'convert(*value, 'sjis'); $form{$list} = $value; } $mode = $form{'mode'}; $comment = &tag($form{'comment'}); $no = $form{'no'}; $page = $form{'page'}; } #ログファイルに書き込み sub regist{ open(IN,"$logfile"); @log = ; $no = $log[0] + 1 ; $newdata = "$no\t$comment\n"; close(IN); open(OUT,">$logfile"); unshift (@log,"$newdata"); #ログ保存数を設定($# は変数のインデックスの最大値を求める記述) if ($#log > ($data_max -1)){ $#log = $data_max -1;} print OUT @log; close(OUT); } #ログファイルから削除 sub delete{ open(IN,"$logfile"); foreach () { ($no,$comment) = split(/\t/); #削除ナンバー以外は保存 if (!($form{'no'} == $no)){ push(@log,$_); } } close(IN); open(OUT,">$logfile"); print OUT @log; close(OUT); } sub next { $next_page = $page + $comsize; $back_page = $page - $comsize; $page_total = int( ($#log ) / $comsize )+1; $page_rest = ($page / $comsize)+1; if ($back_page >= 0){ $next = "前のページ\n"; } if ($next_page < $i){ $back = "次のページ\n"; } $rest = "$page_rest/$page_total\n"; } #タグの禁止と改行の変更サブルーチン sub tag { $_[0] =~ s/&/&/g; $_[0] =~ s/"/"/g; $_[0] =~ s//>/g; $_[0] =~ s/\r\n/
/g; $_[0] =~ s/\r/
/g; $_[0] =~ s/\n/
/g; return $_[0]; } __END__