ブログ風日記帳(兼掲示板) hbg.cgi

トップへ

機能

    ブログ風日記帳、兼掲示板
  • ページレイアウトがブログ風の日記帳
  • 日記モードで管理人のみエントリーの投稿可能(デフォルト)
  • 掲示板モードで誰でもエントリー投稿可能
  • 携帯モード有り
  • スマートフォン用表示
  • 各エントリーのカテゴリー指定可能
  • 各エントリーにコメント投稿可能
  • 各エントリーに「そう思う/思わない」ボタン設置可
  • CAPTCHAを使ったセキュリティイメージによりスパム書き込み制限(設定可)
  • 画像アップ機能、画像は記事内のどこにでも配置可能
  • 日記モードの下書き保存、投稿時間指定可能
  • コメント数制限機能
  • サムネイル画像自動作成機能
  • エントリー記事、コメント検索機能
  • ページレイアウトを2カラムモードと3カラムモードに設定可
  • サイドメニューにプロフィール、カレンダー、最近のエントリー、コメント、カテゴリー、外部リンク、アーカイブ、自由HTML挿入、検索
  • サイドメニューの配置を自由に設定可能
  • 閲覧カウンタ機能
  • エントリープリントアウト用ページ有り
  • 単一スクリプトにより簡単設置
  • 管理人メニューによる簡単設定
  • ページデザインをスタイルシートで設定可能
  • 外部スタイルシートファイル使用可能
  • 記事削除、変更機能
  • 記事中のhttp://の自動リンク機能
  • <HEAD>内文字列埋め込み機能
  • タグ使用選択可
  • 超多機能スレッド式掲示板としてディスカッションがあります。
  • スレッド式ではない通常の超多機能時系列式掲示板としてはメッセージボード5があります
  • メッセージを一行ずつ書き込む一行掲示板もあります。
設置方法
  1. サーバーにPerlのPackage, GD, GD::SecurityImage::AC, Date::Calc, Jcodeがインストールされている必要があります。
  2. Perl 5.6.1以上が必要になります。
  3. 書き込み可能でCGI実行可能なディレクトリにhbg.cgiを置く。
  4. hbg.cgiの1行目のperlのパスをプロバイダに従って変更する。
    • スクリプトはUTF-8で記述されているので、パス変更やアップロードの際に文字コードを誤ってUTF-8以外に変更しないよう注意してください。
  5. hbg.cgiのパーミッションを適切に変更する。
  6. ブラウザ上でhbg.cgiを実行する。
  7. 管理人パスワードを聞いてくるので設定する。
  8. セットアップをクリックし、セットアップ画面でそれぞれ適切に変更し「設定」をクリックする。
    この内容がhbg_setup.plに保存される。
    この画面はhbg.cgi?mode=adminでいつでも呼び出せる。
  9. その後はhbg.cgiを実行するだけでブログ風日記帳として機能する。
文字コード
  • このスクリプトはUTF-8で記述されています。それ以外では文字化けして動きません。
  • このスクリプトから出力されるデータファイルも全てUTF-8になります。したがって、作成されたファイルを直接編集する際には、文字コードを変更しないよう注意が必要です。
  • 携帯モードでの表示のみ、Shift_JISになります。
携帯モード
  • スクリプト名をhbgmob.cgiとして保存(又はシンボリックリンク)するか、hbg.cgi?mode=mobileとしてアクセスすると携帯モードで起動します。hbgmob.cgiの場合も、hbg.cgiはサーバー上で動く状態になってないといけません。
  • 携帯モードでは、以下の機能がサポートされています。
    エントリー表示、投稿、修正、削除、コメント表示、投稿、削除、カテゴリーでのソート、名前でのソート
  • 携帯モードでは、以下の機能は、サポートされていません。
    画像アップロード、下書き保存、投稿時刻指定、そう思うボタン、自動リンク、検索
  • スクリプト内でJcode.pmは、携帯モードで、表示をShfit_JISに変換する時のみ使用します。

  • 携帯モードのサンプル
サイドメニュー
  • サイドメニューには、以下の物があります。
    • プロフィール、カレンダー、最近のエントリー、最近のコメント、新規エントリー投稿リンク、管理用リンク、左メニュー自由HTML1、2、3、カテゴリーリスト、アーカイブ、外部リンク、右メニュー自由HTML1、2、3、検索
  • サイドメニューは左側のみ、右側のみ、両側、配置順、表示、非表示等、全て管理用セットアップページから設定できます。
  • メニューのデザインはスタイルシートで自由に調整できます。
カテゴリーメニュー
  • カテゴリーメニューはサイドメニューにあり、登録されているカテゴリーのリンクを表示します。
  • カテゴリーメニューのリンクをクリックすると、そのカテゴリーに関するエントリーが記事としてリスト表示されます。
  • その際に、そのカテゴリーメニューのすぐ上に、そのカテゴリーのエントリーのタイトルのリンクが表示されます。
  • そのエントリータイトルのリンクから続けてそのカテゴリーの記事を読むことができます。
日記モード
  • 管理用設定ページの「投稿モード」を「日記モード」にすると、日記モードとして動作します。
  • 日記モードでは、管理人のみがエントリーを投稿できます。トップから「新規エントリー投稿」をクリックすると、管理用パスワードを訊いてきますので、パスワードを入力することで投稿フォームを開くことができます。
  • 日記モードでは、カテゴリーの指定は必須です。
  • 日記モードでのエントリー投稿には、名前の入力がありません。途中で掲示板モードにすると名前の部分がブランクのエントリーが表示されることになります。
  • 日記モードのエントリー投稿では、下書き保存ができます。「下書き保存」ボタンをクリックすることで、記述した文章を保存することができます。次に投稿フォームを開いた時に再度編集し、投稿することができます。画像は下書き保存できません。
  • 日記モードのエントリー投稿では、記事を前もって投稿しておき、それが実際に反映される時刻を指定することができます。投稿フォームの「表示開始時刻を指定する」をチェックすると時刻指定プルダウンが表示されるので、それを設定できます。
  • 投稿時刻指定したエントリーは、実際にその時刻になるまで表示されません。投稿時刻指定は複数の記事で可能です。
  • 投稿時刻指定したエントリーは、その時刻になる前に、記事の変更や削除ができます。
  • 投稿時刻指定は、「時限爆弾モード」や「アリバイ工作モード」等と呼んでも構いませんが、データファイルにはそのモードで投稿された痕跡が残るようになっています。投稿後再考のチャンスが与えられるという事で「やっちゃった防止モード」としての利用もできます。
  • 日記モードでの記事の修正、削除は、「管理用」リンクをクリックして「エントリー記事削除修正/コメント削除」を選択して「次へ」をクリックしてください。トップページに戻りますが、そこでエントリー右下に「削除」と「修正」のリンクが現れますのでそこから可能になります。
  • 日記モードでは、コメントの削除は管理人しかできません。エントリーの場合と同じように「管理用」リンクからコメントの「削除」リンクを表示させることができます。
  • 日記モードでの管理用メニューには、セットアップ、エントリー削除・修正/コメント削除、カテゴリー整理、プロフィール編集、リンク集編集があります。
掲示板モード
  • 管理用設定ページの「投稿モード」を「掲示板モード」にすると、掲示板モードとして動作します。
  • 掲示板モードでは、誰でもエントリーの投稿ができます。「新規エントリー投稿」をクリックするとそのまま投稿ページが開きます。
  • 管理用設定ページで「セキュリティイメージ」を「有効」にすると掲示板モードの投稿は画像認証が必要になります。
  • 掲示板モードでは、カテゴリー指定の有無を管理人設定で選択できます。カテゴリー無しで使用すると、データファイルにはカテゴリーが記録されないので、途中でカテゴリー有効に変更した場合、カテゴリーがブランクのエントリーが発生してしまいます。
  • 掲示板モードでは、下書き保存と投稿時刻設定ができません。
  • 掲示板モードでは投稿の際、削除修正用パスワードが必要になります。後から投稿記事の修正、削除が可能になります。
  • 掲示板モードでは、コメントの削除は、書き込んだユーザーが可能です。コメント書き込みの際に削除用パスワードを入力する必要があります。
  • 掲示板モードでの管理用メニューには、セットアップ、カテゴリー整理(有効時)、プロフィール編集、リンク集編集があります。
日記モードと掲示板モードの簡単比較
      エントリー投稿 エントリー修正・削除 コメント投稿 コメント削除 エントリー下書き保存 エントリー投稿時刻指定 カテゴリー選択
    日記モード 管理人のみ 管理人のみ 誰でも可 管理人のみ 可能 可能 必須
    掲示板モード 誰でも可 誰でも可 誰でも可 誰でも可 不可 不可 管理用設定により「有効」「無効」選択可
「そう思う/そう思わない」ボタン
  • 「そう思う/そう思わない」ボタンは、読者がエントリーを読んで、その記事に同意したら「そう思う」、しなければ「そう思わない」をクリックして、それぞれのカウントを記録する機能です。
  • 「そう思う/そう思わない」ボタンは、実際は、エントリー記事下に表示されるテキストリンクでボタンではありません。便宜上、語呂上そう呼んでいます。
  • 「そう思う/そう思わない」ボタンは、管理用設定ページで個別に「有効」「無効」の設定ができます。「そう思う」のみ、「そう思わない」のみ、または両方有効、両方無効の設定ができます。「無効」にするとそのリンクは表示されません。
  • 「そう思う/そう思わない」ボタンは、日記モードと掲示板モードのどちらでも有効にできます。
  • 管理用設定ページで「そう思う」「そう思わない」のボタン名を自由に変更できます。「好き/嫌い」「Good/Bad」「イケてる/イケてない」等自由に設定できます。
  • 読者は、エントリーのボタンの内、どちらか一つを一回だけクリックできます。一度どちらかをクリックするともう一つをクリックする事はできません。また、同じボタンも二度とクリックできません。
  • トップページでのエントリーのリスト表示で、記事全文を表示していない時には、リンクは現れず、クリックすることができません。これは、記事を読まずにボタンをクリックするのを防ぐためです。その状態で、クリックできない「そう思う/そう思わない」の表示があるのは、その数字によって記事への興味を引く効果を狙うためです。「そう思う/そう思わない」ボタンをクリックするためには、記事タイトルをクリックするか、「続きを読む」か、「コメント」をクリックして記事全文のページに行かないといけません。
  • エントリーを削除すると、そのエントリーのカウントが全て0にリセットされます。
  • エントリーを修正した際に、カウントがリセットされるかどうかは管理人設定の「エントリーを編集した時に「そう思う・思わない」カウントをリセットする」で設定できます。デフォルトは「リセットする」です。これは、カウントが貯まった後で、記事を逆の意味になるよう書き換えて情報を操作するのを防ぐためです。修正ページから「修正」ボタンを押すことで(実際に記事の変更が無くても)カウントはリセットされます。エントリーを投稿、修正するのが管理人だけで、そういった悪事を働かないという保証があれば「リセットしない」に設定すると良いでしょう。
スタイルシート
  • ページのほとんどのデザインがスタイルシートで可能です。
  • 最初に設置した際のデザインは、デフォルトのスタイルシートが適用されているだけなので、柔軟に変更することができます。
  • スタイルシートの設定は、管理用設定ページの「スタイルシート」からできます。
  • スタイルシートは、管理用設定ページで設定する他に、外部ファイルを使用することも可能です。その際は、管理用設定ページの「スタイルシート」で、「スタイルシートの外部ファイルを使う」を選択し、ファイル名を指定してください。
  • 用意されているスタイルシートのためのclass名は、以下の通りです。デフォルトのスタイルシートを参考に好みに設定し直してください。
    class名 適用部分 適用されているタグ
    adminlink サイドメニューの管理用リンク table, tr, td, a,
    archive サイドメニューのアーカイブ table, tr, th, td, select
    calendar サイドメニューのカレンダー table, tr, th, td, a
    category サイドメニューのカテゴリーリスト table, tr, th, td, ul, li, a
    category_pulldown カテゴリープルダウンメニュー select, input
    sub_title カテゴリー選択時の上部カテゴリー名 h1
    comment コメント表示欄 table, tr, th, td, div, hr, a
    comment_form コメント投稿フォーム table, tr, th, td, input, textarea
    comment_header コメントの番号と名前の行 div
    comrecent サイドメニューのコメントリスト table, th, tr, td, ul, li, a
    custom_side_html_left0 左サイドメニューのHTML1 span
    custom_side_html_left1 左サイドメニューのHTML2 span
    custom_side_html_left2 左サイドメニューのHTML3 span
    custom_side_html_right0 右サイドメニューのHTML1 span
    custom_side_html_right1 右サイドメニューのHTML2 span
    custom_side_html_right2 右サイドメニューのHTML3 span
    delayed_post_table 投稿フォームページ内の投稿時刻指定表示待ちテーブル span, table, tr, th, td, input
    draft_table 投稿フォームページ内の下書き保存中のテーブル span, table, tr, th, td, input
    edit_form エントリー修正フォーム table, tr, td, span, input, textarea
    extlink サイドメニューの外部リンクリスト table, tr, th, td, ul, li, a
    extlink_form 外部リンク登録フォーム table, tr, td, input
    left_list 左サイドメニューの外枠 table, tr, td
    main エントリー記事表示欄 table, tr, td, a
    main_outer エントリー記事表示欄の外側 table, tr, td
    main_title エントリー記事のタイトル tr, th, h2, a
    printout_title_bar プリントアウトページタイトル h1
    printout_category プリントアウトページカテゴリー h2
    printout_title プリントアウトページエントリータイトル h3
    printout_title_name プリントアウトページ投稿者命 div
    printout_date プリントアウトページ投稿日時 div
    printout_url プリントアウトページURL div
    printout_hr プリントアウトページHRライン hr
    printout_main プリントアウトページ投稿本文 div
    post エントリー投稿フォーム table, tr, td, input, textarea, select
    postlink サイドメニューのエントリー投稿リンク table, tr, td, a
    profile プロフィール表示 table, tr, th, td, span
    profile_form プロフィール登録フォーム table, tr, td, input, textarea
    profile_item プロフィールの項目表示 span
    recent サイドメニューの最近のエントリーリスト table, tr, th, td,
    right_list 右サイドメニューの外枠 table, tr, td
    search_menu 検索サイドメニュー table, th, tr, td, input
    search_result 検索結果ページ table, tr, h3, td, input, a, b, dl, dt, dd
    search_result_title 検索結果の本文へのリンク a
    select_admin 管理用設定メニュー table, tr, td, center, input
    setup_form 管理用セットアップフォーム table, tr, td, ul, li, input, select, option, textarea, span
自動リンク
  • 管理用設定ページの「自動リンク」を「有効」にすると、書き込み記事内のhttp://から半角文字の最後まで自動リンクされます。
  • 文中にURLを挿入できるように、URL内の日本語文字列は、自動リンクされないようにあえてしています。
  • エントリーとコメントの自動リンクは個別に「有効/無効」設定できます。
  • 管理用設定ページで、「自動リンク」の「URL短縮表示」を「有効」にすると、表示されるURLが途中で切れて表示されます。表示される文字数は、「URL短縮表示文字数」で設定できます。
CAPTCHAについて
  • CAPTCHAによるセキュリティイメージを使用することによりスパム書き込みを防ぐことができます(デフォルトは無効になっています)。書き込み時に表示された画像をテキストボックスに入力することでのみ書き込み可能になります。スパムプログラムはこの画像のテキストを読むことができないので自動で宣伝を書き込むことができなくなります。
True Type Fontについて
  • CAPTCHA機能(セキュリティイメージ)を使うには管理用セットアップページの「セキュリティイメージ」の「TTFフォントファイル」にTrue Type Fontを指定しないといけません。
  • サーバーが持っているフォントを指定することもできますが、多くの場合はそれらのファイルにアクセスできないと思われます。
  • フォントを配布しているサイト等からTrue Type Fontをダウンロードし、.ttfファイルをサーバーにアップロードして管理用セットアップの「TTFフォントファイル」にそのファイルを指定すると良いでしょう。
  • ブラウザで実行した際、Error loading ttf font for GD: Could not find/open font at .../site/lib/GD/SecurityImage/AC.pm line 70のようなエラーが出た場合は、管理用セットアップ画面に入り、「TTFフォントファイル」を適切に指定してください。
CAPTCHAを使いたくない方へ
  • PerlのPackage GD::SecurityImage::ACがサーバーにインストールされていないためCAPTCHAを使いたくない方は管理用セットアップで「セキュリティイメージ設定」を「無効」にし(デフォルトで無効)、スクリプト内の「use GD::SecurityImage::AC」をコメントアウトしてください。
  • GD::SecurityImage::ACがインストールされていて、且つCAPTCHAを使いたくない方は、管理用セットアップの「セキュリティイメージ設定」を「無効」にするだけで使用できます。
Perl 5.8 vs. 5.6
  • このスクリプトはPerl 5.6.1以上で動作します。デフォルトでは、5.6.1で動くようにEncode.pmを使用していません。
  • バージョンが問題になるのはUTF-8に関連した機能のみです。Encode.pmは、Perl 5.7.3以上が必要になります。
  • Perl 5.8でもデフォルトのまま動作するので、何も変更する必要はありません。
  • Perl 5.8で、Encode.pmを使用したい場合は、ソースの「use Encode;」のコメントアウトを外し、「my $use_encode_pm = 0;」を「my $use_encode_pm = 1;」とすることで、Encode.pmのファンクションであるdecodeを使用します。
  • 設置するサーバーのバージョンがわからない場合は、何も変更せずにそのまま設置してください。
  • 5.6.1以下かもしれない場合は、モジュールチェッカーをサーバーにインストールして、ブラウザ上で「Perl Version: 5.006001」と出れば5.6.1です。

CGIサンプル&ソース

更新履歴

  • 1.042 : 7/17/11 : タグの処理を修正
  • 1.041 : 5/19/11 : カレンダータグとテンポラリファイルの処理を修正
  • 1.040 : 2/13/11 : スマートフォンモードの書き込みを追加
  • 1.039 : 2/6/11 : スマートフォンモードを追加
  • 1.038 : 5/27/10 : コメントキャッシュファイルが無い場合のエントリー削除の処理を修正
  • 1.037 : 4/4/10 : リスト表示の改行モードでのバグを修正
  • 1.036 : 3/19/10 : 携帯用戻るリンクオプションを追加
  • 1.035 : 2/22/10 : リスト表示時の改行と画像表示のオプションを追加
  • 1.034 : 2/7/10 : コメントの表示順オプションと全コメント表示オプションを追加
  • 1.033 : 2/5/10 : プリントページの文字化けを修正
  • 1.032 : 1/27/10 : 削除時の閲覧カウンタを修正
  • 1.031 : 1/25/10 : 閲覧カウンタを追加
  • 1.030 : 1/24/10 : 携帯モードの文字化けを修正
  • 1.029 : 1/18/10 : タグの中のhttpを自動リンクしないよう修正
  • 1.028 : 1/17/10 : 編集時のカテゴリ数のバグを修正。携帯モードの「〜」「−」の変換を修正
  • 1.027 : 1/13/10 : 新規カテゴリのmaxlengthを削除
  • 1.026 : 12/29/09 : プリント用ページを追加。エントリーごとのHTML有効オプション追加
  • 1.025 : 12/13/09 : タイトルバーのカテゴリー表示を修正
  • 1.024 : 12/8/09 : テンポラリファイルの処理を修正
  • 1.023 : 12/7/09 : エントリー下にも前次リンク表示。タイトルバーにカテゴリーとエントリータイトル表示。編集のバグを修正
  • 1.022 : 12/6/09 : エントリー変更時にそう思うカウントをリセットしない設定を追加
  • 1.021 : 11/19/09 : カテゴリーリストの順序設定のオプションを追加
  • 1.020 : 11/18/09 : カテゴリー選択の時に上部にカテゴリー名を表示
  • 1.019 : 11/16/09 : カテゴリー整理でマルチセレクトを追加。HTML挿入の改行を修正
  • 1.018 : 10/24/09 : 画像以外がアップロードされた場合の処理を修正
  • 1.017 : 9/6/09 : トップに更に前リンクを追加
  • 1.016 : 8/24/09 : セキュリティイメージのjpegを修正
  • 1.015 : 8/13/09 : 検索のバグを修正
  • 1.014 : 8/12/09 : 検索機能を追加
  • 1.013 : 7/31/09 : 携帯モードでの日記モードの動作を修正。カテゴリ処理を修正
  • 1.012 : 7/30/09 : 携帯モードを追加
  • 1.011 : 7/28/09 : カテゴリー、名前選択時に前後のエントリーへのリンクを追加
  • 1.010 : 7/9/09 : 変更時のCookieを修正
  • 1.009 : 7/8/09 : コメントフォームの文字化けを修正
  • 1.008 : 7/4/09 : そう思うボタンのリンクを修正
  • 1.007 : 7/3/09 : Cookieの文字コードを修正
  • 1.006 : 7/2/09 : Cookieと削除確認の文字コードを修正。そう思うボタンの処理を追加。
  • 1.005 : 7/1/09 : そう思うボタンを追加。短縮リンクURLモードを追加
  • 1.004 : 7/1/09 : 下書き保存の文字化けを修正
  • 1.003 : 6/24/09 : Cookieを修正
  • 1.002 : 6/22/09 : スタイルシートのclassにselect_adminを追加。コメントリンクを修正
  • 1.001 : 6/18/09 : 予備のアップデートファイルを修正, スタイルシートを修正
  • 1.0 : 6/15/09 : Created.