99章.お役立ちperlプログラム

99.11.投票掲示板(Vote)

いわゆる掲示板ですが,タイトルをカテゴリとして単一スレッドで表示するスクリプトです。


デモ

稼働中のものなので,見るだけならOKですよ(^^; テストのための投稿はしないで下さい

URLの最後に「?」を付けると,キャッシュをある程度,防止できます


99.11.1.主な特徴

  1. 指定したURL階層以外のページからの不正利用を防止します
  2. 投稿者のIP情報を取得。プロキシ経由にも対応
  3. タイトル(スレッド中)の全記事を表示
  4. 最新の投稿記事の表示
  5. タイトルを,あらかじめ用意できる
  6. 連続する2行以上の改行を,1行に設定 $value =~ s/\n{2,}/\n/g;
  7. IPアドレスまたはドメイン名で動作を拒否することができる
99.11.2.掲示板の機能(CGIへの引数)

機能引数:actnopw
集計画面i

タイトルの全記事を表示d
書き込み処理p自動生成
最新の投稿記事の表示n

管理者モード(記事削除のみ)e

act省略時は,iが既定値 ◎は引数が必要です
引数は特に考えなくても,プログラムの方で自動的に作ります

99.11.3.管理ファイルの内容

  1. 『タイトル』管理ファイル

  2. 『記事』管理ファイル

  3. 『記事』ファイル
    001.txt〜999.txt の,999個の記事(コメント)を記録できます
    900個を超えたら,過去ログをとって,早めに初期化しましょう

    始めの一行目が管理用のヘッダで,二行目以降は記事の本文です
     管理用ヘッダ タイトル番号<書き込み日時<投票者名<メールアドレス<IP情報<Proxy情報<LF>
    書き込み日時は,perlのtime関数値です。9桁の数値で,年月日や時分秒や曜日などが復元できます

99.11.4.設置方法

vote.txt 投票掲示板 Vote.pl

をダウンロード後に,自分の環境に合わせて修正して下さい。

主な修正箇所はベースになるURLのパスとファイル名です。

$base = 'http://www.hogehoge.ne.jp/~foo/'; #ベースになるURL
$pg = 'vote.cgi';             #このスクリプト名
$cfile1 = '../bbs/vcnt1.txt'; #「タイトル番号」管理ファイル
$cfile2 = '../bbs/vcnt2.txt'; #「記事番号」   〃
$ifile1 = '../bbs/vidx1.txt'; #「タイトル名称&投票数」管理ファイル
$ifile2 = '../bbs/vidx2.txt'; #「記事一覧」       〃
$dfile = '../bbs/';           #記事ファイルの格納されるディレクトリ

$pwd = 'xyz'; # 管理者パスワード<要変更
$max = 12;    # 1ページ当たりの表示記事数
$mmax = 400;  # 記事の内容の最大入力文字数。半角換算で改行(LF),半角/全角空白は除いた文字数
$cmax = 20;   # 最新の投稿記事の表示数

/home/foo/
I
I-- cgi-bin/
I     I-- vote.cgi スクリプト本体
I     +-- jcode.pl 日本語コード変換フリーウエア
I
I-- bbs/
      I-- vcnt1.txt 投稿時に自動更新(あらかじめ用意できる)
      I-- vidx1.txt 投稿時に自動更新(    〃     )
      I-- vcnt2.txt 投稿時に自動更新
      I-- vidx2.txt 投稿時に自動更新
      +-- 001.txt 〜 999.txt 投稿時に自動生成

修正したスクリプトをftpで/home/foo/(任意)ディレクトリへ転送します

kibita(*)cd /home/foo/cgi-bin
kibita(*)put vote.txt vote.cgi
kibita(*)quote site chmod 705 vote.cgi
kibita(*)cd ..
kibita(*)mkdir bbs
kibita(*)quote site chmod 706 bbs
kibita(*)cd /home/foo/bbs
kibita(*)touch vcnt1.txt
kibita(*)quote site chmod 606 vcnt1.txt
kibita(*)touch vidx1.txt
kibita(*)quote site chmod 606 vidx1.txt
kibita(*)touch vcnt2.txt
kibita(*)quote site chmod 606 vcnt2.txt
kibita(*)touch vidx2.txt
kibita(*)quote site chmod 606 vidx2.txt

99.11.5.管理者モード

記事を,ひとつずつ削除します。

各記事のコメントの最後にフッタ,ex.「(12/14<Tue>06:00 [xx] *.123.*.456)」があります。
[xx]の xx が記事番号ですので,管理用の左枠にパスワード,右枠に記事番号を入力して,[※]ボタンを押します

実際には,消されたファイルは「記事番号x.txt」として,リネームされています

99.11.6.ファイル中の漢字コードの扱い

本スクリプトは,ファイル中で使用されている漢字のコードがsjisコードです。
sjisでないと管理用ヘッダで,<を区切りとして使用できません。
 $value =~ s/</&lt;/g;
 $value =~ s/>/&gt;/g;
の行を削除すれば,本文中でタグが利用できます。


[HOME][戻る]

Copyright (c)1999 GOMASUKE
Since 12/14/1999, Last Updated 12/14/1999