第1回: エラーログ解析でトラブルを即解決
WEB先案内
WEB先案内 ITブログ
ココナラでよくご相談されることの一つとしてスパムメールがあります。いわゆる迷惑メールというやつです。 「お問い合わせフォームからの英語スパムメール」 ちょくちょく海外から送られてきませんか❓ 簡単にブロックする方法は色々あります。 たとえば、問い合わせフォームを送信する時に画像認証を導入する方法。 これはユーザビリティが低下したりとちょっとよろしくないとも考えてしまいます。 もっと簡単にブロックする方法を探したところ、日本語メールだけを受信してブロックする方法がありました❗️😊 今回は「お問い合わせフォームから送信される英語メールだけをピンポイントでシャットアウトする方法」を紹介します。
さっそくですが、以下のコードをコピーしてテーマの fanction.php に貼り付けてください。
function wpcf7_validation_textarea_hiragana($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;
}
//メールフォームの textarea にひらがなが無ければ送信できない(contact form7)
add_filter('wpcf7_validate_textarea', 'wpcf7_validation_textarea_hiragana', 10, 2);
add_filter('wpcf7_validate_textarea*', 'wpcf7_validation_textarea_hiragana', 10, 2);
PHPたったこれだけで、お問い合わせ本文(textarea)が全文日本語以外だった場合はエラーになり送信できないようになります。 お問い合わせ本文は <textarea></textarea> というタグが使われています。その textarea タグの内容に「ひらがな」が無い場合は、エラーを吐き出して、送信できないようにしてくれる…という PHP コードです。 ひらがなの有無で送信の不可を判別しています。 したがって、海外スパムは全文外国語ですから、どう頑張ってもエラーになり送信することができないというわけなんです。
function.php に海外スパム対策を施したあとは、お問い合わせフォームから送信してみて、正常に動作するかをチェックしてください。作りっぱなしはダメですよ❗️
当サイトのお問い合わせでもこの機能を導入しているので、実際の動作を確かめてみたい方は「こちらのお問い合わせ」から本文エリアに英文をいれて試してみてください。 送信ボタンの上に自分で追記したエラーメッセージが表示されればOKです。 上図では「ひらがな」が入力されたテキストエリアでは正常、「abcd」が入力されたテキストエリアではエラーが発生していることが分かります。 その下のオレンジ枠のメッセージは『Contact Form 7』の自動エラーメッセージです。 英語以外にもひらがなが含まれていなければエラーの対象となります。
WordPress に標準搭載されている機能をうまくつかうことで「Contact Form7 に特定のキーワードが含まれていたら、送信ボタン押した時、警告文を出して送れなくする」ことができます。
今回は「Contact Form 7 を用いたお問い合わせフォームから送信される英語メールだけをピンポイントでシャットアウトする方法」を紹介しました。 WordPress のお問い合わせから送られてくる全文英語のスパムメールにお悩みの方はぜひお試しください。 本記事の方法なら画像認証などでユーザビリティを下げなくても、英語スパムメールは完全シャットアウトできますから効果てきめんですよっ❗️ もしプログラミングは訳ワカメ🫠 という方はWEB先案内にご相談ください😊