スレッド表示 | フラット表示〕 全トピック 920 件中 292 番目 次≫ ≪前

SBBS Ver.0.200の特定文字列の書き込み拒否

created: 2005-12-27 17:37 | modified: 2006-01-27 13:58 | reply: 6

[2842] SBBS Ver.0.200の特定文字列の書き込み拒否

user: KG | created: 2005-12-27 17:37
SBBS Ver.0.200を使わせて頂いております。

最近、アダルトサイトや悪徳探偵社などから、自動掲示板書き込みソフトを使った投稿が多くて困っています。
”特定IPアドレスからの投稿を拒否”を実行していますが、某企業が提供している、無料接続サービスを使い、全国のアクセスポイントを転々としているので、現状の機能では対処のしようがありません。
そこで、特定文字列の書き込みを拒否したいのですが、掲示板の設定は簡単にできるものでしょうか?
当方、PHPの初心者のため、失礼があるかもしれませんが、ご教授頂けると幸いです。
宜しくお願い致します。
reply: 2860 返信 編集 削除

[2860] Re.SBBS Ver.0.200の特定文字列の書き込み拒否

user: ach | created: 2006-01-17 19:57
機能として備えているかもしれないのであまり大雑把な対応は言わないほうがよいのかもしれませんが・・・
まあ単純な発想としてはPOSTされてきたデータの中に特定の文字があればdieすればいいということで、次のようなコードを先頭につけるといいのではないかと思います
if (isDenied()) die();    //書き込み禁止キーワードに引っかかると強制終了

function isDenied()
{
$post = var_export($_POST,true);
$fp = fopen('keyword.txt','r');
while ($keyword = fgets($fp) {
//キーワードがPOSTの中にあればTRUEを返す
if (stripos($post,$keyword)) {
fclose($fp);
return true;
}
}
//見つからなければFALSE
return false;
}
keyword.txt(禁止キーワード)
http://***
サイト名云々
正規表現を使えるようにしたりといろいろ工夫した方がいいかもしれませんが。
Parent: 2842  reply: 2869 返信 編集 削除

[2869] ありがとうございます。

user: KG | created: 2006-01-19 04:50
ありがとうございます。

とりあえずそのまま_update.phpにコピーして、いろいろしてみたのですが、エラー表示されてうまくいきません。。。
もともとPHPを分かってないので、何が悪いのかも見当が付かなくて。。。
Parent: 2860  reply: 2870 返信 編集 削除

[2870] ゴメソ(編集あり)

user: ach | created: 2006-01-19 15:06
while ($keyword = fgets($fp) {
⇒ while ($keyword = trim(fgets($fp))) {

でもいい加減に作ってますから・・・
PHPが書け無いなら、書ける方に頼んで書いてもらった方が良いかもしれません・・・
Parent: 2869  reply: 2880 返信 編集 削除

[2880] うまくいきません。

user: KG | created: 2006-01-26 21:17
返信が遅くなりましてすいません。

fclose($fp);
ここでエラーが出ているようなのですが、どうしたらよくなるか分からない状況です。

勉強しながら気長に対処していくつもりでしたが、
ファイル名を替えても、すぐに悪徳探偵社からの書き込みがくるようになったので、
掲示板を一時閉鎖しようかとも考えています。。。

もし、何かお気づきの点がございましたら、
また宜しくお願いします。
Parent: 2870  reply: 2883 返信 編集 削除

[2883] SBBSの特定文字の書き込み拒否

user: ゆうじ | created: 2006-01-27 01:59
こんばんわ。乗り遅れた管理人です。

achさん、ありがとうございます。
KGさん、ほったらかしで申し訳ありませんでした。

achさんのコードでいけるはずですが、
_update.php に手を加えるところをまとめさせていただきました。
以下、手直し手順です。

1)achさん作 isDenied関数をサブ関数群に追記。
  キーワードファイルが無い場合の処理と
  stripos を PHP4用に strpos に置き換えました
//==============================================================
// サブ関数群
//==============================================================
//書き込み禁止キーワードをチェック
function isDenied()
{
$file = 'keyword.txt';
$post = var_export($_POST,true);

// 禁止キーワードファイルが無ければ FALSE
if (!is_readable($file)) {
return false;
}

$fp = @fopen($file, 'r');
while ($keyword = trim(fgets($fp))) {
//キーワードがPOSTの中にあればTRUEを返す
if (strpos($post,$keyword)) {
fclose($fp);
return true;
}
}
fclose($fp);
//見つからなければFALSE
return false;
}

// 現在時刻を書式付きで返す(書式例:"Y/m/d H:i:s")
・・・

2)禁止キーワードチェックの実行を追記
// IPアドレスチェック
elseif( ipcheck() )
$Errors[] = "投稿が受け付けられませんでした。";
上のところを下のように書き換え。
// IPアドレス&禁止キーワードチェック
elseif( ipcheck() || isDenied() )
$Errors[] = "投稿が受け付けられませんでした。";

3)禁止キーワードを keyword.txt という名前で保存。
keyword.txt (サンプル:1行1ワード)
探偵
○○○会社
hoge@hoge.com

4)_update.php と keyword.txt を
  sbbs のディレクトリにアップロード。

5)完了

この掲示板に以上の手順で
手を加えて見たところうまく動作しました。
「探偵-社」と入れると拒否メッセージが出ます。
(探偵と社の間の-は実際には不要。
続けて書くと書き込めないので入れただけです。)

もしこれでエラーが出るようならば、
エラーコードを挙げてください。
Parent: 2880  reply: 2884 返信 編集 削除

[2884] うまくいきました!!!

user: KG | created: 2006-01-27 13:58
ゆうじさん、ありがとうございます。
SBBSを使わせて頂いておりますKGといいます。

教えて頂いた通り設定したところ、うまくいきました!!!
自動書き込みソフトを使った悪質な書き込みを、
昨年12月からほぼ毎日されるようになり、
かなりまいっていたのですが、これで安心できます。
キーワードも複数設定できますし、大丈夫だと思います。

achさん、ゆうじさん、ほんとうに本当にありがとうございました!!!
Parent: 2883  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 292 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑