本文ノートソース差分2chBBSでのスパムフィルタリング当然ですが、掲示板の数が増えるに従ってスパムの数は多くなり、輪をかけて管理がやりづらくなってしまいます。そこで、2chBBSを使った掲示板に対するレスの投稿に、akismet.inc.phpを使って、スパムフィルタリングをかける方法を紹介します。(他の掲示板プラグインにも応用できると思います)前提として、AkismetとreCAPTCHAへの登録が済んでいることとします。動作確認plugin/akismet.inc.phpの編集プラグインとして、スパムフィルタリングを行う主体となるのがakismet.inc.phpの中で定義されている関数spamfilter()です。そのままの状態では、cmd=readを変数として渡された場合にはフィルタリングをしないように設定されており、その変数を渡してしまう掲示板への書き込みに対して有効になっていません。そこで、オリジナルでは以下のようになっている部分(300行目前後)を書き換えます。いう記述を下のように書き換えると、掲示板が投げる固有の変数(sub)を拾って、cmd=readが渡されたとしてもスルーしなくなります。return;}ここでついでに、特定のコマンドが投げられた時にフィルタリングをさせないための記述(60行目前後)を以下の様な記述に変更しておくと、bbsadmin.inc.phpがポスト変数を投げてもフィルタリングしないようになります。ちなみに、cmdではなくpluginで呼び出す場合にはcmdの部分をpluginに変更します。次に、bbs.inc.phpはpost()という関数でコメントを投稿するようになっているので、この関数が宣言されている部分(恐らく60行目前後)を見つけ出し、akismet.inc.phpで定義されている関数spamfiter()を呼び出すように、以下の様な感じで書き直します。終了lib/pukiwiki.phpの編集こちらのページで紹介されている方法に従えば、恐らく70〜90行目あたりlib/pukiwiki.phpは以下のように書き換えられているはずです。終了この場合、akismet.inc.phpの設定でcmd=readでかつ掲示板が投げる固有の変数がある場合にはスルーしないように設定しているので、コメントの投稿の場合に重複してspamfiter()が呼び出されてしまいます。それは動作速度上マズいので、以下のように書き換えて、掲示板固有の変数(BBS_NAME)が設定されている場合にはpukiwiki.phpを通してspamfiter()を呼び出さないようにします。スパムフィルタリングの設定は完了です。スパムっぽい書き込みではじかれるかどうか試してみて下さい。akismetがスパムと判断すると、右の様な認証画面が表示され、キーワードを入れると投稿できるようになっています。これが表示されない場合は、変数の設定など、変更したプログラムのどこかに問題があるか、スパムがフィルターをすり抜けることができたということです。