掲示板への宣伝・スパム投稿対策

はてなブックマークに追加はてなブックマーク Yahoo!ブックマークに登録 ニフティクリップに追加 Livedoor クリップに追加 BuzzurlにブックマークBuzzurlにブックマーク Twitterに投稿  

当ブログには、掲示板を設置しています。
PHPで書いている自前の掲示板なのですが、ここのところ宣伝やら英語の訳分からんスパム投稿などで困っていました。

そこで、簡単な仕組みで、特定のキーワードを含む投稿を禁止するコードを書いてみた。
簡易的なスパムフィルターの導入といったところです。
以下、そのコード。

// NGワード定数(禁止ワードを、半角「,」で区切って指定)
define(NGWORD, "出会い,カジノ,風俗,ギャンブル");
 
/*
* 投稿ブロック関数
*    $post : POSTされたフォームフィールド。
*    $ng   : NGWORD(半角「,」で区切られた禁止ワードの定数)
*/
function post_block($post, $ng) {
    $ngs = split(",", $ng);
    foreach ($ngs as $n) {
        if (strpos($post, $n) !== FALSE) {
            exit();
        }
    }
}
 
/*
* サンプルコード
* コメントを投稿するフォームのフィールド名がcommentの場合。
*/
post_block($_POST['comment'], NGWORD);

禁止ワードを、「,」(半角コンマ)で区切って設定し、POSTされたフォームフィールドと禁止ワードを引数にとるpost_block関数を定義。
post_block関数では、禁止ワード定数(NGWORD)を「,」で分割して配列にした後、POSTされた文字列に、禁止ワードが出現しないかどうかをstrposで判定し、出現したらexitでスクリプト停止するようにしてます。
POST情報を受け取り処理を行うファイルの先頭で、post_block関数を呼び出すようにすればOK。

とりあえず設置して3日ほど経ちますけど、今のところスパム投稿を無事にブロックできているみたいです。
掲示板の書き込みでなにか不具合がありましたら、お手数ですけどご連絡くださるとありがたいです。


日時: 2008年10月17日 23:07
コメントを投稿






この記事にトラックバックされる方は、参照先が分かるようにするために、「掲示板への宣伝・スパム投稿対策」へのリンクをお願いいたします。
以下のHTMLタグをトラックバック送信元ページ内に挿入して下さい。



※この記事へのリンクがない、また関連のないページからのトラックバックは反映されませんので、ご了承下さい。