ということで鬱陶しいので何とかする。パッと思い付いたのは一度に投稿できる「http」の数を制限する方法。コメントスパムには大量のURLが書かれている事が多い。他にもないかなと調べてみると、リファラで自サイト以外からの書き込みを拒否するやり方がメジャーらしい。偽装されたら意味無いだろうけど。
このサイトは ppBlog1.4.3 で構成されています。その modules/comment.php の適当な場所にこんなコードを書いてみた。
///// コメントスパム対策 ////// if(!ADMIN){ //httpの数が多いと弾く if(substr_count(strtolower($c_com), 'http') >= 4){ print "「http」が4つ以上ある文章は書き込めません"; exit; } //携帯はチェックしない if(!preg_match('/docomo|up\.browser|j\-phone|softbank|vodafone|pdxgw|astel|l\-mode/i',$_SERVER['HTTP_USER_AGENT'])){ //記事のURL以外からは拒否 if(!stristr($_SERVER['HTTP_REFERER'], ROOT_PATH.'index.php?UID='.$UID)){ print "どこからコメントしてるの?"; exit; } // ブラウザの言語設定で、日本語が含まれていないと拒否 // 入力内容に日本語が入っていても、弾く if(!stristr($_SERVER["HTTP_ACCEPT_LANGUAGE"], "ja")){ print "鎖国してます"; exit; } }}おぉ、スパムを弾くことに成功。PHP初心者向けプログラミングサイトを見て頑張った甲斐があった。最新の v1.6 系ではこういうの無くても大丈夫なのかな?
しばらくこれで様子を見る。
11:30 pm | コメントする |
1. くま (Website) 2007/09/07 20:06
教えていただけるとありがたいです。
2.
Sawa 2007/09/07 22:24
くまさんは 1.5RC でバージョンが違うため正確には言えませんが、modules/comment.php の半分より下ぐらいにある
switch ($mode){
case 'cast_comment' :
の真下に書けば良いと思います。
ただ、1.5.3以前にはコメントスパムを弾いてもコメントが1個あると表示されるバグがあって、イヤンな感じだったりします。