探索 PHP 表单验证:从数据过滤到安全提交

2025-12-10 25阅读

文章最后更新时间:2025年12月11日

表单是用户与网站交互的主要载体,而表单验证是保障数据安全的第一道防线 —— 既能过滤无效数据,又能防范恶意提交。本文通过注册表单实例,带你掌握 PHP 表单验证的核心逻辑和安全技巧。

202410231729651005379643.jpg


一、基础验证:必填项与格式校验

<?php
$errors = [];
if ($_SERVER["REQUEST_METHOD"] === "POST") {
    // 验证用户名(必填,长度3-10位)
    $username = trim($_POST["username"] ?? "");
    if (empty($username)) {
        $errors[] = "用户名不能为空";
    } elseif (strlen($username) < 3 || strlen($username) > 10) {
        $errors[] = "用户名长度需3-10位";
    }

    // 验证邮箱格式
    $email = trim($_POST["email"] ?? "");
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        $errors[] = "邮箱格式不正确";
    }

    // 无错误则提交成功
    if (empty($errors)) {
        echo "表单提交成功!";
    } else {
        echo implode("<br>", $errors);
    }
}
?>

二、实战:防止表单重复提交(Token 验证)

<?php
// 生成Token并存储到Session
session_start();
$token = uniqid();
$_SESSION["form_token"] = $token;

// 表单提交时验证Token
if ($_SERVER["REQUEST_METHOD"] === "POST") {
    $submittedToken = $_POST["token"] ?? "";
    if ($submittedToken !== $_SESSION["form_token"]) {
        die("表单重复提交或非法提交!");
    }
    // 验证通过后销毁Token
    unset($_SESSION["form_token"]);
}
?>
<!-- 前端表单添加Token隐藏域 -->
<form method="post">
    <input type="hidden" name="token" value="<?php echo $token; ?>">
    <!-- 其他表单字段 -->
</form>

总结

PHP 表单验证的核心是 “过滤 + 校验 + 防攻击”:trim()去除空格,filter_var()验证格式,Token 机制防止重复提交。开发中需对所有用户输入数据进行验证,避免直接使用未过滤的数据,才能保障表单交互的安全性和可靠性。
文章版权声明:除非注明,否则均为Dark零点博客原创文章,转载或复制请以超链接形式并注明出处。