解決】Contact Form 7(コンタクトフォーム)に海外からスパムが沢山くる。日本語以外のお問い合わせをエラーにする方法
Contact Form 7、便利なのですが、出回ってるだけあって自動でスパムを送信する方法も確立されてるそうです。
一度、スパマーにサイトが見つかると、延々とスパムメールや、踏み台にして他の人にスパム行為を繰り返します。
なので「お問い合わせ内容欄」に日本語がふくまれていなければエラーとすることにしました。
お問い合わせ欄(your-message)に日本語が含まれないをどう判断するか?
「日本語が含まれない」というのをプログラムで判定するのは中々難しいです。
なので単純に「英数字だけだったらエラー」とすることにしました。
実装はこんな感じです。
ワードプレスのテーマのfunctions.phpに記述すれば、お問い合わせ欄が英数字のみならエラーにしてくれます。
function wpcf7_validate_extend_mycheck( $result) {
if( preg_match( "/^[0-9A-Za-z]*$/" , $_POST['your-message'] ) ){
$result->invalidate( 'your-message', 'お問い合わせ内容は日本語でお願いします。');
}
return $result;
}
add_filter( 'wpcf7_validate', 'wpcf7_validate_extend_mycheck', 20, 2 );