#!/usr/local/bin/perl
#日本語コード変換モジュール
require '../cgi-lib/jcode.pl';
require '../cgi-lib/perl-lib.pl';
#---------------------------------------
#メッセージを格納するデータファイル
$datafile = 'startbbs.txt';
#---------------------------------------
#バックグランドの画像ファイル
$bgimg = '';
#---------------------------------------
#バックグランドカラー
$bg = '#300030';
#テキストの文字色
$text = '#FFFFFF';
#リンク文字色
$link = '#FFFF00';
#Vリンク文字色
$vlink = '#FFEE00';
#Aリンク文字色
$alink = '#FFEEDD';
#フォントサイズ
$fontsize = 11;
#---------------------------------------
#コメント最大記憶数
$max = 100;
#---------------------------------------
#1ページに表示する件数
$pageview = 10;
#---------------------------------------
#時差
$timelag = 0;
#===============================================================
# 初期設定が必要なのはここまでです。
#===============================================================
#サーバから日付と時刻を取得する
$ENV{'TZ'} = "GMT";
$DATE = time + $timelag * 3600;
$datenow = jst_time($DATE, 5);
#CGIが呼び出された時の条件やデータを取得
readparts('QUERY', '<>=', 'sjis');
#データファイルの記事を取得
@DATA = data_read($datafile);
#呼び出し条件による分岐
if ($QUERY{'action'} eq 'regist') {
#フォームの[書き込み]ボタンが押されれば
#現在までの記事の数を数える
$count = @DATA;
#最大記録数より多くなれば古い記事を削除
if ($max <= $count) { pop(@DATA); }
#新しい記事のコード番号を生成
if ($count) {
#最後に投稿された記事のコードに1プラスする
%FIELD = fields($DATA[0]);
$newcode = $FIELD{'code'} + 1;
} else {
#記事が1件もなければ最初のコードは1
$newcode = 1;
}
#記録するデータのフォーマットを整える
$value = join("\t",
"code=$newcode",
"date=$datenow",
"name=$QUERY{'name'}",
"email=$QUERY{'email'}",
"subject=$QUERY{'subject'}",
"comment=$QUERY{'comment'}",
"\n"
);
#すべての記事の先頭に追加
unshift(@DATA, $value);
#サーバに保存
data_save($datafile, @DATA);
}
#HTMLのヘッダーを宣言
html_head($bg, $text, $link, $vlink, $alink, $bgimg, 10, 10, '', $fontsize);
#タイトル画像を表示
print "
\n";
#フォームを呼び出す
&form();
#表示を開始する番号と終了番号を計算
#[次のページ]が押されれば開始の番号を
#前のページに表示した次から開始
if ($QUERY{'next'}) { $start = $QUERY{'next'}; }
$last = @DATA - 1;
$end = $start + $pageview - 1;
#表示件数よりデータが少なければ最後のデータ
if ($end > $last) { $end = $last; }
foreach ($start .. $end) {
%FIELD = fields($DATA[$_]);
print "
\n";
print "\n";
print "\n";
print " $FIELD{'subject'} | \n";
print "$FIELD{'name'} | \n";
print "";
$FIELD{'email'} && print "$FIELD{'email'}";
print " | \n";
print "$FIELD{'date'} | \n";
print " \n";
print " \n";
print " |
\n";
print "\n";
print "\n";
#自動改行
$FIELD{'comment'} =~ s/\r/ /g;
print "$FIELD{'comment'}\n";
print " \n";
print " |
\n";
print "
\n";
#最後に表示したデータがデータの最後でなければ
#[次のページ]ボタンを表示する
if ($end != $last) {
$next = $end + 1;
print "\n";
}
}
print "