1. はじめに
「じょじょゲスト」はあなたのサイトを訪れたゲストに感想や意見を書き込んでもらう記帳システムです。訪問者の感想をサイトの更新に反映させることは、サイトの活性化の第一歩となります。より充実した楽しいサイトを目指すためにも、この機会にぜひ「じょじょゲスト」を導入してください!
2. 利用規定および免責
- このスクリプトの著作権は、じょじょ♪(以下、作者)にあります。
- いかなる理由があっても、作者の許可なく著作権表示を削除して公開することは禁止します。
- ただし、組み込まれている一部のライブラリの著作権に関しては、それぞれの作者にあります。
- このスクリプトは、作者の許可を得ることなく自由に改造し、自由に使用することができますが、改造の有無に関わらず他人に再配布することはできません。
- 商用利用にも制限はありませんが、それによっていかなる損害が発生しても、作者は一切責任を負いません。
- 利用の際は原則として、あなたのサイトにじょじょのWeb工房へのリンクを張ってください。
3. 特徴
じょじょゲストの主な機能は以下のとおりです。
- プログラム構成がシンプルなため、スクリプトの設置や各種機能のカスタマイズが非常に簡単です。
- 強力なHTMLテンプレート機能によって自分好みのデザインに簡単に移行できます。
- 見栄え(HTML)と機能(スクリプト)が完全に分離しているため、バージョンアップしてもCGIの差し替えだけで対応できます。
- HTMLを書き換えるだけで無制限に増やせるアイコン機能を搭載。
- Cookieに対応しているため、名前とメール・アドレス、URLを次回の利用まで覚えていてくれます。
- CookieにはJavaScriptを使用しているため、訪問者側の環境がCookieをサポートしていればほぼ確実に動作します。
- 海外SPAM対策として、日本語文字が含まれていない投稿を禁止することができます。
- 訪問者からのメッセージに対して管理者からのコメントを付けることができます。
- 同じ内容の連続投稿を禁止できます。
- 使用可能にしたい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) 本体の設置
- guest???.lzh もしくは guest???.zip を適当なツールで解凍します。
- guest.cgi の1行目を、プロバイダから指示された perl のパスに変更します。
- 下記の設置例にしたがって、画像以外のファイルはすべてASCIIモードで、画像ファイルはBINモードでサーバに転送します。
- guest.cgi と同じ位置に log/ というディレクトリを作成します。
- 下記の設置例の[ ]内の指示にしたがって、各ファイル、ディレクトリのパーミッションを設定します。
- ブラウザのURL入力欄に http://〜/~user/guest/guest.cgi と入力し、アクセスします。
- メッセージ一覧画面(最初はメッセージはありません)が表示されたことを確認したら、http://〜/~user/guest/index.html をアクセスします。
- 上記2つの結果が同じになれば設置完了です。訪問者には http://〜/~user/guest/index.html を公開します。
- アイコンを変更・追加する際は icon.js を編集します。
設置例
public_html/
|
|---- guest/ [777] ディレクトリ
| |
|---- image/ [755] アイコン・ディレクトリ
| |
| |---- icon1.gif [644] アイコン画像1
| |---- icon2.gif [644] アイコン画像2
| | .....
| |
| |---- iconX.gif [644] アイコン画像X
|
|---- log/ [777] ログ・ディレクトリ ※1
|---- guest.cgi [755] じょじょゲスト本体
|---- guest.css [644] じょじょゲスト用スタイルシート
|---- guest.js [644] じょじょゲスト用JavaScriptファイル
|---- icon.js [644] アイコン定義用JavaScriptファイル
|---- index.html [666] メッセージ一覧用HTMLファイル パーミッションに注意
|---- idxtmp.html [644] メッセージ一覧画面用テンプレートファイル(ページング表示用)
|---- mestmp.html [644] メッセージ一覧画面用テンプレートファイル(番号指定表示)
|---- updtmp.html [644] メッセージ修正画面用テンプレートファイル
|---- jscm.pl [644] じょじょのWeb工房共通ライブラリ
|---- jcode.pl [644] 日本語ライブラリ(Jcode.pmが使用可能な場合は不要)
|
※1 セキュリティ上、logディレクトリの名称は各自で適当な名前に変更することを強く推奨します。
その場合、bbs.cgi内で log という名称を定義している部分をあわせて修正してください。
注意事項
- public_html/ は、プロバイダによっては html/ や WWW/ 、htdocs/ などの場合があります。
- CGIの設置できるディレクトリが cgi-bin/ などに限定されている場合は、guest/ をその配下に作成してください。
- プロバイダの設定によっては image/ を cgi-bin/ 配下に置けない場合もあります。
- CGIのパーミッションの設定は、プロバイダによって異なる場合があります。必ず確認して、プロバイダの指示を優先してください。
- jcode.pl は、歌代和正氏によるフリーウェアです。ftp://ftp.iij.ad.jp/pub/IIJ/dist/utashiro/perl/
(2) スクリプトのバージョンアップ
原則として guest.cgi と jscm.pl の置き換えだけで正常に動作しますが、必ずもう一度ブラウザのURL入力欄に http://〜/~user/guest/guest.cgi と入力し、アクセスする作業を行ってください。
6. カスタマイズ
(1) スクリプトのカスタマイズ
必ず perl のパスだけを書き換えた状態で動作テストを行ってからカスタマイズを開始してください。最低限必要な項目以上に手を入れた状態では、設定ミスによる誤動作が起こった場合に原因を突き止めることが困難になります。
- 各種機能のカスタマイズ可能な項目は、guest.cgi 中の管理者設定項目の部分にあるコメントを参考にしてください。
- 海外サーバなど、時差のある環境の場合、jscm.pl の先頭に時差補正の設定個所があるので、そこを参照してください。
(2) テンプレートのカスタマイズ
テンプレートHTMLは、以下の要素を除き、自由に変更することが可能です。ただし、テンプレートの改造による表示のカスタマイズはHTMLやCGIについてある程度の知識を要求しますので、初心者の方は極端な変更を行うことは避けてください。
- フォーム部分 <form> 〜 </form> に含まれる各項目。
- %body%、%subject%などの、%で囲まれた部分(テンプレートによって置き換わる部分)。
(3) アイコンのカスタマイズ
アイコンはすべて同じサイズ(ファイルサイズではなく、画像サイズ)のGIF画像のみ使用可能です。アイコンの追加などを行う場合、icon.js を以下のように編集します。
アイコン(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) メッセージを修正する
- 修正対象メッセージの「発言No」を確認します。
- メッセージ一覧画面にある修正/削除フォームに削除対象メッセージの「発言No」と「管理コード」を入力し、[修正]ボタンをクリックします。
- 修正前のメッセージがフォーム内に表示されるので、修正を行って[修正]ボタンをクリックします。
- 以降、修正されたメッセージが表示されるようになります。
[管理コード]欄に管理者用パスワードを入力すると、任意のメッセージを更新することができます。逆に、管理コードが登録されていないメッセージは管理者用パスワードを使用しなければ更新することができません。
(2) メッセージを削除する
- 削除対象メッセージの「発言No」を確認します。
- メッセージ一覧画面にある修正/削除フォームに削除対象メッセージの「発言No」と「管理コード」を入力し、[削除]ボタンをクリックします。
- 以降、該当するメッセージが表示されなくなります。
管理者による削除
- [管理コード]欄に管理者用パスワードを入力すると、任意のメッセージを削除することができます。逆に、管理コードが登録されていないメッセージは管理者用パスワードを使用しなければ削除することができません。
- [管理コード]欄に管理者用パスワードを入力した場合、削除対象メッセージの番号を複数指定できます。指定方法は次のようになります。
10, 12, 13 | カンマ区切りで複数指定 |
15-20 | 範囲指定 |
-10 | 2〜指定した番号までのすべて(1は削除できません) |
10- | 指定した番号以降すべて |
22, 26, 30-32, 55- | 以上の組み合わせ |
(3) リファレンスリンク機能を使用する
発言内容に特殊な記述を行うと、任意のメッセージに対するリンクに変換されます。変換規則は以下のとおりです。
>>n | 発言番号 n のメッセージへのリンク |
>>n- | 発言番号 n 以降のメッセージへのリンク |
>>-m | 発言番号 m までのメッセージへのリンク |
>>n-m | 発言番号 n から m までのメッセージへのリンク |
なお、指定された範囲に削除されたメッセージがある場合、表示はされませんが、件数にはカウントされます。
(4) 特定のメッセージのみを表示させる
URLに引数をつけることによって特定のメッセージだけを表示させることができます。引数の付け方は以下のとおりです。
http://〜/~user/guest/guest.cgi?st=n | 発言番号 n 以降のメッセージを表示 |
http://〜/~user/guest/guest.cgi?en=m | 発言番号 m までのメッセージを表示 |
http://〜/~user/guest/guest.cgi?st=n;en=m | 発言番号 n から m までのメッセージを表示 |
なお、指定された範囲に削除されたメッセージがある場合、表示はされませんが、件数にはカウントされます。
(5) 偽者防止機能
偽者防止機能を「あり」に設定すると、投稿者名の右に表示される日付欄に「管理コード」から一意に生成されるIDが付加されます。このIDが同一であるということは管理コードが同一であることを意味し、「名前」が同じ別人との識別を可能にします。
なお、「管理コード」に「管理者用パスワード」を入力した場合、IPアドレスの表示が常に Admin となります。
(6) 閲覧専用モードにする
guest.cgi と同じ位置に lock というファイル(またはディレクトリ)を置くと、書き込みをできなくすることができます。旅行などで管理ができなくなる場合に使用すると便利です。
(7) バージョンを表示する
guest.cgi?version でアクセスすることにより、スクリプトのバージョンを表示することができます。
8. サポート
(1) うまく動かない場合
カスタマイズを行う前に、以下の項目を確認してください。
- ファイルの転送モード(ASCII/BIN)は正しく設定しましたか?
- guest.cgi の1行目にある perl のパスは正しく記述されていますか?
- それぞれのファイル、ディレクトリのパーミッションは正しく設定されていますか?
(2) それでも動かないときは
設置やカスタマイズに関する質問、不具合の報告などはじょじょのWeb工房にあるWeb相談室で行っています。特別な理由がある場合を除き、メールでの質問などはご遠慮ください。
なお、原則として大幅な改造を必要とする相談には応じられませんので、予めご了承ください。
同サイトのゲストブックでは、このスクリプトの感想や次回バージョンへのご要望なども受け付けております。
9. 謝辞
じょじょシリーズ作成にあたり、各方面の会議室などで有益な助言、提案、バグ報告を下さった方々に心から感謝いたします。
10. 更新履歴
2007/07/20 ver.7.09
- セキュリティホール対策。(重要度:中)
- もう不要と思われるため、convert.cgi を削除。
2006/09/18 ver.7.08
- 海外SPAM対策として、日本語文字が含まれていない投稿を禁止する機能を追加。
- >>1- などで膨大なログを一気に表示することを抑制する機能を追加。
2005/03/11 ver.7.07
- Jcode.pmが使用できる場合はそちらを優先して使用するように変更。
2005/09/11 ver.7.06
- セキュリティホールが発見されたため、対処した(重要度:中)。
- 入力項目のURLはhttpから始まることを必須とした。
- jscm.pl ver.1.07 との連携で、書き込み禁止文字列を指定できるようにした。指定は jscm.pl 側の checkNGWord 関数で行います。
- 発言番号をクリックすることで、削除フォームにその番号がコピーされるようにした。
- 各発言に暗号化された管理コードで ID を振った。ユーザ・スタイルシートと組み合わせることで、見たくない発言を非表示にできます。
2004/08/09 ver.7.05
- セキュリティホールが発見されたため、対処した(重要度:中)。
- IPアドレスを暗号化して表示する機能を追加した。
- バージョン表示機能を追加。guest.cgi?version で表示されます。これに伴って付属テンプレートからバージョン表示を削除しました。
- 付属テンプレートのアイコン選択部分を JavaScript ファイルに分離した。
2003/11/15 ver.7.04
- デフォルトのアイコンを設定可能にした。
- 管理コード未入力のメッセージを修正しようとした際に出るエラーメッセージが間違っていたのを修正した。
- 管理者によるメッセージ削除に限り、削除対象Noを複数指定できるようにした(カンマ区切りと範囲指定)。
2003/06/11 ver.7.03
- imgなどを許可タグに指定した際に、タグ中の2つめの " を復元できなかったバグを修正した。
2002/05/01 ver.7.02
- 「>>1」などでの参照時にHTMLタグが無効になってしまうバグを修正した。
2001/07/24 ver.7.01
- メッセージサイズの許容最大値を設定可能にした。
- jscm.pl のバージョンチェックを追加。
2001/05/09 ver.7.00
バージョンアップは順次行われています。最新情報はじょじょのWeb工房にてご確認ください。また、未公開のβ版をサンプルとして公開することもあります。
Presented by じょじょ♪ <webmaster@starwars.jp>
(http://www.starwars.jp/web/)