【PHPフォーム制作】名前は全角限定!ハニーポットでスパムも防ぐ実用テクニック

Webフォームでは、「入力ミス」や「スパム送信」などを未然に防ぐためのバリデーションやセキュリティ対策が欠かせません。この記事では、PHPを使ったお問い合わせフォームに対し、

  • 「名前」を全角入力のみ許可する方法
  • ハニーポットによるスパムボット対策

の2つのテクニックを紹介します。

名前欄に「全角」チェックを入れる理由

日本語名の入力欄に「半角英字や数字」が含まれていると、以下のようなトラブルを招く可能性があります

  • 読みにくくなり、問い合わせ後の対応ミスにつながる
  • 誤字やスパム風の入力に見える
  • データベースや帳票への出力時にレイアウト崩れ

これらを防ぐため、名前欄には「全角文字のみ許可する」バリデーションをサーバー側で入れておくのが理想です。

2. フォーム側のサンプルHTML

以下は、お問い合わせフォームの一部(名前欄とハニーポット)のサンプルです:

<form action="mail.php" method="post">
<!-- スパム対策用:ハニーポット(非表示フィールド) -->
<input type="text" name="honeypot" style="display:none;" autocomplete="off">

<!-- 名前欄 -->
<label for="name">お名前(全角で入力してください)</label>
<input type="text" name="name" id="name" required placeholder="例:山田 太郎">

<input type="submit" value="送信">
</form>

🔒「honeypot」って何?

人間のユーザーには見えない入力欄(display:none)を設置し、スパムボットが自動で入力したら処理を拒否する仕組みです。

3. mail.php 側での全角チェックの追加

mail.php 側にて、送信された名前が全角のみかどうかをチェックするコードを追加します。

// 全角以外が含まれていないかチェック
if (!empty($_POST['name']) && !preg_match('/^[^ -~。-゚]+$/u', $_POST['name'])) {
$error_messages[] = "お名前は全角で入力してください。";
$has_error = true;
}

✅ 正規表現の意味

/^[^ -~。-゚]+$/

これは「半角英数字・記号・半角カタカナを含まない=全角のみ」という条件を意味しています。
マルチバイトの日本語入力(漢字・ひらがな・全角カタカナ)を想定した書き方です。

ハニーポット対策の追加(スパムブロック)

同じく mail.php の最上部で、次のような処理を加えます:

// honeypot に値が入っていればスパムとして拒否
if ($_SERVER['REQUEST_METHOD'] === 'POST' && !empty($_POST['honeypot'])) {
http_response_code(403);
exit('スパム検出:アクセス拒否されました。');
}

これにより、スパムボットが honeypot フィールドに誤って入力した場合、
即座に処理を打ち切って403 Forbidden を返すことができます。

実装後のイメージ

ユーザーがフォームに入力し、「お名前」に半角文字を使うと

  • 「お名前は全角で入力してください」というエラーが表示される
  • 送信処理は実行されず、ユーザーに修正を促す

また、スパムボットがhoneypotフィールドに値を入れて送信した場合:

  • 自動的にブロックされ、送信処理がキャンセルされる

まとめ

機能内容
名前の全角チェック半角混在の日本語名をバリデーションで排除
ハニーポット自動送信ボットによるスパム投稿の簡易検出と拒否処理

これらを組み合わせることで、フォームの品質と信頼性を大きく向上させることができます。

おまけ:JavaScriptでもチェックしたい場合

リアルタイムで弾きたいなら、以下のようなJSを併用するのもおすすめです。

document.getElementById('name').addEventListener('blur', function () {
if (!/^[^ -~。-゚]+$/.test(this.value)) {
alert('お名前は全角で入力してください');
}
});

フォームの信頼性を高めて、ユーザーと運営の安心を守ろう

小さな工夫でも、正確で安全なフォームをつくることができます。
今回紹介したようなバリデーションとスパム対策は、どんなWebサイトにもおすすめできる基本施策です。
ぜひ取り入れてみてください!