BBS CGI scriptの紹介

Access counter

[Top] [Up]


概要

電子掲示板のPerlスクリプトの紹介です。

お験し用のテストBBSへのリンクリスト

ファイル構成


詳細

投稿記事

記事の投稿は題名とハンドル名及び記事内容が必須です。

新規お投稿とは別に各記事毎に返信用のリンクが用意されています。
返信の場合は、記事内容が引用されます。

入力エラーが発生した場合は、再度フォームが表示されるので エラー箇所を修正して再投稿してください。
但し、多重投稿となった場合は再投稿できません。 記事はプレインテキストの他にHTMLタグを使用することができます。
HTMLタグを使用するには記事タイプを指定する必要があります。
使用可能なHTMLタグは参照と画像の貼り付けだけです。
画像をアップロードすることはできません。

投稿する記事を事前に表示確認することもできます。
HTMLタグを使用する場合にはリンクミスを防ぐ為にも確認していただいた方がいいでしょう。

記事を削除するときに必要な削除コードはランダムに生成されています。
8文字以内の任意の英数に変更できます。
削除コードは投稿時、ネットワーク上や一時ファイルなどで平文のままで扱われるので 第三者に漏れる恐れがあります。
本掲示板のログ情報としては暗号化して保存されます。

記事削除

各記事に削除のリンクをクリックすると記事を削除できます。
投稿時の削除コードを確認することで、投稿者と削除者が同一であることが確認されます。
削除コードを忘れてしまった場合はこの機能を使って削除できません。

高速化

表示情報はブラウザにキャッシュされるので再表示時に高速に表示できます。
特にスレッド間を渡り歩くときには有効です。
投稿後にもし投稿した記事が表示されていない場合はリロードで再表示してみてください。

表示モード

記事番号、投稿者、投稿日時、記事内容など全ての情報を表示する全体表示、 記事内容を表示しない題名一覧表示、 スレッドを作成の記事のみを抽出して表示するスレッド一覧表示 表示順序として記事番号順と、 表示範囲内の返信記事を連続にインデントさせて表示する返信ツリー表示、 ソート順は降順または昇順いずれかを指定可能です。

スレッド

スレッドを作成するには、記事種別としてスレッド作成を選択して投稿します。

作成されたスレッド(別の新たなBBS)を表示するには、スレッド作成として投稿された記事の題名をクリックします。
本BBSには返信ツリー表示のモードが用意されていますが、 返信は同一BBS内に限るのでスレッドを表現しているわけではありません。

スレッドには携帯併用スレッドも用意されています。
携帯電話など画面がPCに比較して狭い端末を意識したもので、 投稿記事の文字数を80byteと厳しく制限しています。(変更可能)
携帯併用と命名してますが、通常のスレッドでも携帯電話からアクセス可能です。文字数制限が目的のスレッドです。
文字数制限は、作成したスレッドのみに適用されます。

携帯対応

携帯電話などからのアクセス用に別途モジュールを提供しています。
携帯電話向けにも HTML4.01 strict で出力しています。
その為、HDMLのみしか対応していない一部の端末では利用できません。

メニューへの数字キーによるショートカット設定や、 携帯電話のブラウザでは表示がおかしくなるHTMLタグやスタイルシート等を使用しないようにしています。

メンテフリー

ディスク容量が空いている限り、投稿記事を整理する必要はありません。

投稿された記事を記録するファイルは所定の記事数に達すると、 自動的に別ファイルを作成し記録されます。

分割されたファイル間はシームレスにアクセスできるので、 使用者に意識させません。

この自動分割機能により記事数増加によるレスポンス低下を回避しています。

ロボット対策

ロボットによる自動投稿を拒否する簡易な機能が組み込まれてます。
この機能によって多重投稿も防止されます。

投稿フォーム毎に判定用のIDを割当て投稿時に判定します。
簡易な仕組みなのでスクリプトを解析すれば突破は容易です。 が、対応するロボットが作られる程、このBBSは普及しないでしょう(笑)。

カスタマイズ

表示イメージは HTMLのテンプレート を展開して作成し、 スタイルシートによって装飾を行なっています。

これらテンプレートやスタイルシートを編集することで 表示イメージをカスタマイズできます。

管理者機能

管理者専用の機能は今のところ用意していません。 セキュリティを確保する良い方法が思いつかなかったからです。
従って、管理者による他者の記事を削除することはログデータを編集しない限りできません。

本掲示板には削除機能が用意されていますが、 ログデータとしては削除情報を記録するのみで投稿された記事はそのまま残ります。
万一第三者による削除が行なわれた場合は、削除情報を消すことで記事を復活させることもできます。


サンプル

下記のリンクは全てお試し用です。自由に書き込んでみてください。
記事はメンテナンスの為に、告知無しに削除することがあります。
表示モードを変えたリンクを張っていますが、携帯向けを除いて全て同じスクリプトでオプションを変えただけのものです。

よく見かけるブロック表示タイプ

返信ツリー表示

タイトル表示(ブロック表示)

タイトル表示(返信ツリー表示)

スレッド表示(ブロック表示)

スレッド表示(返信ツリー表示)

携帯向け(PCからもアクセス可能)


ファイル構成

ダウンロードファイルに含まれているファイルの構成を以下に示します。
CGIを実行するにはこれらの他にもモジュールが必要です。

緑文字で示す部分は任意に変更していただくパスおよびファイルです。
その他についてはファイル名とパスの相対関係を守ってください。

他に必要なモジュールは、私が公開しているものとしては
パラメータローダー Perl module版(Params.pm)、 日付文字列変換(Timestr.pm)、 デバッグ用ログの採取(debug.pl)で、
その他にコード変換(jcode.pl)が必要です。

file tree
dirfilessummary

%cgi-bin%

sample.cgi

CGIで起動されるスクリプト

%cgi-bin%/eForum

eForum.pm

本BBS CGI scriptの一番主なモジュール
CGIパラメータの解析し応答を作成して返信する。

sample.par

パラメータを記述しているファイル

template1.html

BBSを出力するためのHTMLテンプレートファイル(PC向け)
キーワード部分に処理結果が展開される。
任意にカスタマイズして使ってください。

template2.html

BBSを出力するためのHTMLテンプレートファイル(携帯電話向け)
キーワード部分に処理結果が展開される。
任意にカスタマイズして使ってください。

%cgi-bin%/eForum/eForum

errormsg_en.pl

エラーメッセージ(英語版)

errormsg_ja.pl

エラーメッセージ(日本語版)

resmethod_cellphone.pl

機能定義(携帯電話向け)

resmethod_pc.pl

機能定義(PC向け)

template_en_pc.pl

フォームやメニュー項目のテンプレート(英語PC向け)

template_ja_pc.pl

フォームやメニュー項目のテンプレート(日本語PC向け)

template_ja_cellphone.pl

フォームやメニュー項目のテンプレート(日本語携帯電話向け)

%cgi-bin%/eForum/eForum/Article

PlainText.pm

プレインテキストタイプの投稿記事のチェック及び表示データの作成

STextThread.pm

携帯向けスレッドタイプの投稿記事のチェック及び表示データの作成

TextHTML.pm

HTMLタグを使用したタイプの投稿記事のチェック及び表示データの作成

TextThread.pm

スレッドタイプの投稿記事のチェック及び表示データの作成

%anywhere%

eforum1.css

インデント表示の書式を設定するスタイルシート
返信ツリー表示時のネストを表現する。
このスタイルシートは前述 template1.htmlで取り込まれるよう記述する。

eforum_border.css

境界線の書式を設定するスタイルシート


[Top] [Up]