CGI-BBS > 電子掲示板 > 簡易BBS > 簡易BBS2000の改造で英字のみの投稿を禁止したい。


カレッヂ
カレッヂ


質問者 いし  投稿日 2007/2/7(水) 11:16:17
簡易BBS2000のv1.02を使わせていただいています。
MiniBBS-EX V1.30での対策を参照して改造を試みましたが、うまくできません。
簡易BBS2000の場合の英字のみの投稿の禁止の改造方法を教えていただけませんか。

【習熟度】多少の改造ができる

回答者 きび  [削除]  投稿日 2007/2/8(木) 13:43:42
サブルーチンsub Write_Message{}内の
629行目あたりに以下の一行をブチ込んでみて様子を見て下さい。

	if ($in{'VALUE'}  !~ /[\x80-\xff]/ ) { &Error("全角文字が含まれていない場合は投稿できません."); }

これで非アスキー文字(日本語など)がないコメントはエラーになると思います。
間違っていたらゴメンナサイ。
回答者 J.C  [削除]  投稿日 2007/2/8(木) 16:28:16
自分も同じような投稿被害があり悩んでおりました。
色々と対策した中で自分では一番有効だったのが投稿時に特定のコードを入力する方法です。

423行目辺り

	<tr>
	<th bgcolor=#ff9966>パスワード</th>
	<td><input type=password name="PASSWD" value="$COOKIE{'PASSWD'}" size=10> <font size=-1>←あなたが投稿しようとしているこの記事を削除するためのパスワードです</font></td>
	</tr>

→	<tr>
→	<th bgcolor=#ff9966>認 証</th>
→	<td><input type=ninsyou name="NINSYOU" value="$COOKIE{'NINSYOU'}" size=10> <font size=-1>「9999」と入力してください</font></td>
→	</tr>

	<tr>
	<td bgcolor=#ff5555 align=center colspan=2><font size=-1 color=#ffffff><input type=checkbox name="cookie" value="1" checked>設定保存</font>  <input type=submit value="  ○ 投稿  "> <input type=reset value=" × リセット " onClick="message(); return f"></td>
	</tr>



633行目辺り
	if ($in{'TITLE'} eq '') { &Error("未記入があります","タイトルを入力してください."); }
	if ($in{'VALUE'} eq '') { &Error("未記入があります","本文を入力してください."); }
	if ($in{'PASSWD'} eq '' || $in{'PASSWD'} =~ /\W/ || length($in{'PASSWD'}) < 6) { &Error("未記入があります","6文字以上のパスワードを半角英数字で入力してください.","あなたが今投稿しようとしているこの記事を削除するためのパスワードです."); }

→	if ($in{'NINSYOU'} ne '9999') { &Error("エラー","エラー"); }

矢印「→」の行を追加するとパスワード欄の下に「認証欄」ができます。
そこに特定のコード(今の場合は'9999')を入力しないとエラーになる仕組みです。
'9999'は英字でも大丈夫かと思いますし質問形式でも良いと思います。
例として「'時計'をローマ字で入力してください」→「TOKEI」とか。
このやり方で日に20〜30くらい来ていたスパムが全くなくなりました。
ちなみに当方はCGI知識に関しては少し流用できる程度なので
効果はあっても、このやり方で正しいのかはわかりません。
あくまでも自己責任でお願いします。
質問者 いし  [削除]  投稿日 2007/2/8(木) 16:45:05
きびさん

ご回答ありがとうございました!

さっそくこの方法でチャレンジして様子を見てみます。
質問者 いし  [削除]  投稿日 2007/2/8(木) 16:49:39
J.Cさん

ご回答ありがとうございました。
J.Cもお悩みでいらっしゃったのですね。

「投稿時に認証キーを入力する」やりかたならば、
ロボット型スパム投稿は防げそうですね。

チャレンジしてみます。

どうもありがとうございました。

このページは終了したので返信(回答)は書きこめません
 


Web裏技