トラブルシューティング

設置がうまくいかなかったら確認してください。


症状:掲示板が表示されない。
設置コードのbbs.jsのアドレスが間違っていないか確認してください。
HTTPヘッダ確認ツールがある場合は、
bbs.jsで404エラーが発生していたらアドレス間違いです。

CGIはcgi-binディレクトリに設置するサーバーでは、
cgi-binディレクトリでは.cgi以外のファイルへのアクセスができない場合もあります。
この場合、bbs.jsのアドレスをブラウザのアドレスバーに入力してアクセスすると403エラーになります。
その場合は、
.htaccess
を作成し、
AddHandler text/html .html
AddHandler text/javascript .js
AddHandler text/javascript .dat
と3行書きこんで保存し、
bbs.jsと同じディレクトリに置いてください。
Windowsでは「.」から始まるファイルは作成できないので、
htaccess.txtなどのファイル名で作成し、アップロード後にファイル名を変更してください。

「.」から始まるファイルはLinux隠しファイルなので、
FTPソフトの設定で、
「隠しファイルは表示しない」
等の設定がされていると見えなくなるので注意してください。



症状:書き込むボタンを押すと404エラー
設置コードのBbsPathの値が間違っていないか確認してください。



症状:書き込むボタンを押すと500エラー
write.cgiのパーミッションに問題があるか、
使用モジュールのDigest::SHAがインストールされていない可能性が高いです。

パーミッションが怪しい場合はとりあえず755にしてみてください。
700でも動く場合は755よりも700のが適切です。

Digest::SHAが怪しい場合は、
write.cgiの8,9,13行目の
$UseTrip=1;
$UseId=1;
use Digest::SHA;
を、
#$UseTrip=1;
#$UseId=1;
#use Digest::SHA;
と行頭に「#」をつけてコメントアウトしてみてください。
トリップとID機能は利用できなくなりますが、Digest::SHAを使用しなくなります。
write.cgiを編集する場合は、
通常は改行コードはLF(Linux形式の改行)にする必要があります。
Windowsのメモ帳では編集できません。
フリーのテキストエディタソフトのほとんどがLinux形式の改行に対応しています。



症状:書き込むボタンを押すと元のページに戻るが、書き込みが見えない。
page/0.datへのアクセスができていない可能性が高いです。

CGI自体は正常なら、書き込み処理自体は完了して、
bbs.dat
page/0.dat
が更新されます。
bbs.datが0byteでなくなっていれば、CGIは正常です。

page/0.datのアドレスをブラウザのアドレスバーに直接入力してみてください。
403エラーとなった場合は、.datへのアクセスができなくなっています。

この場合は、
.htaccess
を作成し、
AddHandler text/javascript .dat
と1行書きこんで保存し、
pageディレクトリのあるディレクトリまたはpageディレクトリ内に置いてください。
Windowsでは「.」から始まるファイルは作成できないので、
htaccess.txtなどのファイル名で作成し、アップロード後にファイル名を変更してください。

「.」から始まるファイルはLinux隠しファイルなので、
FTPソフトの設定で、
「隠しファイルは表示しない」
等の設定がされていると見えなくなるので注意してください。



症状:投稿時刻の表示がおかしい。
日本のPCから表示すれば日本時間が表示されますし、別の地域のPCで見たら現地の時間で表示されます。
時刻がおかしいなら、ブラウザを実行しているPCのタイムゾーンが目的の地域に設定されていないと思われます。

posted by ST at 2011-06-21 19:52 | ページ埋め込み型掲示板(3) | このブログの読者になる | 更新情報をチェックする

メール通知

ページ埋め込み型掲示板(3)のオプションのメール通知です。

基本的には、cronで定期実行させます。
前回実行時よりも掲示板ログファイルが新しい場合はメールを送信します。

[ファイル]
cron.sh
mail.pl
update.dat
全部bbs.datと同じディレクトリに置いてください。

[使い方]
cron.sh
を定期実行。

[設定]
$MailType=0;#現在未使用
$MailFrom='from@example.com';#メール送信元アドレス
$MailTo='to@example.com';#送信先アドレス
$SendMail='/usr/sbin/sendmail';#sendmailコマンドのパス

送信元アドレスは架空の物で送信できますが、
受信サーバーにブロックされる可能性もあります。


ダウンロード
posted by ST at 2011-04-27 18:47 | ページ埋め込み型掲示板(3) | このブログの読者になる | 更新情報をチェックする

管理ツール

ページ埋め込み型掲示板(3)のオプションの管理ツールです。
かなり簡易で不親切なUIです。

[機能]
*投稿の削除。

[設定]
$PassWord='0000';#パスワードです。使用しない場合は空にする。
$PageLength=20;#write.cgiと同じ値を設定。
$RootDir='../';#admin/index.cgiから見たbbs.datのあるディレクトリ。(末尾「/」)
$BbsId=0;#write.cgiと同じ値を設定。

/bbs.dat
/admin/index.cgi
/admin/template.html
のような感じの位置に置いてください。
$RootDirを設定すれば別の配置にもできます。

admin/index.cgi
が管理ツールです。
$PassWordが設定されている場合はパスワードの入力が必要です。
HTTPサーバーの方でadminディレクトリごとアクセス制限しちゃった方がいいかもです。

「削除」リンクをクリックで該当する投稿が消えて再構築されます。


ダウンロード
posted by ST at 2011-04-27 18:01 | ページ埋め込み型掲示板(3) | このブログの読者になる | 更新情報をチェックする

複数設置

同一ページに複数の掲示板を設置する場合はスクリプトを複数用意する必要があります。
別のアドレスに複数用意してください。


設置コード
<script>
BbsPath='スクリプトのあるディレクトリのアドレス';
</script>
<div id="BbsScript"><a href="http://web-sozai.seesaa.net/">ページ埋め込み型掲示板</a></div>
<script src="bbs.jsのアドレス" type="text/javascript" charset="utf-8"></script>
<!--↑1個目用コード-->

<!--↓2個目用コード-->
<div id="BbsScript1"><a href="http://web-sozai.seesaa.net/">ページ埋め込み型掲示板</a></div>
<script type="text/javascript">
BbsPathArray[1]='2個目のスクリプトのあるディレクトリのアドレス';
BbsSet(1);
BbsGet(0,1);
</script>
1個目用コードは通常の設置コードとほぼ同じですが、
本体スクリプトのbbs.js自体は2個目以降の掲示板でも1個目の物を利用するため、
外部スクリプト読み込み完了後に2個目以降を実行する必要があるので、
「defer="defer"」及び「async="async"」がつけられません。(青字行のタグ)
青字行の<script>タグは、2個目以降の設置コードよりも手前(かつ、1個目の<div>タグよりも後ろ)に記述する必要があります。
3個目以降を設置する場合は赤字の部分を変更してください。
1以上の整数で重複不可。
基本的には1からの連番がいいと思います。


2個目以降のwrite.cgiは設定変更をする必要があります。
$BbsId=0;
を、
$BbsId=1;
の様に、設置コードの赤字部分で設定した値にしてください。


↓サンプル

posted by ST at 2011-04-23 07:05 | ページ埋め込み型掲示板(3) | このブログの読者になる | 更新情報をチェックする

デザインの変更

JavaScriptでHTMLを出力しますので、CSSである程度デザインの変更が可能です。


出力HTMLの構造

#BbsScript (全体その1)
 #BbsBlock (全体その2)
  #BbsForm (フォーム)
   #BbsName (名前入力欄)
   #BbsComment (コメント入力欄)
  #BbsContent (書き込み内容全体)
   .BbsContentBlock (書き込み1件。ループ)
    .BbsContentComment (書き込み本文)
    .BbsContentFooter (名前、書き込み時刻等)
     .BbsContentName (名前)
     .BbsContentTrip (トリップ。ない場合はなし)
     .BbsContentTime (書き込み時刻)
  #BbsLeft (前のページリンク)
  #BbsNumber (ページ番号)
  #BbsRight (次のページリンク)

id、classが設定されていないタグもあります。
より詳細な構造はHTMLデバッガ等で確認してください。
posted by ST at 2010-09-02 14:14 | ページ埋め込み型掲示板(3) | このブログの読者になる | 更新情報をチェックする

更新履歴

2012.08.17
自動リンクのURLとして「'」を受け付けていたのを、いくつかの記号をURLと認めなくなりました。
スペースは元々無効でしたので、問題なかったとは思います。
2011.04.23
同一ページへの複数設置ができるようにしました。
2010.09.03
昨日の変更後OpearaとGoogle Chromeでバグが発生してた。修正。
2010.09.02
いろいろ変更。
2010.02.21
CSSに変更した方がいい箇所があったので修正。
2009.10.14
EUC-JPで文字数が少ない場合等に文字コード判別がうまく行かない場合があった。
判別制度が高くなるように修正と、文字コードの指定が可能にした。
2009.10.14
クッキーの保存がうまくいってなかったと思われる。修正した。
cgiに不要コードがあったのを削除した。
2009.10.11
投稿日時の表示にJavaScriptのtoString()を使っていたが、
長すぎるのでYYYY-MM-DD hh:mm表記にした。
posted by ST at 2009-10-11 05:55 | ページ埋め込み型掲示板(3) | このブログの読者になる | 更新情報をチェックする

ページ埋め込み型掲示板(3)

ページの好きな位置にタグを埋め込んで設置する掲示板スクリプトです。
CGIの使えないレンタルブログの記事ページなどでも、
外部にCGIの使えるサーバーがあれば掲示板を設置できます。

ブログの記事ページじゃなくて、サイドバーに掲示板を設置とかもできる。


レンタルブログへの設置について。
<script>タグを使うんですが、
レンタルブログによっては<script>が禁止されていたり、
そもそもHTMLタグが使えない場合があるんで、
そういうレンタルブログでは使えません。
<script>がつかえない場合でも、フレームが使えるなら<iframe>で分離することはできる。


[ページ埋め込み型掲示板(1)との違い]
ページ埋め込み型掲示板(1)は掲示板を設置するページのアドレスに勝手にクエリーストリング(アドレスの末尾に?xxxってつく)がつけられます。
また、掲示板のページ変更の際に元ページごとリロードする。
ページ埋め込み型掲示板(3)はそんなことはありません。

[ページ埋め込み型掲示板(2)との違い]
ページ埋め込み型掲示板(2)は、AJAXと呼ばれる手法で掲示板を埋め込みます。
ページ埋め込み型掲示板(3)はJSONPと呼ばれる手法で埋め込みます。
AJAXってのは、<script>を設置したページと同じドメインにあるファイルにしかアクセスできないため、
掲示板のスクリプトは掲示板を設置したいページと同じドメインにしか置けません。
CGIの使えないレンタルブログなどでは使えないので致命的。
ページ埋め込み型掲示板(3)はCGIの使えないドメインのページでも、
外部にCGIの使えるサーバーがあれば使える。


ページ埋め込み型掲示板(1)
ページ埋め込み型掲示板(2)
ページ埋め込み型掲示板(3)
の中で一番いいと思うんで、今後は1と2は更新しないと思う。


設置ページの文字コードがUTF-8以外の場合に、
Windows10 バージョン1803(2018年7月現在の最新バージョン)のEdgeで接続すると掲示板の投稿内容部分が文字化けするようです。
.htaccess等のサーバー設定で、
AddType "text/javascript; charset=UTF-8" .dat
の様にUTF-8を指定すると化けないようです。


サンプル
設置方法
デザインの変更
トラブルシューティング
更新履歴
ダウンロード


[オプション]
管理ツール
メール通知
posted by ST at 2009-09-08 11:07 | ページ埋め込み型掲示板(3) | このブログの読者になる | 更新情報をチェックする

設置方法

[.cgi]
拡張子がcgiのファイルはCGIです。
要求があったときに実行されるパーミッションをあたえてください。
(一般的に755、700など)
[bbs.dat]
CGIから読み書きできるパーミッションを与えてください。
ブラウザから直接開けるとトリップがバレますので、基本的に600。
(一般的に600)
[page/n.dat]
CGIが書き込めてブラウザが直接開けるパーミッション。
(一般的に644、666など)
[bbs.conf]
CGIが読み込めるパーミッションを与えてください。
(一般的に600など)
[.js]
JavaScriptのファイルです。
ブラウザが読めるパーミッション。
(一般的に644など)

Perlモジュールとして、Encodeを使います。(これって標準もジュールだっけか?)
たぶんPerlがあればあると思います。


設置用タグはサンプルページを確認してください。


設定項目
write.cgi
の最初の方に
$Charset='';
$PageLength=20;
$MaxLine=200;
$MaxComment=3000;
$MaxName=50;
$BbsId=0;
ってのがありますが、これ設定項目です。
$Charset=文字コードの指定。指定がなければ自動判別。(指定する場合、'euc-jp','shiftjis','utf8'など)
$PageLength=1ページあたりのコメント数。
$MaxLine=保存するコメント数。
$MaxComment=書き込み時のコメントの長さの最大数(バイト数)
$MaxName=書き込み時の名前の長さの最大数(バイト数)
$BbsId=複数設置を確認してください。


IDとトリップ
write.cgi
の最初の方に
$UseTrip=1;
$UseId=1;
となっている部分があります。
値が設定されている場合はIDとトリップ機能が有効です。(値が0や''の場合は無効です。)
設定値は、暗号化時の鍵として使われます。1以外の値に変更すると暗号の計算結果が変わります。

機能を使わない場合は、
#$UseTrip=1;
#$UseId=1;
のようにコメントアウトしてください。

use Digest::SHA;
↑この部分はIDとトリップ機能両方を使わない場合は不要です。
モジュールが用意できない場合はコメントアウトしてください。

IDはIPアドレスを暗号化します。名前にカーソルを合わせるとIDを表示します。
基本的に、IPアドレスが別なら違うIDになり、同じなら同じIDになります。(ただし、別IPで同一IDになる可能性はゼロではありません。)

トリップは、名前入力時に「名前#トリップ」の様に入力すると、
トリップの部分を暗号化して表示します。


bbs.conf
bbs.confを編集することで、アクセス制限等が行えます。
改行区切りで1行ずつ設定します。

block:word:禁止ワード
コメントに禁止ワードが含まれる場合書き込みをブロックします。

block:ip:IPアドレス
設定されたIPアドレスからの書き込みをブロックします。
200.200.200.200の様に4桁の場合は完全一致。
200.200.200の様に3桁の場合は上位一致となります。(末尾に「.」は記入しない)

allow:trip:許可するトリップ
allow設定が1行でもある場合、許可されているトリップ以外の書き込みはできなくなります。
複数行に設定することで複数のトリップを許可することができます。
設定値は、暗号化前の値です。
allow設定されていてもblock設定に一致した場合書き込めません。


block:ip:200.200.200.200
block:word:http://
↑上記の場合、
IPアドレスが200.200.200.200の人は書き込めず、
コメント本文に「http://」が含まれる場合も書き込めません。

bbs.confを編集する場合は、UTF-8で保存してください。


名無し設定
設置タグのJavaScript部分(BbsPathの次の行等)で、
BbsNoname='名無し';
の様にBbsNonameを設定すると名無し時にフォーム初期値が設定できます。


page
ディレクトリ以下に
0.dat
1.dat
.
.
.
9.dat
とファイルがありますが、
ファイル数を変更すると最大ページ数が変わります。
0からの連番です。


データの一部を削除したい場合
管理ツールは用意していないので、データファイルを編集する必要があります。
掲示板の表示に使われるデータはpage以下の0.datとかになりますが、
編集困難な形式になっています。
bbs.datが全データで、1行ごと(改行コードは\nなので、Windowsのメモ帳じゃ改行されないかも)になっています。
データファイルを直接編集する場合は、必ずUTF-8で保存してください。
このファイルを編集した上で掲示板に書き込みを行うとpage以下のファイルは再構築されます。
posted by ST at 2009-09-08 10:43 | ページ埋め込み型掲示板(3) | このブログの読者になる | 更新情報をチェックする

サンプル

<script>
BbsPath='スクリプトのあるディレクトリのアドレス';
</script>
<div id="BbsScript"><a href="http://web-sozai.seesaa.net/">ページ埋め込み型掲示板</a></div>
<script src="bbs.jsのアドレス" type="text/javascript" charset="utf-8" async="async" defer="defer"></script>
BbsPath='スクリプトのあるディレクトリのアドレス';にスクリプトのあるディレクトリのアドレスを指定、
http://から指定し、必ず末尾が/で終わるように。
スクリプトが
http://web-sozai.seesaa.net/image/bbs.js
http://web-sozai.seesaa.net/image/write.cgi
の場合、
http://web-sozai.seesaa.net/image/
です。
src="bbs.js"は、
bbs.jsの場所が
http://web-sozai.seesaa.net/image/bbs.js
の場合は
src="http://web-sozai.seesaa.net/image/bbs.js"
です。
適切なものを指定してください。


同一ページに掲示板を複数設置したい場合はこちらを確認してください。


↓サンプル



↑サンプル
posted by ST at 2009-09-08 09:11 | ページ埋め込み型掲示板(3) | このブログの読者になる | 更新情報をチェックする
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。