导读:本期聚焦于小伙伴创作的《PHP表单验证怎么写?PHP表单数据验证的常用方法与实例有哪些》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《PHP表单验证怎么写?PHP表单数据验证的常用方法与实例有哪些》有用,将其分享出去将是对创作者最好的鼓励。

PHP表单验证是处理用户提交数据的第一道防线,主要作用是确保提交的数据符合业务要求,同时防止恶意数据注入到系统中。合理的验证逻辑可以过滤无效数据,减少后续业务处理的异常概率。

PHP表单验证怎么写?PHP表单数据验证的常用方法与实例有哪些

PHP表单验证的核心流程

通常PHP表单验证会遵循以下基本流程:

  • 接收用户通过POST或GET方式提交的表单数据
  • 对数据进行基础非空校验,确认必填项已填写
  • 按照业务规则校验数据格式,比如邮箱、手机号、数字范围等
  • 对数据进行安全过滤,去除危险字符,防止XSS或SQL注入
  • 根据校验结果返回对应的提示信息或执行后续业务逻辑

常用验证方法

1. 基础非空校验

非空校验是最基础的验证步骤,用于确认用户没有遗漏必填项。可以通过empty()函数或者isset()函数实现,需要注意empty()会把0、空字符串都判定为空,需要根据实际场景选择。

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $username = $_POST["username"];
    // 校验用户名是否为空
    if (empty($username)) {
        echo "用户名不能为空";
    } else {
        echo "用户名填写正确";
    }
}
?>

2. 格式校验

格式校验用于确认数据符合特定的规则,比如邮箱格式、手机号格式、身份证格式等。PHP内置了filter_var()函数,可以很方便地完成常见的格式校验,也支持自定义正则校验。

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $email = $_POST["email"];
    // 使用内置过滤器校验邮箱格式
    if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
        echo "邮箱格式正确";
    } else {
        echo "邮箱格式错误";
    }
    
    $phone = $_POST["phone"];
    // 自定义正则校验手机号(11位,以1开头)
    $phone_pattern = "/^1[3-9]d{9}$/";
    if (preg_match($phone_pattern, $phone)) {
        echo "手机号格式正确";
    } else {
        echo "手机号格式错误";
    }
}
?>

3. 安全过滤

安全过滤是为了去除数据中的危险内容,避免XSS攻击或者SQL注入。可以使用htmlspecialchars()函数转义HTML特殊字符,也可以使用filter_var()的过滤功能处理数据。

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $content = $_POST["content"];
    // 转义HTML特殊字符,防止XSS攻击
    $safe_content = htmlspecialchars($content, ENT_QUOTES, "UTF-8");
    // 过滤掉非法的字符串内容
    $filtered_content = filter_var($safe_content, FILTER_SANITIZE_STRING);
    echo "过滤后的内容:" . $filtered_content;
}
?>

4. 范围与长度校验

很多场景下需要校验数据的范围或者长度,比如年龄需要在1到120之间,密码长度需要在6到20位之间。可以通过比较运算符或者strlen()函数实现。

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $age = $_POST["age"];
    $password = $_POST["password"];
    // 校验年龄范围
    if ($age < 1 || $age > 120) {
        echo "年龄需要在1到120之间";
    }
    // 校验密码长度
    if (strlen($password) < 6 || strlen($password) > 20) {
        echo "密码长度需要在6到20位之间";
    }
}
?>

完整表单验证实例

下面是一个包含用户名、邮箱、年龄、密码的完整表单验证实例,涵盖了上述提到的所有常用验证方法。

<?php
// 初始化错误提示数组
$errors = [];
$username = $email = $age = $password = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // 校验用户名
    if (empty($_POST["username"])) {
        $errors["username"] = "用户名不能为空";
    } else {
        $username = htmlspecialchars($_POST["username"], ENT_QUOTES, "UTF-8");
    }
    
    // 校验邮箱
    if (empty($_POST["email"])) {
        $errors["email"] = "邮箱不能为空";
    } else {
        $email = $_POST["email"];
        if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
            $errors["email"] = "邮箱格式错误";
        } else {
            $email = htmlspecialchars($email, ENT_QUOTES, "UTF-8");
        }
    }
    
    // 校验年龄
    if (empty($_POST["age"])) {
        $errors["age"] = "年龄不能为空";
    } else {
        $age = intval($_POST["age"]);
        if ($age < 1 || $age > 120) {
            $errors["age"] = "年龄需要在1到120之间";
        }
    }
    
    // 校验密码
    if (empty($_POST["password"])) {
        $errors["password"] = "密码不能为空";
    } else {
        $password = $_POST["password"];
        if (strlen($password) < 6 || strlen($password) > 20) {
            $errors["password"] = "密码长度需要在6到20位之间";
        }
    }
    
    // 如果没有错误,输出验证通过的信息
    if (empty($errors)) {
        echo "所有表单数据验证通过,提交的内容为:<br/>";
        echo "用户名:" . $username . "<br/>";
        echo "邮箱:" . $email . "<br/>";
        echo "年龄:" . $age . "<br/>";
        echo "密码:已通过长度校验";
    }
}
?>

<!-- 表单页面 -->
<form method="post" action="">
    <p>用户名:<input type="text" name="username">
    <?php if (isset($errors["username"])) echo "<span style='color:red'>" . $errors["username"] . "</span>"; ?></p>
    
    <p>邮箱:<input type="text" name="email">
    <?php if (isset($errors["email"])) echo "<span style='color:red'>" . $errors["email"] . "</span>"; ?></p>
    
    <p>年龄:<input type="text" name="age">
    <?php if (isset($errors["age"])) echo "<span style='color:red'>" . $errors["age"] . "</span>"; ?></p>
    
    <p>密码:<input type="password" name="password">
    <?php if (isset($errors["password"])) echo "<span style='color:red'>" . $errors["password"] . "</span>"; ?></p>
    
    <p><input type="submit" value="提交"></p>
</form>

注意事项

  • 不要仅依赖前端验证,前端验证可以被绕过,所有数据必须在后端再次校验
  • 校验顺序建议先校验非空,再校验格式,最后做安全过滤,避免无效校验消耗资源
  • 错误提示信息要清晰明确,让用户知道具体是哪一项不符合要求
  • 敏感数据比如密码,不要直接明文存储,校验通过后需要做哈希处理再存入数据库

PHP表单验证数据校验input_filter修改时间:2026-06-29 22:21:36

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。