蓄々一行掲示板 v2

特徴

  • SSIなどでHTMLに埋め込み可能な一行掲示板CGIスクリプトです。
  • Shift_JIS、EUC、JIS、UTF-8での出力に対応しています。
  • デザインを自由にカスタマイズすることが出来ます。
  • 書き込みの並び順を選択することが出来ます。
  • 書き込みの削除、復活が行えます。
  • HTMLでも、XHTMLでも記述可能です。CSSも適用できます。
  • 一度入力された名前をクッキーに保存し、次回アクセス時に参照することができます。

利用条件

ダウンロード

ChangeLog

  • rev1.9 utf8に対応した。頂いている要望を変更した。(2003-12-05)
  • 頂いている要望を追記。(2003-11-19)
  • rev1.8 クッキーの使用を選択できるようにし、使用しない場合は完了ページを出さないようにした。(2003-05-28)
  • FAQを追記。(2003-05-13)
  • infoseek iswebでのご利用についてを追記。(2003-04-26)
  • rev1.7 完了ページのデフォルトデザインにmeta refreshを追加。設定項目にリフレッシュまでの秒数を追加。(2003-03-27)
  • rev1.6 名前をクッキーに保存・参照機能、メッセージ並び順変更機能、書き込み完了ページを追加。(2003-03-26)
  • rev1.5 conf.cgiの記述ミスを修正。(2003-03-18)
  • rev1.4 管理ログインページの記述ミスを修正。(2003-02-10)
  • rev1.3 conf.cgiの管理ページのスタイルシート設定項目を無効にし、管理ページで表がウィンドウからはみ出て表示される問題を修正。(2003-01-08)
  • rev1.2.1 管理ページに書き込みフォームを追加。自動リンクのtarget属性設定を追加。(2002-12-26)
  • rev1.2 日付が1ヶ月遅れて表示される問題を修正。(2002-12-23)
  • rev1.1 公開。(2002-12-19)

スクリプトの修正

bbs.cgi

#!/usr/bin/perl

conf.cgi

# 蓄々一行掲示板 v2 設定ファイル
# このファイルの文字コードはshift_jisで保存して下さい。
#
#____設定ここから

# 管理パスワード(必ず設定して下さい)
$conf{'password'} = '';

# 掲示板のタイトル(logview、adminで使用されます)
$conf{'title'} = '一行掲示板';

# 出力する文字コード ( sjis , euc , jis , utf8 )
# 埋め込み先のHTMLの文字コードと同じにしてください
$conf{'charset'} = 'sjis'; 

# 設置するURL ( httpから全て記述してください )
$conf{'return_url'} = 'http://';

# bbs.cgiのURL
$conf{'cgi'} = 'http://***/cgi-bin/1linebbs_v2/bbs.cgi';

# 埋め込み時の表示件数
$conf{'viewline'} = 8;

# logview時の表示件数
$conf{'viewline_logview'} = 30;

# 埋め込み時のメッセージ並び順
# 0 ... 新しい順
# 1 ... 古い順
$conf{'vieworder'} = 0;

# logview時のメッセージ並び順
# 0 ... 新しい順
# 1 ... 古い順
$conf{'vieworder_logview'} = 0;

# cookieの使用(使用すると完了ページが出るようになります)
# 0 ... 使用しない
# 1 ... 使用する
$conf{'use_cookie'} = 0;

# 完了ページから自動で戻るまでの時間 (秒)
$conf{'refresh_time'} = 5;

# 自動リンクをする ( 1 = on )
$conf{'autolink'} = 1;

# 自動リンク時に置換する名前(空の場合はURLがそのままリンクされます)
$conf{'urlreplace'} = '';

# 自動リンク時のtarget属性の値(空白以外の場合にtarget属性が挿入されます)
# 例:_blank  ... 新規ウィンドウ
#     _top    ... 親フレーム
$conf{'target'} = '';

# 書き込める名前+文章の最大長(単位:byte)
$conf{'maxlength'} = 512;

# 連続書き込み停止時間(単位:秒)
$conf{'stoptime'} = 10;

# ログの最大保存件数(多いほどサーバーに負荷がかかります)
$conf{'maxlog'} = 300;

# サーバーとの時差(単位:秒)
$conf{'timediff'} = 0;

# 全体のデザイン
# {cgi}          ... cgiのURL
# {message_list} ... 書き込み一覧
# {navi}         ... logview時のナビゲーション表示
# {cname}        ... cookieから読み出した名前
$conf{'html_body'} = <<"EOM";
<div style="font-size:82%;background-color:#fff;border:1px solid #666;padding:1ex">
<form action="{cgi}" method="post" name="ob" style="margin:0">
<p style="margin:0">
Name:<input type="text" name="name" size="8" value="{cname}" style="border:1px solid #888">
 Message:<input type="text" name="text" size="40" value="" style="border:1px solid #888">
 <input type="submit" value="write" style="color:#000;background-color:#ccc;border:1px outset #888">
<input type="hidden" name="mode" value="write">
</p>
</form>
<hr style="height:1px;color:#aaa;border-style:dotted">
{message_list}
{navi}
<p style="margin:0;text-align:right">
<a href="{cgi}?mode=logview">logview</a>
 / <a href="{cgi}">admin</a>
 / Script made by <a href="http://www.akiyan.com">蓄積 akiyan.com</a>
</p>
</div>
EOM

# 書き込み1行のデザイン
# {name}   ... 名前
# {text}   ... 文章
# {YEAR}   ... 4桁年
# {year}   ... 2桁年
# {mon}    ... 月
# {mday}   ... 日
# {hour}   ... 時
# {min}    ... 分
# {sec}    ... 秒
# {number} ... 書き込み番号
$conf{'html_message'} = <<"EOM";
<p style="margin:0">
[<span style="font-weight:bold">{name}</span>] {YEAR}/{mon}/{mday} {hour}:{min} No.{number}<br>
{text}
</p>
<hr style="height:1px;color:#aaa;border-style:dotted">
EOM

# logviewの全体のデザイン(charsetは必ずshift_jis)
# {title}      ... タイトル
# {body}       ... 書き込み一覧
# {return_url} ... 埋め込むページのURL
$conf{'html_logview'} = <<"EOM";
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Trasitional//EN">
<html lang="ja">
<head>
<meta http-equiv="content-type" content="text/html; charset=shift_jis">
<meta http-equiv="content-style-type" content="text/css">
<title>{title}</title>
</head>
<body>
<h1 style="font-size:100%;margin-bottom:1ex;text-align:center">{title}</h1>
{body}
<p style="font-size:82%"><a href="{return_url}">Return</a></p>
</body>
</html>
EOM

# logviewでのナビゲーションのデザイン
$conf{'html_navi'} = <<"EOM";
<p style="margin:0"><a href="{cgi}?mode=logview&start={start}">Next Page</a></p>
EOM

# 書き込み完了ページのデザイン
# {title}        ... タイトル
# {return_url}   ... 埋め込むページのURL
# {refresh_time} ... 完了ページから自動で戻るまでの時間
$conf{'html_write_finish'} = <<"EOM";
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Trasitional//EN">
<html lang="ja">
<head>
<meta http-equiv="refresh" content="{refresh_time};url={return_url}"> 
<meta http-equiv="content-type" content="text/html; charset=shift_jis">
<meta http-equiv="content-style-type" content="text/css">
<style type="text/css">
h1 { 
 font-size:100%;
 font-weight:bold;
 margin:0;
}
body {
 padding:1%;
}
</style>
<title>{title}</title>
</head>
<body>
<h1>{title} 書き込み完了</h1>
<hr>
<p style="text-align:center;line-height:3em">
<span style="font-weight:bold">{title} への書き込みが完了しました。</span><br>
{refresh_time}秒後に自動で元のページへ戻ります。<br>
(環境によっては自動で切り替わりません)</p>
<p style="text-align:center"><a href="{return_url}">戻る</a></p>
<hr>
<p style="text-align:right"><a href="{cgi}?mode=logview">logview</a>
 / Script made by <a href="http://www.akiyan.com/">蓄積 akiyan.com</a></p>
</body>
</html>
EOM

#____設定ここまで

重要な設定項目

#!/usr/bin/perl
プロバイダで定められたPerlへのパスを指定します。よくある例としては #!/usr/local/bin/perl もしくは #!/usr/bin/perl です。
$conf{'password'} = '';
管理パスワードです。必ず設定してください。空の場合は管理ログインで警告が出ます。
$conf{'charset'} = 'sjis';
埋め込み先のHTMLの文字コードと同じにしてください。異なる場合は、文字化けしてしまいます。
$conf{'return_url'} = 'http://';
埋め込まれるページのURLを、httpから全て記述してください。
$conf{'cgi'} = 'http://***/cgi-bin/1linebbs_v2/bbs.cgi';
bbs.cgiのURLを、httpから全て記述してください。

ディレクトリ構成例

  • public_html/
    • [755] 1linebbs_v2/
      • [755] bbs.cgi
      • [644] conf.cgi
      • [666] log.cgi
      • [644] Jcode.pm
      • [755] Jcode/
        • [644] すべてのファイル
        • [755] Unicode/
          • [644] すべてのファイル

使い方

HTMLに記述するタグの文法
<!--#include virtual="パス/bbs.cgi?mode=latest" -->
記述例
<!--#include virtual="./cgi-bin/1linebbs_v2/bbs.cgi?mode=latest" -->
書き込みの管理
bbs.cgiを開くか、掲示板下部のadminリンクを開いて下さい。
掲示板に直接リンクする場合の記述例
<a href="http://www.akiyan.com/cgi-bin/1linebbs_v2/bbs.cgi?mode=logview">BBS</a>

特殊な使い方

管理人だけが書き込み出来るようにする
conf.cgiのデザインで<form>タグから</form>タグまでを削除します。書き込みは管理ページから行えるので、管理人だけが書き込めるようになります。

infoseek iswebでの利用について

infoseek iswebでは、トップページでのssiによるcgi埋め込みは、他サイトから訪れたユーザーに対しては全てエラーとなってしまいます。infoseek iswebでは他サイトからのリンクでcgiを直接開けないように、httpサーバーに仕掛けを施してあるからです。これは、ssiでcgiを埋め込んだ場合も同様です。

例えば、蓄積 akiyan.comからinfoseek isweb内のページへリンクを設置します。そしてそれを開いた場合、埋め込みcgiはエラーとなってしまうでしょう。検索エンジンから開いた場合も同様です。ブラウザから埋め込みcgiのあるページを直接開いた場合と、(infoseekドメインの)サイト内でリンクを開いた場合はエラーにはなりません。

仕組みはブラウザがサーバーへ渡す環境変数の一つである HTTP_REFERER をサーバーが確認し、それがinfseek isweb以外であったときにcgiを動作させないようにしている様子です。(2003-04-26現在)

蓄々一行掲示板を使用する際はトップページ以外が望ましいですが、それでも直接そのページへリンクされた場合はエラーになりますので、完全な回避はできないといえます。

FAQ

HTMLに埋め込もうとしていますが、うまくいきません。
HTMLに埋め込ませるためには、一定の条件を満たしている必要があります。まずはとほほのSSI入門や、Apache チュートリアル: Server Side Includes 入門をお読み下さい。
タグは使えますか?
タグは全く使えません。

不具合報告や要望などは

メールフォームからご連絡ください。ただし、要望は頂いた要望と返答に無い場合に限ります。

頂いた要望と返答

タグを使えるようにしてください。
蓄々一行掲示板v2ではタグを許可する機能はつけません。
文字色を選べるようにして下さい。
蓄々一行掲示板v2では文字色を選ぶ機能はつけません。
画像のアップロード機能、画像の表示機能をつけてください。
蓄々一行掲示板v2では画像のアップロード機能、画像の表示機能はつけません。