最近の投稿プラグインを入れてみて、よく昔の記事に海外のポーカーサイトとかのコメントスパムがついてることがよくわかったとです。どうしたものかなぁ、と思ってたんですが。
無思考雑記帖 さンのところではリンク先のように正規表現で ASCII コードの文字のみのコメントを NG にしてるんですけど、わたしの場合はそこまですることはないかなぁ、と思って rNote のデフォルトでも存在する「記録しないリファラ」の機能を応用することに。
rnote_config.php に $ng_comment[]='poker';みたく NG ワードを追加して、rnote.php の Writeback 関係のあたり(520行目くらいからかね)に以下のように追記する。追記するのは global $ng_comment; と foreach 文の3行の計4行。
//=====================================
// WriteBack
function WriteBackSave(){
global $g_bCellphone;
global $ng_comment;
(19行ほど略)
$name = form_treatment($name ,FORM_CONVENC_AUTO,true,true);
$wburl= form_treatment($wburl,FORM_CONVENC_AUTO,true,true);
$com = form_treatment($com ,FORM_CONVENC_AUTO,false,false);
foreach($ng_comment as $n) if(ereg($n,$name)) return;
foreach($ng_comment as $n) if(ereg($n,$wburl)) return;
foreach($ng_comment as $n) if(ereg($n,$com)) return;
(以下略)
こうすることで名前、URI、コメント本文のいずれかに NG ワードがあった場合、「書き込みは終了したかのように見えてログファイルへの書き込み前に関数から抜けている」ので書き込みはない。別にエラー画面に遷移させてもいいとは思うけどめんどいのでこんな感じで。
万全を期するなら NG ワードに関して名前、URI、本文別々に用意したほうがいいかもしれないけど( $ng_comment_name とか)、まぁ、オンラインカジノがらみのコメントスパムならこれで対処できる、といいなぁw














