watermint.org

Takayuki Okazaki's blog

Share on Facebook
Share on GREE
このエントリーをはてなブックマークに追加
はてなブックマーク - 第二次コメントスパム対策

だいぶ前に導入したDid You Pass Mathというコメントスパム対策のプラグインを入れているのですがやはりこれだけではあまりたいした効果がありませんでした。
ただ、コメントスパムはそのほとんどが日本以外からのもので、英語、タイ語、中国語、ロシア語、ドイツ語あたりのコメントでアダルト的なURLだったり、違法なお薬販売だったり、違法コピーの販売案内だったりのコメントがついていました。そこで今回はあらたに「コメントには一切、日本語以外受け付けない!」というポリシーを追加する事にしました。

これを適用すると、URLだけぴろっと貼っているようなコメント、英語や、その他読めない言語のスパムはだいたい防げるだろうという思惑です。WordPressのプラグインの作り方はあまり詳しく知らないのですが、Did You Pass Mathのソースを参考に作り上げました。

ちなみに、コメントが日本語なのかそれ以外なのか?をどういう風に判断しているかというと、PHPのbool mb_check_encoding([string var, [string encoding]]) という関数を使っています。まず、この関数で日本語には無い文字を使っている場合、例えば中国語とか、タイ語とか、は簡単に排除する事ができます。ただ、英語となると日本語の文字列の中にも英語は含まれるので「英語だけで構成されている場合には排除する」というようにしなければなりません。
griphs.png
日本語のコメントは上図のようになっているので、日本語だけか、日本語・英語まじりのコメントだけを受け付けるのであれば次の式が trueになる場合のみコメントを受け付ければ良いことになります。

mb_encoding_check($comment, "EUC_JP")
&& !mb_encoding_check($comment, "ASCII")

(ここではEUC_JPにしていますが、SHIFT_JISとかでも良いと思います。クライアンとがウインドウズであることを想定するならWindows-31Jが適切かも・・・?)

そんなこんなでプラグインは出来上がりました。まだ、できたてで不安なのでもうちょっとテストできたらどこかで公開しようと思います。

No Comments :(