Protector でスパム対策

リニューアル後、Wordpressコメントスパムがひどくなってきたので日本語を書けない人には申し訳ないのですが Protector の2バイト文字フィルタ(postcommon_post_need_multibyte.php)を入れてみました。

やってくるスパムの多くが、40文字程度だったので、お約束の様に default value を 100から20に書き換えて、ほとんどの(正当な)投稿までスパム扱いに(^ ^;。(参考

Wordpress のコメント用に

'comment' => 2,

を加えたのですが、相変わらず 2 バイト文字入りの投稿まではじかれてしまいます。

調べていったところ、どうも strlen( $data ) の値と mb_strlen( $data ) の値が等しいと判断されている模様。mb_internal_encoding() で調べてみると ISO-8859-1(Latin-1)になっているみたい($data の encoding は UTF-8)。

coreserver.jp の設定が悪いのか?よくわからないんですが、とりあえず

if( strlen( $data ) == mb_strlen( $data ,mb_detect_encoding($data)) 

のように encoding を指定して正常動作になりました。

phpinfo() で mbstring.internal_encoding を見ると UTF-8 になっているので良さそうなんだけどなあ。

追記(9/12):XUGJでGIJOEさんから回答いただきました。