コメントスパム対策!日本語を使用していない投稿を拒否
オープンソースのCMSである「baserCMS」でサイト構築したんですが、
設置したブログからさっそくコメントスパムが…
最近のスパムってやつは、意味のない英語文字列だけ打ってきたりするんですよね。
何の意味があるのか…。
それだけなら半角英数のみの投稿を弾けばいいんだけども、巧妙に全角スペース1文字入れてきたりする。
キィーッ(#・∀・)
ということで、正規表現を用いて
全角文字(日本語)を連続2文字以上入れないと投稿できない!
としてみます。
国内向けサイトなので、普通にコメントすれば自然と2文字以上は入力するでしょう。
当然ですが日本語のスパムは防げません…。
今回はbaserCMSの例でやりますが、あらゆるフォームで応用出来ると思います。
やり方はわからないけど(笑)
下記ファイルを編集
/baser/plugins/blog/models/blog_comment.php
'message' => array( array( 'rule' => array('notEmpty'), 'message' => "コメントを入力してください。") )
この部分を、
'message' => array( array( 'rule' => array('custom','/[ぁ-んァ-ヶー一-龠、。!?]{2,}/u'), 'message' => "コメントを入力してください。") )
と変更します。
説明
ぁ-んァ-ヶー一-龠、。!?
この部分が許可する文字の範囲。
ひらがな、カタカナ、漢字、句読点、ー!?
数字も許可範囲に入れたいって場合は、0-9や0-9を追記する。
二字熟語が入っていれば許すって場合は、一-龠のみにする。ひらがな、カタカナのみの投稿はお断り。大人向け(?)
{2,}
上記範囲内の文字を2回以上繰り返せばOKという意味。
50文字未満のコメントなどコメントではないという場合は、{50,}とすれば完璧です。ハードルの高いサイト向け。
動作確認
こちらを使わせていただきました。
preg_match()正規表現チェッカー
正規表現の欄に「/[ぁ-んァ-ヶー一-龠、。!?]{2,}/u」と入れて色々な文字列でチェック!
baserCMSについて
シンプルで使いやすいCMSです。
ファイル構成がわかりやすく、私のようにあまりプログラムがわからない人にも優しめ(^O^)