#!/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 "
\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "
$FIELD{'subject'}$FIELD{'name'}"; $FIELD{'email'} && print "$FIELD{'email'}"; print "$FIELD{'date'}
\n"; print "
\n"; print "
\n"; #自動改行 $FIELD{'comment'} =~ s/\r/
/g; print "$FIELD{'comment'}\n"; print "
\n"; print "
\n"; #最後に表示したデータがデータの最後でなければ #[次のページ]ボタンを表示する if ($end != $last) { $next = $end + 1; print "\n"; } } print "\n"; exit; sub form { print "
\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "
お名前
メールアドレス
件名
コメント
\n"; print "\n"; print "
\n"; }