SAK ソフトウェア FAQ - CGI 掲示板
CGI-Perl 掲示板
■返信が少ない場合は、そこそこ綺麗に見えるのですが、返信の返信が深くなる と、どんどんインデントが深くなって見にくくなってしまいます。 そこで、s3mb_e 系列の掲示板では、どんなに返答の返答があってもインデン トは 1 段だけです。 尚、親メッセージを削除してもツリー全体が消えることはありません。
■スクロール数 20 ですと、純粋にメッセージ数 20 でスクロールします。 これは、内部のデータをツリーとして管理していないためです。 極力排他制御を抑制し、データ消失を起こさないための仕様です。
■セキュリティ機能詳細
1. 注釈付削除
・削除時に『注釈付削除』ボタンでタイトルに @delete_message をセット
すると、注釈付きの削除にできます。
こうしておくと、後でゆっくり該当者のセキュリティコードを解析でき
ます。通常削除すると単純に消えてしまいます。
2. 投稿者セキュリティ情報表示
・本文形式表示時に .../w_s3mbix_cgi?dmsg=1&st=21 とかの後ろに更に
&ipid=sysop&ippw=sysmgr
| |_ 管理者 PW
|_ 管理者 ID
とつけると、IP とブラウザ情報、セキュリティコードが表示されます。
.../w_s3mbix_cgi?dmsg=1&ipid=sysop&ippw=sysmgr
.../w_s3mbix_cgi?dmsg=1&st=21&ipid=sysop&ippw=sysmgr
こんな感じに追加指定して enter する。↑
セキュリティコードは、9 桁の数字でユーザ毎に記憶している。
・標準では、常に表示するようにはなっていませんが、どうしても必要な
ら、w_s3mbix.cgi の「if ($ipid eq $sysop and $ippw eq $syspw)」を
検索して、
if ($ipid eq $sysop and $ippw eq $syspw) {
$ipdsp = 1;
}
else {
$ipdsp = 0; #← ここを 1 にします。
}
となっているところを
if ($ipid eq $sysop and $ippw eq $syspw) {
$ipdsp = 1;
}
else {
$ipdsp = 1;
}
とすると、常にセキュリティコードが表示されます。
3. 過去メッセージからの投稿者検索
・IP、ブラウザ情報、セキュリティコードでも検索ができます。
and 検索はできないので、それぞれ、3 回検索して、人間が判断します。
尚、セキュリティコードは違うユーザで重なる可能性もあるので、
誤認には気をつけて下さい。
4. アクセス制限
・セキュリティコードでアクセス禁止にできます。
w_s3mbix.cgi の「if (length($sec) < 9 or length($sec) > 9)」を検
索して、
if (length($sec) < 9 or length($sec) > 9) {
srand(time ^ ($$ + ($$ << 15)));
$sec = sprintf("%09d", int(rand(1000000000)));
}
#else {
# if ($sec eq '000000000' and $blws eq 'Mozilla/4.0 (compatible; MSIE 4.01; Windows 95)') {
# print "Content-type: text/html\n\n";
# print "<HTML>\n";
# print "<P>【警告】</P>\n";
# print "<P>あなたは、アクセス制限に引っかかっています。</P>\n";
# print "<P>偶然の一致と言うこともあり得ます。</P>\n";
# print "<P>身に覚えのないアクセス制限の場合は、</P>\n";
# print "<P>管理者にメールしてアクセス制限を解除してもらって下さい。</P>\n";
# print "</HTML>\n";
# exit(0);
# }
#}
を目的に合うように修正します。
尚、IP での制限は現実的に苦しいでしょう。固定 IP と言うのは少ない
し、プロキシサーバ経由で来るかもしれません。
セキュリティに使えそうな変数は、
$ip ← IP アドレス
$blws ← ブラウザ情報
$sec ← ユーザ毎に記憶している 9 桁のランダムセキュリティコード
$hdc ← ユーザ毎に記憶しているハンドル名
$mdc ← メッセージタイトル
$ms ← メッセージ本文
です。
・単純アクセス制限するには、$sec eq '?????????' の ? に該当者の
9 桁のセキュリティコードを指定し、$blws eq '????????????????????'
に該当者のブラウザ情報を指定します。
そして、コード先頭の # マークをとって、コードを有効にします。
次のコードを参考に修正して下さい。
if (length($sec) < 9 or length($sec) > 9) {
srand(time ^ ($$ + ($$ << 15)));
$sec = sprintf("%09d", int(rand(1000000000)));
}
else {
if ($sec eq '?????????' and $blws eq '????????????????????') {
print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<P>【警告】</P>\n";
print "<P>あなたは、アクセス制限に引っかかっています。</P>\n";
print "<P>偶然の一致と言うこともあり得ます。</P>\n";
print "<P>身に覚えのないアクセス制限の場合は、</P>\n";
print "<P>管理者にメールしてアクセス制限を解除してもらって下さい。</P>\n";
print "</HTML>\n";
exit(0);
}
}
・セキュリティコードでアクセス制限できない場合は、IP を、
http://serv.nic.ad.jp/cgi-bin/whois_gw
http://www.mse.co.jp/ip_domain/
等で、検索し、IP の幅を調べます。
$iprange = '211.133.60.'; に範囲指定できるところまでの IP を指定
し、$blws eq '????????????????????' に該当者のブラウザ情報を指定
します。次のコードを参考に修正して下さい。
「else { }」は使ってないので注意です。
if (length($sec) < 9 or length($sec) > 9) {
srand(time ^ ($$ + ($$ << 15)));
$sec = sprintf("%09d", int(rand(1000000000)));
}
$iprange = '211.133.60.';
if (substr($ip, 0, length($iprange)) eq $iprange and $blws eq '????????????????????') {
print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<P>【警告】</P>\n";
print "<P>あなたは、アクセス制限に引っかかっています。</P>\n";
print "<P>偶然の一致と言うこともあり得ます。</P>\n";
print "<P>身に覚えのないアクセス制限の場合は、</P>\n";
print "<P>管理者にメールしてアクセス制限を解除してもらって下さい。</P>\n";
print "</HTML>\n";
exit(0);
}
・複数ユーザに対して、アクセス制限をかけるなら、if を少し工夫します。
次は、セキュリティコードで複数制限するサンプル。
if (length($sec) < 9 or length($sec) > 9) {
srand(time ^ ($$ + ($$ << 15)));
$sec = sprintf("%09d", int(rand(1000000000)));
}
else {
if (
($sec eq '?????????' and $blws eq '????????????????????') or
($sec eq '?????????' and $blws eq '????????????????????') or
($sec eq '?????????' and $blws eq '????????????????????')
) {
print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<P>【警告】</P>\n";
print "<P>あなたは、アクセス制限に引っかかっています。</P>\n";
print "<P>偶然の一致と言うこともあり得ます。</P>\n";
print "<P>身に覚えのないアクセス制限の場合は、</P>\n";
print "<P>管理者にメールしてアクセス制限を解除してもらって下さい。</P>\n";
print "</HTML>\n";
exit(0);
}
}
・次は、IP で複数制限するサンプル。
「else { }」は使ってないので注意です。
if (length($sec) < 9 or length($sec) > 9) {
srand(time ^ ($$ + ($$ << 15)));
$sec = sprintf("%09d", int(rand(1000000000)));
}
@iprange = ('211.133.60.', '211.133.60.', '211.133.60.');
@blwsinf = ('Mozilla...MSIE...', 'Mozilla...MSIE...', 'Mozilla...MSIE...');
for ($i = 0; $i <= $#iprange; $i++) {
if (substr($ip, 0, length(@iprange[$i])) eq @iprange[$i] and $blws eq @blwsinf[$i]) {
last;
}
}
if ($i <= $#iprange) {
print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<P>【警告】</P>\n";
print "<P>あなたは、アクセス制限に引っかかっています。</P>\n";
print "<P>偶然の一致と言うこともあり得ます。</P>\n";
print "<P>身に覚えのないアクセス制限の場合は、</P>\n";
print "<P>管理者にメールしてアクセス制限を解除してもらって下さい。</P>\n";
print "</HTML>\n";
exit(0);
}
・IP での制限も難しいようならハンドルでと言う手もあります。
「else { }」は使ってないので注意です。
if (length($sec) < 9 or length($sec) > 9) {
srand(time ^ ($$ + ($$ << 15)));
$sec = sprintf("%09d", int(rand(1000000000)));
}
@hdcuser = ('ハンドル1', 'ハンドル2', 'ハンドル3');
@blwsinf = ('Mozilla...MSIE...', 'Mozilla...MSIE...', 'Mozilla...MSIE...');
for ($i = 0; $i <= $#hdcuser; $i++) {
if ($hdc eq @hdcuser[$i] and $blws eq @blwsinf[$i]) {
last;
}
}
if ($i <= $#hdcuser) {
print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<P>【警告】</P>\n";
print "<P>あなたは、アクセス制限に引っかかっています。</P>\n";
print "<P>偶然の一致と言うこともあり得ます。</P>\n";
print "<P>身に覚えのないアクセス制限の場合は、</P>\n";
print "<P>管理者にメールしてアクセス制限を解除してもらって下さい。</P>\n";
print "</HTML>\n";
exit(0);
}
・投稿内容で細かく制限と言うのもできなくありません。
「else { }」は使ってないので注意です。
if (length($sec) < 9 or length($sec) > 9) {
srand(time ^ ($$ + ($$ << 15)));
$sec = sprintf("%09d", int(rand(1000000000)));
}
@msgkeys = ('投稿禁止の言葉1', '投稿禁止の言葉2', '投稿禁止の言葉3');
for ($i = 0; $i <= $#msgkeys; $i++) {
if (index($mdc, @msgkeys[$i]) != -1 or index($ms, @msgkeys[$i]) != -1) {
last;
}
}
if ($i <= $#msgkeys) {
print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<P>【警告】</P>\n";
print "<P>あなたは、アクセス制限に引っかかっています。</P>\n";
print "<P>偶然の一致と言うこともあり得ます。</P>\n";
print "<P>身に覚えのないアクセス制限の場合は、</P>\n";
print "<P>管理者にメールしてアクセス制限を解除してもらって下さい。</P>\n";
print "</HTML>\n";
exit(0);
}
5. 掲示板認証制限
・最悪は、認証機能を設定して、パスワード入力が必須にできます。
(付属の VB6 ツールで修正します。)
この場合、パスワードをお友達にメールしないといけません。
■s3mb_m、s3mb_s、s3mb_b、s3mb_w 系列の掲示板で、トップ左のデザイン画像
を差し替えるとき、画像の高さによっては、ナビゲーションリンクの型くずれ
が発生します。次のとおり調整して下さい。(古いバージョンのみ)
・w_s3mbix.cgi の「sub DspHead2」を検索して、その数行前の
<BR> <FONT size="-1">$titl3</FONT>
</P>
END_OF_HTML_HEAD
と言う箇所を見つけます。1485 行目付近です。
この「</P>」の箇所に必要な個数の「<BR>」を追加します。
↓ のように修正します。
<BR> <FONT size="-1">$titl3</FONT>
<BR clear="all"></P>
END_OF_HTML_HEAD
■掲示板は設置でき、動作もしているが、投稿がエラーになる場合は、フォルダ
にファイル作成権・削除権がない可能性が高いです。
フォルダパーミッションの設定はサイトによって、微妙に違うので明確な回答
ができません。
・テスト的に
cgi-bin/ 777
s3mb/ 777
w_img/ 777
w_s3mb/ 777
w_s3mb_b/ 777
のフォルダパーミッションで投稿できないか確認お願いします。
(必ず、現在のパーミッションをメモしておきましょう。)
これで投稿できれば、投稿可能なぎりぎりまでパーミッション設定を厳しく
します。最低値は、
cgi-bin/ 755
s3mb/ 755
w_img/ 644
w_s3mb/ 666
w_s3mb_b/ 666
あたりです。
■タイトルやハンドルが空白で投稿される場合は、ホームページ容量の限界に達
している可能性があります。
・ホームページ容量を拡張するか、掲示板の最大メッセージ保有件数を少なく
設定してみて下さい。(100 件 → 60 件など)
尚、最大メッセージ数を少なく変更した後、古いメッセージを何件か削除し
て、新規投稿を 1 件して下さい。(整理は新規投稿時にしかされません。)
・@nifty では、表示される空き容量が 1MB を切ると、実際にはファイルラベル
等で限りなく残容量ゼロに近くなっています。
■添付画像がイメージ展開されるか、リンク表示になるかは、アクセスするユー
ザが画像の表示設定をどうしているかによります。
・標準設定のままアクセスしている人には、未読の添付画像はイメージ表示さ
れ、既読分はリンク表示となります。
各々のユーザ単位に未読管理をしますので、投稿後、一定時間が経過すると
リンク表示になるわけではありません。
何日後であろうと、そのユーザが初めて見る画像はイメージ表示されます。
・常にイメージ表示に設定している人には、添付画像は既読分も含めて、全て、
イメージ表示されます。(アクセスユーザ個別の設定です。)
・常にリンク表示に設定している人には、添付画像は未読分も含めて、全て、
リンク表示されます。(アクセスユーザ個別の設定です。)
・掲示板の設置時に画像表示設定のデフォルトを指定はできますが、アクセス
ユーザが任意に自分用の設定を保存できます。
■未読、既読は、各々のアクセスユーザが最後にアクセスしてからの経過時間で
更新されます。
・標準設定のままアクセスしている人には、1 時間後にアクセスすると、最後
にアクセスしていた時間までが既読になります。(正確には 45 分)
1 時間以内の細かなアクセスをずっと続けていると、何時間経過しても既読
にはなりません。最終アクセスから 1 時間以上アクセスが途絶えている必
要があります。
・設定は 0 〜 24 時間できますが、常に -15 分されます。
1 時間は 45 分、2 時間は 1 時間 45 分です。
但し、0 だけは、15 分で既読になります。
0 なら、30 分毎に未読チェック、1 なら、1 時間毎に未読チェックできる
と言うわけです。
・未読管理は、アクセスユーザ単位ですので、A さんは既読でも、B さんにと
っては未読と言うことになります。
■未読検索リンクを設置しておくと、リピータのアクセス者は、新規メッセージ
だけを素早く表示することができます。
・未読検索リンクは、
http://hpcgi?.nifty.com/????/s3mb/w_s3mbdw.cgi?dmsg=1&st=1&dsp=1&dtck=1
と w_s3mbdw.cgi?dmsg=1&st=1&dsp=1&dtck=1 を呼び出します。
「dtck=1」が未読時間を更新して検索しろと言う意味です。
尚、新規アクセス者にとっては全件表示になります。(全部未読なので)
・利用者に親切なリンク設置として、
| 本文形式 | 見出形式 | 未読検索 |
の 3 つがあれば無敵です。
・s3mb_c を使用すれば、未読があるかどうかもマーク表示できます。
| 本文形式 | 見出形式 | 未読検索 | New
|_ 未読があるよマーク
■未読検索「dtck=1」パラメタは、IE の購読巡回でも使用できます。
・購読巡回では、画像、サウンド、ActiveX をダウンロードしないに設定する
のが普通かと思いますが、画像添付掲示板では、画像だけはダウンロードす
るようにして下さい。新規イラストなどをオフラインで表示できます。
■本文形式表示のスタイルもアクセスユーザが個別に設定できます。 ・標準の表示に 1 では、盛り上がりタイプのテーブル表示になります。 ・表示に 2 を指定すると、フラットテーブル表示になります。 ・表示に 0 を指定すると、テキストだけのシンプルな表示になります。
■通常のブラウザから掲示板に投稿処理などをすると、たまに「携帯メニュー」
が表示されることがある。
・CGI サーバの負荷が非常に高いときに、たまに発生するもよう。
携帯ブラウザの判定ルーチンが誤動作するようです。
ブラウザ情報に異常が発生しているものと思われ、CGI では対処不能です。
頻度が高ければ、「i-mode を使用しない」に設定にすると誤動作しません。
Q-【掲示板】 VB 修正ツールの実行ボタンを押しても動かない
■rs3mb330.exe などの VB 修正ツールの「実行」ボタンを押しても動作せず、
エラーメッセージも表示されない場合は、「s3mb CGI フォルダ」の設定が
正しいか確認して下さい。
・「s3mb CGI フォルダ」に「w_s3mbix.cgi の場所を指定して下さい」と表示
されている場合は、隣の「参照」ボタンで、w_s3mbix.cgi を選択して下さい。
直接、テキストボックスにドロップしても OK です。
・「s3mb CGI フォルダ」に「g:\web\cgi-bin\s3mb\」などと表示されていて
もフォルダ構成の変更などで、そのフォルダが存在しないか、w_s3mbix.cgi
がない場合があります。「参照」ボタンで、w_s3mbix.cgi を選択し直して
下さい。直接、テキストボックスにドロップしても OK です。
・サイト仕様によっては、CGI の拡張子を .cgi から別のものに変更されたか
もしれません。この場合は、オリジナルの拡張子でないと VB 修正ツールは
動作しません。同様に CGI ファイル名を変更している場合もオリジナルフ
ァイル名に戻さないと修正できません。(フォルダ名は自由です。)
・修正しようとする CGI ファイルがローカルにない場合は、修正できません。
ネットワークファイルサーバにある場合は、一時的にでもドライブマッピング
されている必要があります。
・w_s3mbix.cgi のタイトル($title) を空白にしてしまうと、情報取得に失敗
したと判断してリプレースできません。
この場合、メモ帳などで、w_s3mbix.cgi の $title を
$title = ' ';
として下さい。
これでも同じ空白を意味しています。
これだと、常に正常にリプレースできます。
Q-【掲示板】 添付ファイルのダウンロードファイル名が CGI 名になる
■s3mb_e、s3cb_e 系列の掲示板で、添付画像や添付バイナリファイルを
ダウンロードしようとすると、ファイル名が CGI 名になる。
・@nifty のように CGI フォルダに直接リンクできない環境では、ファイル
アクセスを CGI 経由で行っています。
従って、ダウンロードファイル名が CGI プログラム名になります。
ダウンロードダイアログで拡張子を除くファイル名部分を変更するか、
ダウンロード後に拡張子を除くファイル名部分を変更して下さい。
別に問題がなければ、そのまま解凍などしても大丈夫です。
■IE などのネットスケープ以外ブラウザによるアクセスでは、本文形式テーブ
ル幅は自動になっていますが、固定することもできなくありません。
・w_s3mbix.cgi の 726 行付近が標準では次のようになっています。
#// メッセージ一覧表示
$tablew1 = " width=100%";
$tablew2 = " width=$tablew%";
if (index($blws, 'Netscape') != -1) {
$tablew1 = ' width=' . $tablewn;
$tablew2 = ' width=' . ($tablewn - 100);
$prefsz = 'size=-1';
}
・ここを次のように修正します。
#// メッセージ一覧表示
#$tablew1 = " width=100%";
#$tablew2 = " width=$tablew%";
$tablew1 = ' width=' . $tablewn; #//← Netscape 処理をコピー
$tablew2 = ' width=' . ($tablewn - 100); #//← Netscape 処理をコピー
if (index($blws, 'Netscape') != -1) {
$tablew1 = ' width=' . $tablewn;
$tablew2 = ' width=' . ($tablewn - 100);
$prefsz = 'size=-1';
}
・そして、40 行目のテーブル幅を調整します。
$tablewn = 600; #//← 固定幅ピクセル数を指定
■上の本文形式テーブル幅固定方法をして、テーブルをセンタリングするには、
次のようにします。
・w_s3mbix.cgi の 858 行付近が標準では次のようになっています。
if ($re == 0 and (@w[1] eq '999' or @w[0] ne $sv)) {
if (substr(@w[0], 0, 15) ge $dtckm) {
$icoimg = $icoimg2;
$ctitle = $ctitle2;
}
if ($dsp) {
if ($gp) { print "</TD></TR></TABLE>$br"; }
print '<TABLE', $tablew1, ' ', $waku, '><TR><TD bgcolor=', $ctitle, '>';
$gp = 1;
$br = '<BR>';
}
else {
print "<HR>\n";
}
}
・ここを次のように修正します。
if ($re == 0 and (@w[1] eq '999' or @w[0] ne $sv)) {
if (substr(@w[0], 0, 15) ge $dtckm) {
$icoimg = $icoimg2;
$ctitle = $ctitle2;
}
if ($dsp) {
if ($gp) { print "</TD></TR></TABLE></CENTER>$br"; }
print '<CENTER><TABLE', $tablew1, ' ', $waku, '><TR><TD bgcolor=', $ctitle, '>';
$gp = 1;
$br = '<BR>';
}
else {
print "<HR>\n";
}
}
・同じく、w_s3mbix.cgi の 998 行付近が標準では次のようになっています。
if ($dmsg eq '1') {
if ($re == 1) {
print "</BLOCKQUOTE>\n";
}
if ($dsp) {
print "</TD></TR></TABLE>";
}
else {
print "<HR>\n";
}
}
・ここを次のように修正します。
if ($dmsg eq '1') {
if ($re == 1) {
print "</BLOCKQUOTE>\n";
}
if ($dsp) {
print "</TD></TR></TABLE></CENTER>";
}
else {
print "<HR>\n";
}
}
■掲示板のカウンタ表示を使用している場合、加算されないときは、
w_s3mbix.cgi と同じ場所に s3mb_cnt.dat と言うカウントファイルが
あります。このファイルパーミッションを 777 にしてみて下さい。
存在していない場合は、ファイル作成権がありません。
手作業で 1234 と言うデータの s3mb_cnt.dat をアップロードして、
テストしてみて下さい。
それでもダメなら、s3mb のパーミッションを 777 にしてみて下さい。
これで動作すれば、カウントアップする最低のパーミッションを試行錯誤
して下さい。(たぶん 666 あたりです。)
・ファイアウォールをお使いなら、ファイアウォールプロックでカウント
されない場合があります。
他のユーザアクセスで増えないか確認してみて下さい。
■設置設定で、返答セパレート設定にしている場合、返答も常に先頭に 新規投稿扱いになります。返答グループ化設定にして下さい。 ■返答グループ化設定の場合でも、返答最大数(標準は 6 個) を超えた 返答は、先頭に新規投稿扱いになります。 w_s3mbix.cgi の $resmax = 6; を変更することで、返答最大数の設定を変更できます。
Q-【掲示板】 メッセージ自動整理数に到達する前に整理される
■投稿メッセージが設定している「メッセージ自動整理数」に到達する前に整理 される場合、容量制限値($dltflmx) に引っかかっている可能性があります。 添付バイナリ(添付画像など) が多いと容量限度が優先されて整理されます。 容量限度の初期値は、1MB(10485760 bytes) になっています。 w_s3mbix.cgi の $dltflmx = 10485760; を少し大きめにしてみて下さい。(単位はバイト) 尚、w_s3mbix.cgi の $dltflmx を修正した後、VB 修正ツールで情報取得、 そのまま実行して下さい。 これで、他の .cgi に含まれる $dltflmx の値が w_s3mbix.cgi の値と 同じになります。 ■その他の原因として、「メッセージ自動整理数」が全ての .cgi で一致して いない場合が考えられます。 これは、VB 修正ツールで情報取得、「メッセージ自動整理数」を再度 100 と 指定して、実行して下さい。これで全ての .cgi のメッセージ自動整理数が 一致します。
■既存の設定値やログを残したまま、最新版にバージョンアップするには、
次のようにします。
・準備として、ローカル PC に現在動作中の .cgi ファイルがなければ
なりません。(普通は、FTP したものが残っていると思います。)
s3cb_e、s3mb_e 系列では、7 本の CGI ファイルが対象となります。
・尚、デザインが微妙に異なる s3cb_e、s3mb_e、s3mb_m、s3mb_s 間での
設定値コンバートはある程度は動作すると思いますが、存在しない画像設定
などがあり正確には出来ません。
この場合は、新規で設定する方が確実です。
新規設定でもログの形式は共通ですので、メッセージはそのまま使えます。
但し、s3cb_e と s3cb_b では、メッセージの色が反対色になっていますの
で、背景色によっては、旧メッセージが非常に見づらくなるかもしれません。
・実作業は、「読んでね.txt」にも書いてある次のとおり行います。
「7」項の動作確認は、7 本の .cgi ファイルだけを FTP アップロードして
行います。
・旧バージョンを既に設置済みのユーザは、標準設定部分を簡単に
アップグレードできます。
1. 旧版の s3mb フォルダを念のためコピーして保存しておく
2. rs3mb340.exe を起動して、旧版の s3mb の情報取得を行う
3. そのまま rs3mb340.exe を終了させずに
4. 新版の s3mb の 7 本の CGI ファイルを旧版の s3mb へコピーする
5. コピーしたら、rs3mb340.exe の実行ボタンを押す
6. 以上で、旧版の CGI の設定が新版に引き継がれます。
7. 動作確認して問題なければ、念のためコピーした旧版は不要です。
■テキスト流し込み投稿を行う場合は、フォームの本文欄に次の書式で流し込ん
で下さい。この時、「本文クリア」ボタンを押して、本文をクリア後に、
クリップボードから、貼り付けると楽です。
フォーム本文欄に流し込んだ後は、「追加」、「返答」ボタンで投稿します。
(利用手引にも記載しております。)
・「hd :」には、ハンドル名を指定します。
・「mail:」には、メールアドレスを指定します。(省略可能)
・「pw :」には、削除時のパスワードを指定します。(省略可能)
・「hp :」には、ホームページ URL を指定します。(省略可能)
・「sub :」には、メッセージタイトルを指定します。(省略可能)
省略すると、新規は「無題」、レスは「re: 返答元タイトル」と自動的に
処理されます。
・メッセージ本文は、「sub :」下の「-----------------------...」の次の
行から開始します。
〜〜〜〜 ↓ ここから ↓ 〜〜〜〜
hd :SAK
mail:
pw :12345
hp :http://sak.cool.coocan.jp/w_sak3/sak3mst.htm
------------------------------------------------------------------------
sub :タイトルをここに書きます
------------------------------------------------------------------------
本文をここに書きます。
あいうえお。
かきくけこ。
〜〜〜〜 ↑ ここまで ↑ 〜〜〜〜
■添付ファイルのローカルにおけるファイル名には、日本語や特殊文字が含まれ ていても問題ありません。 ただ、Windows では許されても UNIX + CGI では誤動作する記号や日本語に 対応していないサーバもあります。 そのため、アップロードしたファイル名は英数字に自動的に整形されます。 例えば、「abあ01.gif」は、「ab__01.gif」に変換されます。 尚、実際のサーバ上のファイル名には、メッセージキーが付加されますので、 同一のファイル名でアップロードしても問題ありません。
Q-【掲示板】 特定ドメイン指定時にハンドル等が表示されない
■投稿時にメールアドレス、ホームページ URL、本文の自動リンクに特定の ドメイン名が含まれると何故か正常に表示されない場合があります。 現在、ドメトンに「.ad.」が含まれている場合、この障害が発生します。 アンカータグがレンポンス時に注釈にブラウザで変換されるようです。 色々と調査してみましたが、CGI 内部では正常なのです。 ・対処法は、w_s3mbix.cgi の 374 行付近に、次の 3 行を追加して下さい。$ms =~ s/</g; $ms =~ s/>/>/g; $mlc =~ s/\.ad\./\.ad(ad_is_half)\./g; //← 行追加 $hpc =~ s/\.ad\./\.ad(ad_is_half)\./g; //← 行追加 $ms =~ s/\.ad\./\.ad(ad_is_half)\./g; //← 行追加 for ($i = 0; $i < 99; $i++) { chomp ($ms); } ・同じく、w_s3mbix_i.cgi の 260 行付近に、次の 3 行を追加して下さい。 $ms =~ s/</g; $ms =~ s/>/>/g; $mlc =~ s/\.ad\./\.ad(ad_is_half)\./g; //← 行追加 $hpc =~ s/\.ad\./\.ad(ad_is_half)\./g; //← 行追加 $ms =~ s/\.ad\./\.ad(ad_is_half)\./g; //← 行追加 for ($i = 0; $i < 99; $i++) { chomp ($ms); } ・他にも支障のあるドメインが発生した場合は同様に 3 行単位で追加して 下さい。
■s3cb_e、s3mb_m 等の掲示板を複数設置する場合、次の点にご注意下さい。
・s3mb/ 配下の w_s3mb/、w_s3mb_b/ は名前変更の必要がありません。
「s3mb/」の部分だけを「s3mb2/」やその他に名前変更下さい。
cgi-bin/
s3mb/
w_s3mb/
w_s3mb_b/
s3mb2/
w_s3mb/
w_s3mb_b/
・s3mb2/ 等の複数設置分の .cgi ソース中のクッキー名指定
「$cknm = 's3mb';」は、基本的に修正の必要はありません。
通常、そのままで、別々のクッキーとして処理されます。
・クッキー名指定「$cknm = 's3mb';」部分は、VB 修正ツールでの一括修正
の範囲に含まれておりません。
従って、ここを修正した場合は、他の 6 本の .cgi も全て同じに手作業で
修正する必要があります。
■本文一覧表示等での画像表示を小さく縮小表示するには、次のようにします。
但し、ブラウザの縮小機能ではけっこう荒れて表示されます。
また、画像そのものは実サイズを読み込みますので、時間的にはまったく変わ
りません。逆に小さな画像の割りには異様に表示が長く感じるでしょう。
・画像の縮小表示は、「<IMG src=$dspimg」部分を検索して、
「<IMG src=$dspimg border=1 width=128 title=クリックでオリジナル\表\示>」
のように修正して下さい。
修正は、w_s3mbds.cgi、w_s3mbdw.cgi、w_s3mbix.cgi の 3 本です。
Q-【掲示板】 regexp *+ operand could be empty at w_s3mbix.cgi line xxxx
■特定のサイトの Perl で、次のエラーが発生するようです。
/<(?:[^>'"]*|(['"]).*?\1)*>/: regexp *+ operand could be empty at w_s3mbix.cgi line xxxx
■問題のコードは、
w_s3mbix.cgi 1618 行付近 $ms =~ s/<(?:[^>'"]*|(['"]).*?\1)*>//g;
w_s3mbfm.cgi 150 行付近 $_ =~ s/<(?:[^>'"]*|(['"]).*?\1)*>//g;
w_s3mbix_i.cgi 1065 行付近 $_ =~ s/<(?:[^>'"]*|(['"]).*?\1)*>//g;
と 3 つの cgi で発生します。
■対処法
・開発環境や @nifty、biglobe では障害が発生していないので、
お使いのサイトの Perl のバージョンによるものかもしれません。
次のように修正してみて下さい。(前方の「*」を 1 個取る。)
w_s3mbix.cgi 1618 行付近 $ms =~ s/<(?:[^>'"]|(['"]).*?\1)*>//g;
w_s3mbfm.cgi 150 行付近 $_ =~ s/<(?:[^>'"]|(['"]).*?\1)*>//g;
w_s3mbix_i.cgi 1065 行付近 $_ =~ s/<(?:[^>'"]|(['"]).*?\1)*>//g;
・上の修正でも解決できない場合は、問題の「/<(?:[^>'"]*|(['"]).*?\1)*>/」
を含む行を「#」でコメントアウトとして下さい。
w_s3mbix.cgi 1618 行付近 #$ms =~ s/<(?:[^>'"]*|(['"]).*?\1)*>//g;
w_s3mbfm.cgi 150 行付近 #$_ =~ s/<(?:[^>'"]*|(['"]).*?\1)*>//g;
w_s3mbix_i.cgi 1065 行付近 #$_ =~ s/<(?:[^>'"]*|(['"]).*?\1)*>//g;
・コメントアウトにすると、自動リンクがそのままレスの元メッセージとして
出てしまいます。
自動リンク(hhtp://...) のあるメッセージにレスすると、<A... タグが
元メッセージに含まれます。
Q-【掲示板】 i-mode 機能での画像表示、アップはできません
■i-mode 機能での画像表示はカットされます。 画像以外の添付バイナリのリンクもカットされ表示されません。 ■i-mode 機能での画像アップはできません。 アップ仕様がわからないため、手が付けられない状況です。
Q-【掲示板】 お知らせメール機能 sendmail エラーメール対策
■お使いの sendmail 環境によっては、お知らせメール送信時にエラーメールが 発生する場合があるようです。 この場合、w_s3mbix.cgi の 1701 行付近にある open(MAIL, "| $ruml -t -f'$rufr'") or $err = 1; を、次のように修正するとエラーメールが発生しないと報告を受けています。 open(MAIL, "| $ruml -t -f $rufr") or $err = 1;
■s3mb_m みろくるボード専用 FAQ は、 Lavender house の みろくるボード FAQ にあります。