【WordPress】Contact Form 7 でスパムメール対策。訳あってバージョンアップが出来ない古い WordPress で…

大量のスパムメールが届く

クライアントワークで問題発生。
Contact Form 7 で作成したメールフォームから、大量のスパムメールが届くとのこと…。
メールサーバーを確認させてもらったところ、海外からのスパムメール!英語でもない文字で大量に届いていました。

対策を考える

最新の WordPress と Contact Form 7 であれば、対策は色々出来るのですが、今回のお客さんは WordPress 3.5 を使用中。
訳あってバージョンアップが出来ません(T_T)
いや、、こちらとしても最新版に更新したいのですが…

そこで考えた結果、フォーム内の textarea に「日本語」の記述がないと送信できないように設定をすることにしました。
functions.php に以下のコードを追記します。

日本語がないとだめだめコード

/* =================================
  お問合せフォーム、日本語がないとだめー!
================================= */
function wpcf7_validation_textarea_kana($result, $tag)
{
    $name = $tag['name'];
    $value = (isset($_POST[$name])) ? (string) $_POST[$name] : '';

    if ($value !== '' && !preg_match('/[ぁ-ん]/u', $value)) {
        $result['valid'] = false;
        $result['reason'] = array($name => 'この内容は送信できません。');
    }

    return $result;
}
add_filter('wpcf7_validate_textarea', 'wpcf7_validation_textarea_kana', 10, 2);

 

上のコードでは、「この内容は送信できません。」というエラーが表示されますが、ここはお好みで「日本語がないと送信できません」とかに変更してください。
このコードを書いてから、スパムメールがなくなりました。
たまにカタコトの日本語で来ますが(笑)

恐るべし、スパム技術

少し前までは、チェックボックスを追加して、必須項目にすればスパム対策できていたのに、最近のスパムロボットは賢くてチェックまで容易に付けちゃいます…
数年後には、海外製でも日本語を打ってきたりするのかも…?
その前にはきちんとバージョンアップをして安心安全なHPを構築していたいものです。。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA