#!/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"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; $FIELD{'comment'} =~ s/\r/
/g; $FIELD{'comment'} =~ s/ / /g; print "\n"; print "
$FIELD{'name'}$DOWN[$FIELD{'down'}]"; if ($FIELD{'sex'}) { print "女性"; } else { print "男性"; } print ""; if ($FIELD{'email'} =~ /[\w-]+\@[\w\.\-]*/) { print "$FIELD{'email'}"; } print "", jst_time($FIELD{'date'}), "
$FIELD{'comment'}
\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"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "
性別"; if ($sex) { print "男性\n"; print "女性\n"; } else { print "男性\n"; print "女性\n"; } print "
$DOWN[0]
氏名\n"; print " パスワード
\n"; print "変更訂正や、削除時にはパスワードが必要です。
E-Mail\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"; print "\n"; print "\n"; print "
\n"; print "\n"; print "\n"; print "
\n"; } #======================================================================================= sub boxbottom { print "
\n"; print "
\n"; } #======================================================================================= sub pagetop { html_head($bg, $text, $link, $vlink, $alink, $bgimg, 10, 10, $title, $fontsize); print "
\n"; print "\n"; print "
\n"; if ($titleimg) { print "\n"; } else { print $title; } print ""; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "
\n"; print "\n"; } #======================================================================================= sub pageend { print "Standard BBS Copyrite(C) Terra\n"; print "
\n"; print "
\n"; exit; } #======================================================================================= sub errmsg { my($msg) = @_; &pagetop(); &boxtop(600); print "
\n"; print "$msg
\n"; &boxbottom(); &pageend(); } #=======================================================================================