#!/usr/bin/perl require "jcode.pl"; #============================== ユーザ設定 ====#!/usr/bin/perl $CHARSET = 'Shift_JIS'; $DATAFILE = '../../message/cgi/srvbbs.dat'; $PAGEVIEW = 3; $MAXLINE = 100; $PASSWORD = 'srvazoo'; #======================== メインプログラム ==== loadFormdata(); # 記事データの読み込み open(FILE, "<$DATAFILE") or printErrorPage("記事ファイルが開けません。"); eval{ flock(FILE, 1) }; @DATA = ; close FILE; if(exists $FORM{'mode'}) { if($FORM{'mode'} eq 'write') { writeArticle(); # 書き込みモード } else { deleteArticle(); # 削除モード } # 記事データの書き込み open(FILE, ">$DATAFILE") or printErrorPage("記事ファイルが開けません。"); eval{ flock(FILE, 2) }; print FILE @DATA; close FILE; } printPage(); exit; #======================== 記事ページの出力 ==== sub printPage { my $begin = $FORM{'page'} * $PAGEVIEW; my $end = $begin + $PAGEVIEW; if($end > @DATA) { $end = @DATA; } print < 創価ルネサンスバンガードメッセージボード ver.2.0

SRV
メッセージボード

掠mode

投稿画面


END my $page_hyouji = $FORM{'page'} + 1; my ($i, $nextpage); # 記事の出力 for($i = $begin ; $i < $end ; ++$i) { my $messcount = @DATA - $i; my ($date, $title, $author, $email, $text, $ans) = split(/\t/, $DATA[$i]); print qq(\n); print qq($title
\n); if($email) { print qq(投稿者:$author \n); } else { print qq(投稿者:$author \n); } print qq(投稿日:$date \n); printf qq(削除:
\n), $i; print qq(\n); print qq(\n); print qq(\n); print qq(
\n); print qq($text \n); print qq(
\n); print qq($ans \n); print qq(

\n); } #前のページへのリンク $prepage = $FORM{'page'} - 1; if ($prepage < 0){ print qq(

); } else{ print qq(

前のページへ  ); } # 次ページへのリンク if($end < @DATA) { $nextpage = $FORM{'page'} + 1; print qq(次のページへ

\n); } else{ print qq(

); } print < END } #========================== 記事を書き込む ==== sub writeArticle { } #========================== 記事を削除する ==== sub deleteArticle { my $key; if($FORM{'pass'} ne $PASSWORD) { printErrorPage("管理パスワードが違います。"); } foreach $key (sort {$b cmp $a} keys %FORM) { if($key =~ /del_([0-9]+)/) { splice @DATA, $1, 1; } } } #======================== エラーページ出力 ==== sub printErrorPage { print qq(Content-type: text/html; charset=$CHARSET\n\n); print qq(\n); print qq(\n); print qq(けいじばん\n); print qq(

エラー

$_[0]

\n); print qq(\n); exit; } #================== フォームデータ取り込み ==== sub loadFormdata { my ($query, $pair); if($ENV{'REQUEST_METHOD'} eq 'POST') { read(STDIN, $query, $ENV{'CONTENT_LENGTH'}); } else { $query = $ENV{'QUERY_STRING'}; } foreach $pair (split(/&/, $query)) { my ($key, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([0-9a-fA-F][0-9a-fA-F])/chr(hex($1))/eg; $value = jcode::sjis($value); $value =~ s/&/&/g; $value =~ s//>/g; $value =~ s/\x0D\x0A/
/g; $value =~ tr/\t/ /; $FORM{$key} = $value; } }