#!/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
投稿画面
);
}
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/>/>/g;
$value =~ s/\x0D\x0A/
/g;
$value =~ tr/\t/ /;
$FORM{$key} = $value;
}
}