#!/usr/local/bin/perl
# ↑あなたが加入しているプロバイダの「perl」言語が使用できる
# パスを指定します。一般的に「#!/usr/local/bin/perl」で大丈夫
#=======================================================================================
# bbs Version 2004.6
#=======================================================================================
#日本語コード変換モジュール
require '../cgi-lib/jcode.pl';
require '../cgi-lib/perl-lib.pl';
#掲示板のタイトルとタイトル画像
$title = 'TryTheHomePage なんでも掲示板';
$titleimg = '../download/bbs/bbs.gif';
#---------------------------------------
#あなたのホームページのアドレス
$homepage = 'http://www.tryhp.net/';
#---------------------------------------
#メッセージを格納するデータベースファイル
#個人情報をまもるため必ず変更する事
$datafile = '../download/bbs/bbs.txt';
#---------------------------------------
#掲示板用画像が格納されているパス
$imgdir = '../download/frame/fire/';
#---------------------------------------
#バックグランドの画像ファイル
$bgimg = '';
#---------------------------------------
#管理者削除モードのパスワード
$password = 'abc123';
#---------------------------------------
#バックグランドカラー
$bg = '#300030';
#テキストの文字色
$text = '#FFFFFF';
#リンク文字色
$link = '#FFFF00';
#Vリンク文字色
$vlink = '#FFEE00';
#Aリンク文字色
$alink = '#FFEEDD';
#フォントサイズ
$fontsize = 11;
#---------------------------------------
#テーブルの幅
$tablewidth = 800;
#テーブル内の背景色
$tablebg = '#EAEAEA';
#テーブル内文字色
$tabletext = '#000000';
#---------------------------------------
#コメント最大記憶数(極端に多くするとパフォーマンスが低下します)
$max = 100;
#---------------------------------------
#1ページに表示する件数
$pagevew = 10;
#---------------------------------------
#クッキーを格納する名前を設定する
$cookiename = 'bbs';
#---------------------------------------
#時差
$timelag = 0;
#---------------------------------------
#ドロップダウン選択肢
$DOWN[0] = '年齢';
$DOWN[1] = '中学生以下';
$DOWN[2] = '高校生';
$DOWN[3] = '19才以下';
$DOWN[4] = '20代';
$DOWN[5] = '30代';
$DOWN[6] = '40代';
$DOWN[7] = '50代';
$DOWN[8] = '60代';
$DOWN[9] = '70歳以上';
#=======================================================================================
# 初期設定が必要なのはここまでです。
#=======================================================================================
$ENV{'TZ'} = "GMT";
$DATE = time + $timelag * 3600;
$DATENOW = jst_time($DATE, 5);
readparts('QUERY', '<>=', 'sjis');
@DATA = data_read($datafile);
%COOKIE = cookie_read($cookiename);
if ($QUERY{'find'}) { $QUERY{'action'} = ''; }
if ($QUERY{'action'} eq 'new') {
&pagetop();
$name = $COOKIE{'name'};
$pass = $COOKIE{'pass'};
&boxtop(600);
&editform(0);
&boxbottom();
pageend();
} elsif ($QUERY{'action'} eq 'regist') {
if (!$QUERY{'delete'}) {
!$QUERY{'name'} && &errmsg('お名前は必須です。');
!$QUERY{'comment'} && &errmsg('何かメッセージをお願いします。');
}
if ($QUERY{'editcode'}) {
$i = 0;
foreach $line (@DATA) {
%FIELD = fields($line);
if ($FIELD{'code'} == $QUERY{'editcode'}) {
if ($FIELD{'pw'} eq $QUERY{'pass'} || $password eq $QUERY{'pw'}) {
if ($QUERY{'delete'}) {
splice(@DATA, $i, 1);
} else {
$line = join("\t",
"code=$FIELD{'code'}",
"date=$FIELD{'date'}",
"sex=$QUERY{'sex'}",
"down=$QUERY{'down'}",
"name=$QUERY{'name'}",
"pass=$QUERY{'pass'}",
"email=$QUERY{'email'}",
"comment=$QUERY{'comment'}",
"\n"
);
}
}
last;
}
$i++;
}
} else {
$count = @DATA;
if ($count < 1) {
$newcode = 1;
} else {
%FIELD = fields($DATA[0]);
$newcode = $FIELD{'code'} + 1;
}
$value = join("\t",
"code=$newcode",
"date=$DATE",
"sex=$QUERY{'sex'}",
"down=$QUERY{'down'}",
"name=$QUERY{'name'}",
"pass=$QUERY{'pass'}",
"email=$QUERY{'email'}",
"comment=$QUERY{'comment'}",
"\n"
);
unshift(@DATA, $value);
}
%COOKIE = cookie_regist($cookiename, "name=$QUERY{'name'},pass=$QUERY{'pass'}", 30);
data_save($datafile, @DATA) && &errmsg('データの保存に失敗しました');
} elsif ($QUERY{'action'} eq 'edit') {
@DUMMY = grep(/^code=$QUERY{'code'}\t/, @DATA);
if (@DUMMY) {
%FIELD = fields($DUMMY[0]);
if (($FIELD{'pass'} && $QUERY{'pass'} eq $FIELD{'pass'}) || $password eq $QUERY{'pw'}) {
$sex = $FIELD{'sex'};
$down = $FIELD{'down'};
$name = $FIELD{'name'};
$pass = $FIELD{'pass'};
$comment = $FIELD{'comment'};
&pagetop();
&boxtop(600);
&editform($FIELD{'code'});
&boxbottom();
&pageend();
} else {
&errmsg("パスワードが一致しません。変更訂正は行えません。");
}
} else {
&errmsg("変更訂正するコード($QUERY{'code'})が見つかりません。");
}
}
if ($QUERY{'finddown'}) {
@MATCH = grep(/\tdown=$QUERY{'finddown'}\t/, @DATA);
} else { @MATCH = @DATA; }
if ($QUERY{'pline'} eq '') { $pline = 0; } else { $pline = $QUERY{'pline'}; }
$end_data = @MATCH - 1;
$page_end = $pline + 9;
if ($page_end >= $end_data) { $page_end = $end_data; }
if (@MATCH) {
&pagetop();
print "\n";
$i = 1;
foreach ($pline .. $page_end) {
if ($i != 1) { print "
\n"; }
%FIELD = fields($MATCH[$_]);
&boxtop($tablewidth);
print "
\n";
&boxbottom();
$i++;
}
$next_line = $page_end + 1;
if ($page_end != $end_data) {
print "
|
\n";
print "\n";
print "";
print " |
\n";
}
print "\n";
print "
\n";
&pageend();
} else {
&errmsg('現在記事は投稿されていません。');
}
#=======================================================================================
sub editform {
my($editcode) = @_;
my($year, $month, $day) = split(/\//, $birthday);
print "\n";
print "\n";
print "\n";
print "\n";
if ($editcode) {
print "\n";
}
}
#=======================================================================================
sub boxtop {
my($width) = @_;
print "\n";
print " | \n";
print " | \n";
print " |
\n";
print " | \n";
print "\n";
print "\n";
print "\n";
}
#=======================================================================================
sub boxbottom {
print " | \n";
print " \n";
print " | \n";
print " | \n";
print " | \n";
print " | \n";
print " |
\n";
print "
\n";
}
#=======================================================================================
sub pagetop {
html_head($bg, $text, $link, $vlink, $alink, $bgimg, 10, 10, $title, $fontsize);
print "\n";
exit;
}
#=======================================================================================
sub errmsg {
my($msg) = @_;
&pagetop();
&boxtop(600);
print "\n";
&boxbottom();
&pageend();
}
#=======================================================================================