PHPのフォームバリデーションとは?安全な入力処理の基本
フォームバリデーションとは、ユーザーが入力したデータが適切かどうかを確認する処理のことです。
入力ミスの防止だけでなく、セキュリティ対策としても非常に重要です。
よく使うバリデーション項目
- 未入力チェック(必須)
- 形式チェック(メールアドレス、電話番号など)
- 文字数チェック(最小・最大)
- 数値チェック、範囲チェック
- 一致確認(パスワードと確認欄など)
基本的な構造
HTMLのフォームからPOSTされたデータに対して、PHPでチェックを行います。
HTMLフォーム例:
<form method="post" action="validate.php">
名前:<input type="text" name="name"><br>
メール:<input type="email" name="email"><br>
<input type="submit" value="送信">
</form>
PHP側のバリデーション:
<?php
$errors = [];
if ($_SERVER["REQUEST_METHOD"] === "POST") {
// 名前:未入力チェック
if (empty($_POST["name"])) {
$errors[] = "名前を入力してください。";
}
// メール:形式チェック
if (empty($_POST["email"])) {
$errors[] = "メールアドレスを入力してください。";
} elseif (!filter_var($_POST["email"], FILTER_VALIDATE_EMAIL)) {
$errors[] = "メールアドレスの形式が正しくありません。";
}
// 結果表示
if (empty($errors)) {
echo "バリデーション成功!";
} else {
foreach ($errors as $error) {
echo "<p>" . htmlspecialchars($error) . "</p>";
}
}
}
?>
チェック関数の例
function validate_length($str, $min, $max) {
$len = mb_strlen($str);
return ($len >= $min && $len <= $max);
}
filter_input()を使ったバリデーション
filter_input()
を使えば、より安全に入力値の検証ができます。
$email = filter_input(INPUT_POST, "email", FILTER_VALIDATE_EMAIL);
if (!$email) {
$errors[] = "正しいメールアドレスを入力してください。";
}
まとめ
- フォームバリデーションは入力ミス防止とセキュリティ強化に必須
empty()
や filter_var()
を活用する
- HTMLエスケープ(
htmlspecialchars()
)も忘れずに
- サーバー側とクライアント側の両方でバリデーションを行うのが理想
ユーザーにとって使いやすく、安全なフォームを作るために、バリデーションはとても重要な役割を担います。
複雑な処理になる場合は、関数やクラスに分けて整理するとメンテナンス性も向上します。