1. はじめに
「じょじょBBS」はあなたのサイトを訪れたゲストの方々で、テーマ別の情報交換をしてもらうための電子会議室システムです。ゲストは自由にテーマを決めて新しいトピックを作成でき、他の人たちがそのトピックにメッセージを書き込むことができます。活発な情報交換が実現すれば、あなたのサイトも繁盛間違い無し!設置はとても簡単です。この機会にぜひ、じょじょBBSを!
2. 利用規定および免責
- このスクリプトの著作権は、じょじょ♪(以下、作者)にあります。
- いかなる理由があっても、作者の許可なく著作権表示を削除して公開することは禁止します。
- ただし、組み込まれている一部のライブラリの著作権に関しては、それぞれの作者にあります。
- このスクリプトは、作者の許可を得ることなく自由に改造し、自由に使用することができますが、改造の有無に関わらず他人に再配布することはできません。
- 商用利用にも制限はありませんが、それによっていかなる損害が発生しても、作者は一切責任を負いません。
- 利用の際は原則として、あなたのサイトにじょじょのWeb工房へのリンクを張ってください。
3. 特徴
じょじょBBSの主な機能は以下のとおりです。
- プログラム構成がシンプルなため、スクリプトの設置や各種機能のカスタマイズが非常に簡単です。
- 強力なHTMLテンプレート機能によって自分好みのデザインに簡単に移行できます。
- 見栄え(HTML)と機能(スクリプト)が完全に分離しているため、バージョンアップしてもCGIの差し替えだけで対応できます。
- トピック一覧画面はページング機能を搭載しているため、毎回古いトピックが表示されるようなことはありません。
- Cookieに対応しているため、名前とメール・アドレス、URLを次回の利用まで覚えていてくれます。
- CookieにはJavaScriptを使用しているため、訪問者側の環境がCookieをサポートしていればほぼ確実に動作します。
- 海外SPAM対策として、日本語文字が含まれていない投稿を禁止することができます。
- ANDとORによる強力なキーワード検索機能を搭載しています。
- 開設者だけが使用できるトピック終了機能を搭載。
- 同じ内容の連続投稿を禁止できます。
- 使用可能にしたいHTMLタグだけを自由に指定することができます。
- 管理コードを入力することによって、発言者が自分の発言を削除/修正することができます。
- 管理者パスワードによって、管理者または副管理者は自由にメッセージやトピックを削除/修正できます。
- 入力された管理コードを暗号化して表示することによって、他人を装った発言をすぐに見破ることができます。
- 悪戯防止機能によって、サーバが取得できるIPアドレスを監視し、ログに表示/非表示させることができます。
- 本文中にURLやメールアドレスが記入されたときに、自動的にリンク形式で表示させることができます。
- 「>」または「>」で始まる文は引用部分とみなし、色を変えて表示させることができます。
- GETメソッドを禁止することによって、imgタグなどによる外部からの攻撃を無効にします。
- Refererを監視することによって、外部からの書き込みを禁止することができます。
- ロックファイルを置くだけで、簡単に閲覧専用モードにすることができます。
- flockによる排他制御でログを強力に保護します(UNIX、WindowsNTのみ)。
- W3Cの推奨するXHTML1.1に準拠した正しい文法のHTMLソースを出力します。
4. 動作環境
(1) サーバ環境
- perl5が動作すること
- 排他制御にflockが使用できることを推奨(Windows95/98/Meの場合、ファイルロックが動作しません)
(2) クライアント環境
- Internet Explorer 5.x以上、Netscape 6.x以上を推奨
- CSS、JavaScriptの使用を推奨
5. 設置方法
(1) 本体の新規設置
- bbs???.lzh もしくは bbs???.zip を適当なツールで解凍します。
- bbs.cgi の1行目を、プロバイダから指示された perl のパスに変更します。
- 下記の設置例にしたがって、すべてのファイルをASCIIモードでサーバに転送します。
- bbs.cgi と同じ位置に log/ および backup/ というディレクトリを作成します。
- 下記の設置例の[ ]内の指示にしたがって、各ファイル、ディレクトリのパーミッションを設定します。
- ブラウザのURL入力欄に http://〜/~user/bbs/bbs.cgi と入力し、アクセスします。
- トピック一覧画面(最初はトピックはありません)が表示されたことを確認したら、http://〜/~user/bbs/index.html をアクセスします。
- 上記2つの結果が同じになれば設置完了です。訪問者には http://〜/~user/bbs/index.html を公開します。
- アイコンを変更・追加する際は icon.js を編集します。
設置例
public_html/
|
|---- bbs/ [777] ディレクトリ
| |
|---- log/ [777] ログ・ディレクトリ ※1
|---- backup/ [777] ログのバックアップ用ディレクトリ
|---- bbs.cgi [755] じょじょBBS本体
|---- bbs.css [644] じょじょBBS用スタイルシート
|---- bbs.js [644] じょじょBBS用JavaScriptファイル
|---- icon.js [644] アイコン定義用JavaScriptファイル
|---- index.log [666] トピック一覧画面用データ
|---- check.log [666] 多重投稿防止用データ
|---- index.html [666] トピック一覧画面用HTMLファイル パーミッションに注意!
|---- new.html [644] 新規トピック作成画面用HTMLファイル
|---- idxtmp.html [644] トピック一覧画面用テンプレートファイル
|---- deltmp.html [644] トピック削除画面用テンプレートファイル
|---- mestmp.html [644] メッセージ一覧画面用テンプレートファイル
|---- updtmp.html [644] メッセージ修正画面用テンプレートファイル
|---- srctmp.html [644] 検索結果一覧画面用テンプレートファイル
|---- jscm.pl [644] じょじょのWeb工房共通ライブラリ
|---- jcode.pl [644] 日本語ライブラリ(Jcode.pmが使用可能な場合は不要)
|
※1 セキュリティ上、logディレクトリの名称は各自で適当な名前に変更することを強く推奨します。
その場合、bbs.cgi内で log という名称を定義している部分をあわせて修正してください。
注意事項
- public_html/ は、プロバイダによっては html/ や WWW/ 、htdocs/ などの場合があります。
- CGIの設置できるディレクトリが cgi-bin/ などに限定されている場合は、bbs/ をその配下に作成してください。
- CGIのパーミッションの設定は、プロバイダによって異なる場合があります。必ず確認して、プロバイダの指示を優先してください。
- jcode.pl は、歌代和正氏によるフリーウェアです。ftp://ftp.iij.ad.jp/pub/IIJ/dist/utashiro/perl/
(2) スクリプトのバージョンアップ
原則として bbs.cgi と jscm.pl の置き換えだけで正常に動作しますが、設置後に必ずブラウザのURL入力欄に http://〜/~user/bbs/bbs.cgi と入力し、アクセスする作業を行ってください。
6. カスタマイズ
(1) スクリプトのカスタマイズ
必ず perl のパスだけを書き換えた状態で動作テストを行ってからカスタマイズを開始してください。最低限必要な項目以上に手を入れた状態では、設定ミスによる誤動作が起こった場合に原因を突き止めることが困難になります。
- 各種機能のカスタマイズ可能な項目は、bbs.cgi 中の管理者設定項目の部分にあるコメントを参考にしてください。
- 海外サーバなど、時差のある環境の場合、jscm.pl の先頭に時差補正の設定個所があるので、そこを参照してください。
(2) テンプレートのカスタマイズ
テンプレートHTMLは、以下の要素を除き、自由に変更することが可能です。ただし、テンプレートの改造による表示のカスタマイズはHTMLやCGIについてある程度の知識を要求しますので、初心者の方は極端な変更を行うことは避けてください。
- フォーム部分 <form> 〜 </form> に含まれる各項目。
- %body%、%subject%などの、%で囲まれた部分(テンプレートによって置き換わる部分)。
(3) アイコンのカスタマイズ
アイコンはすべて同じサイズ(ファイルサイズではなく、画像サイズ)のGIF画像のみ使用可能です。idxtmp.html、mestmp.html、updtmp.html の各テンプレートに、以下の要素を追加します。
アイコン(kirin.gif)の追加例
document.write('<select id="icon" name="icon" tabindex="10">');
document.write('<option value="">好きな動物</option>');
document.write('<option value="ahiru">アヒル</option>');
document.write('<option value="buta">ぶた</option>');
・・・・・・・・
document.write('<option value="kirin">キリン</option>'); 追加。value属性はファイル名から .gif を外したものを使う。
document.write('</select>');
7. 操作方法
(1) トピックを削除する(管理者または副管理者のみ)
- 画面下の「管理者用パスワード」欄に、bbs.cgi 中で設定したパスワードを入力し、[管理者用]ボタンをクリックします(管理者モードに移行)。
- 削除したいトピック名の前にあるチェックボックスをチェックします。
- すべてを選択したら、一覧の下にあるテキストボックスにもう一度管理者用パスワードを入力し、[削除]ボタンをクリックします。
- 選択したトピックが一覧画面から削除され、メッセージの閲覧ができなくなります。
削除されたトピックのログファイルは、log/ 配下から、backup/ 配下に移動されるだけです。物理的に削除されるわけではないので、古いログが溜まってディスク容量が圧迫される場合は定期的に backup/ の配下を掃除する必要があります。
(2) メッセージを修正する
- 修正したいメッセージのあるトピックを表示させ、修正対象メッセージの「発言No」を確認します。
- メッセージ一覧画面にある修正/削除フォームに削除対象メッセージの「発言No」と「管理コード」を入力し、[修正]ボタンをクリックします。
- 修正前のメッセージがフォーム内に表示されるので、修正を行って[修正]ボタンをクリックします。
- 以降、修正されたメッセージが表示されるようになります。
[管理コード]欄に管理者用パスワードを入力すると、任意のメッセージを更新することができます。逆に、管理コードが登録されていないメッセージは管理者用パスワードを使用しなければ更新することができません。
同様に、終了状態になっているトピックのメッセージは管理者用パスワードでなければ更新することができません。
(3) メッセージを削除する
- 削除したいメッセージのあるトピックを表示させ、削除対象メッセージの「発言No」を確認します。
- メッセージ一覧画面にある修正/削除フォームに削除対象メッセージの「発言No」と「管理コード」を入力し、[削除]ボタンをクリックします。
- 以降、該当するメッセージが表示されなくなります。
管理者または副管理者による削除
- [管理コード]欄に管理者用パスワードを入力すると、任意のメッセージを削除することができます。逆に、管理コードが登録されていないメッセージは管理者用パスワードを使用しなければ削除することができません。
- 同様に、終了状態になっているトピックのメッセージは管理者用パスワードでなければ削除することができません。
- [管理コード]欄に管理者用パスワードを入力した場合、削除対象メッセージの番号を複数指定できます。指定方法は次のようになります。
10, 12, 13 | カンマ区切りで複数指定 |
15-20 | 範囲指定 |
-10 | 2〜指定した番号までのすべて(1は削除できません) |
10- | 指定した番号以降すべて |
22, 26, 30-32, 55- | 以上の組み合わせ |
(4) キーワード検索機能を使う
複数のキーワードを指定でき、それぞれのキーワード間にANDとORの設定ができます。ANDは「&」、ORは「|」で表現し、( )で優先順位をつけることも可能です。キーワードや & | ( ) の各種の記号は、必ず前後に半角スペースを入れて区切ってください。
例) 「赤い」と「速い」を含み、かつ「車」または「飛行機」を含むメッセージの検索
赤い & 速い & ( 車 | 飛行機 )
(5) リファレンスリンク機能を使用する
発言内容に特殊な記述を行うと、同一トピック内の任意のメッセージに対するリンクに変換されます。変換規則は以下のとおりです。
>>n | 発言番号 n のメッセージへのリンク |
>>n- | 発言番号 n 以降のメッセージへのリンク |
>>-m | 発言番号 m までのメッセージへのリンク |
>>n-m | 発言番号 n から m までのメッセージへのリンク |
なお、指定された範囲に削除されたメッセージがある場合、表示はされませんが、件数にはカウントされます。
(6) 特定のメッセージのみを表示させる
URLに引数をつけることによってトピック内の特定のメッセージを表示させることができます。引数の付け方は以下のとおりです。
http://〜/~user/bbs/bbs.cgi?id=2001050100;target=n | 発言番号 n のメッセージを表示 |
http://〜/~user/bbs/bbs.cgi?id=2001050100;ln=n | 最近の n 件のメッセージを表示 |
http://〜/~user/bbs/bbs.cgi?id=2001050100;fs=m | 最初の m 件のメッセージを表示 |
http://〜/~user/bbs/bbs.cgi?id=2001050100;st=n | 発言番号 n 以降のメッセージを表示 |
http://〜/~user/bbs/bbs.cgi?id=2001050100;en=m | 発言番号 m までのメッセージを表示 |
http://〜/~user/bbs/bbs.cgi?id=2001050100;st=n;en=m | 発言番号 n から m までのメッセージを表示 |
なお、指定された範囲に削除されたメッセージがある場合、表示はされませんが、件数にはカウントされます。
(7) 偽者防止機能
偽者防止機能を「あり」に設定すると、投稿者名の右に表示される日付欄に「管理コード」から一意に生成されるIDが付加されます。このIDが同一であるということは管理コードが同一であることを意味し、「名前」が同じ別人との識別を可能にします。
なお、「管理コード」に「管理者用パスワード」を入力した場合、IPアドレスの表示が常に Admin となります。
(8) 閲覧専用モードにする
bbs.cgi と同じ位置に lock というファイル(またはディレクトリ)を置くと、書き込みをできなくすることができます。旅行などで管理ができなくなる場合に使用すると便利です。
(9) バージョンを表示する
bbs.cgi?version でアクセスすることにより、スクリプトのバージョンを表示することができます。
8. サポート
(1) うまく動かない場合
カスタマイズを行う前に、以下の項目を確認してください。
- すべてのファイルを「ASCIIモード」で転送しましたか?
- bbs.cgi の1行目にある perl のパスは正しく記述されていますか?
- それぞれのファイル、ディレクトリのパーミッションは正しく設定されていますか?
(2) それでも動かないときは
設置やカスタマイズに関する質問、不具合の報告などはじょじょのWeb工房にあるWeb相談室で行っています。特別な理由がある場合を除き、メールでの質問などはご遠慮ください。
なお、原則として大幅な改造を必要とする相談には応じられませんので、予めご了承ください。
同サイトのゲストブックでは、このスクリプトの感想や次回バージョンへのご要望なども受け付けております。
9. 謝辞
じょじょシリーズ作成にあたり、各方面の会議室などで有益な助言、提案、バグ報告を下さった方々に心から感謝いたします。
10. 更新履歴
2007/07/20 ver.8.15
- セキュリティホール対策。(重要度:中)
- もう不要と思われるため、convert.cgi を削除。
2006/09/18 ver.8.14
- 海外SPAM対策として、日本語文字が含まれていない投稿を禁止する機能を追加。
2006/03/11 ver.8.13
- 副管理者用の管理コードを設定可能に変更。
- Jcode.pmが使用できる場合はそちらを優先して使用するように変更。
2005/10/09 ver.8.12
- 検索結果画面で、投稿者のIDが間違って表示されるバグを修正。
2005/09/11 ver.8.11
- セキュリティホールが発見されたため、対処した(重要度:中)。
- 入力項目のURLはhttpから始まることを必須とした。
- 削除対象メッセージの番号に0が指定された場合、トピごと削除となるようにした。(管理者のみ)
- jscm.pl ver.1.07 との連携で、書き込み禁止文字列を指定できるようにした。指定は jscm.pl 側の checkNGWord 関数で行います。
- 発言番号をクリックすることで、削除フォームにその番号がコピーされるようにした。
- 各発言に暗号化された管理コードで ID を振った。ユーザ・スタイルシートと組み合わせることで、見たくない発言を非表示にできます。
2004/08/09 ver.8.10
- セキュリティホールが発見されたため、対処した(重要度:中)。
- IPアドレスを暗号化して表示する機能を追加した。
- バージョン表示機能を追加。bbs.cgi?version で表示されます。これに伴って付属テンプレートからバージョン表示を削除しました。
- 連続投稿抑制機能を強化した。
- 付属テンプレートのアイコン選択部分を JavaScript ファイルに分離した。
2003/12/29 ver.8.03
- セキュリティホールが発見されたため、対処した(重要度:低)。
2003/11/15 ver.8.02
- デフォルトのアイコンを設定可能にした。
- 管理者によるメッセージ削除に限り、削除対象Noを複数指定できるようにした(カンマ区切りと範囲指定)。
2003/11/08 ver.8.01
- 最大メッセージ数を 0 に設定すると、常に警告メッセージが表示された状態になるバグを修正した。
- メッセージ修正で最大メッセージ数オーバーの自動終了になる際に、動きが不安定だったバグを修正した。
2003/06/09 ver.8.00
- アイコンの追加。
- 上記に伴ってログのフォーマットが変更になりました。
2002/04/08 ver.7.06
- トピック一覧画面で未読があるトピックのリンク色が変わるようにした。
2002/04/01 ver.7.05
- メッセージを削除したときに投稿者名が消えてしまうバグを修正(削除したメッセージを復活させたときに投稿者名が出てこなくなってた)。
2002/02/14 ver.7.04
- トピック数が設定したトピックの最大表示数+1件になったとき、トピック一覧画面に「前の○件」がリンクで表示されなかったバグを修正した。
2001/11/29 ver.7.03
- メッセージ一覧画面の「前の○件」と「次の○件」のリンクを、不要な場合は無効になるようにした。
2001/11/27 ver.7.02
- メッセージ一覧画面に「前の○件」と「次の○件」のリンクを追加した。
- メッセージ件数によるトピックの自動終了機能を追加した。
2001/07/24 ver.7.01
- メッセージサイズの許容最大値を設定可能にした。
- テンプレートHTML中で、同じキーワードが1行に複数あった場合に展開できないバグを修正。
- メッセージ修正画面でトピック名を示す %topic% を展開できるようにした。
- トピック数が1件のときに、そのトピックを削除しても一覧画面に残ってしまうバグを修正。
- jscm.pl のバージョンチェックを追加。
2001/05/09 ver.7.00
バージョンアップは順次行われています。最新情報はじょじょのWeb工房にてご確認ください。また、未公開のβ版をサンプルとして公開することもあります。
Presented by じょじょ♪ <webmaster@starwars.jp>
(http://www.starwars.jp/web/)