PHP表单验证怎么写_PHP表单数据验证的常用方法与实例


表单验证需先接收数据并判断非空,再依次验证邮箱、手机格式及数据范围,结合正则与filter_var函数,最后通过htmlspecialchars和PDO预处理防御XSS与SQL注入,确保数据安全完整。

表单验证是Web开发中非常关键的一环,PHP作为服务器端语言,常用于处理表单数据并进行安全校验。合理的表单验证能防止恶意输入、提升用户体验,并保障数据的完整性与安全性。下面介绍几种常用的PHP表单验证方法,并附上实用示例。

1. 基础表单数据接收与非空验证

在处理表单前,首先要确保数据已提交,并对关键字段进行非空判断。

说明: 使用 $_POST$_GET 接收数据,通过 empty() 函数判断是否为空。

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $name = trim($_POST['name']);
    $email = trim($_POST['email']);

    if (empty($name)) {
        echo "姓名不能为空";
    } elseif (empty($email)) {
        echo "邮箱不能为空";
    } else {
        // 继续后续验证或处理
    }
}

2. 邮箱格式验证

使用PHP内置函数 filter_var() 可快速验证邮箱格式是否合法。

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo "邮箱格式不正确";
}

提示: 虽然该方法能验证基本格式,但不能确认邮箱是否真实存在,仅用于前端初步过滤。

3. 手机号码验证(正则表达式)

中国手机号通常为11位,以1开头,第二位为3-9之间的数字。

$phone = $_POST['phone'];
if (!preg_match('/^1[3-9]\d{9}$/', $phone)) {
    echo "手机号码格式不正确";
}

注意: 不同国家规则不同,应根据实际业务调整正则表达式。

4. 数据长度与范围校验

限制用户名长度、年龄范围等常见需求可通过字符串函数和数值比较实现。

// 用户名长度 2-20 个字符
if (strlen($name) < 2 || strlen($name) > 20) {
    echo "用户名长度应在2到20之间";
}

// 年龄应在 1-120 之间
$age = (int)$_POST['age'];
if ($age < 1 || $age > 120) {
    echo "请输入有效的年龄";
}

5. 防止XSS与SQL注入(安全过滤)

用户输入不可信,必须进行过滤和转义。

  • 使用 htmlspecialchars() 防止XSS攻击
  • 使用预处理语句(如PDO)防止SQL注入
$name = htmlspecialchars($name, ENT_QUOTES, 'UTF-8');

// PDO预处理示例
$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
$stmt->execute([$name, $email]);

6. 综合验证实例

将上述方法整合成一个完整的表单处理流程:

$errors = [];

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $name  = trim($_POST['name']);
    $email = trim($_POST['email']);
    $phone = trim($_POST['phone']);
    $age   = (int)$_POST['age'];

    if (empty($name)) $errors[] = "姓名不能为空";
    elseif (strlen($name) < 2 || strlen($name) > 20) $errors[] = "用户名长度错误";

    if (empty($email)) {
        $errors[] = "邮箱不能为空";
    } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        $errors[] = "邮箱格式不正确";
    }

    if (!preg_match('/^1[3-9]\d{9}$/', $phone)) {
        $errors[] = "手机号格式错误";
    }

    if ($age < 1 || $age > 120) {
        $errors[] = "年龄必须在1-120之间";
    }

    if (empty($errors)) {
        // 数据有效,执行保存操作
        echo "表单提交成功!";
    } else {
        foreach ($errors as $error) {
            echo "

$error

"; } } }

基本上就这些。掌握这些基础方法后,你可以根据项目需求扩展验证规则,比如添加验证码、文件上传校验等。关键是保持代码清晰、安全优先,避免遗漏关键检查点。


# php  # html  # 前端  # 正则表达式  # ai  # sql注入  # 邮箱  # 防止sql注入  # 表单提交  # lsp  # sql  # xss  # 表单验证  # filter_var  # pdo  # 字符串  # 表单  # 为空  # 不正确  # 应在  # 你可以  # 请输入  # 几种  # 并对  # 可通过 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 网络优化76771 】 【 技术知识130152 】 【 IDC云计算60162 】 【 营销推广131313 】 【 AI优化88182 】 【 百度推广37138 】 【 网站推荐60173 】 【 精选阅读31334


相关推荐: 如何在Golang中写入XML文件_生成符合规范的XML数据  c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】  Win11怎么设置虚拟键盘_打开Win11屏幕键盘操作指南【技巧】  Win11怎么用设置清理回收站_Win11设置清理回收站技巧【步骤】  Win11怎么查看显卡显存_查询Win11显卡详细参数方法【步骤】  如何在JavaScript中动态拼接PHP的base_url与前端变量  Win11怎么退出高对比度模式_Win11取消反色显示快捷键【修复】  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  php8.4如何实现队列任务_php8.4redis队列简单实现方法【教程】  C++如何使用std::optional?(处理可选值)  c++怎么使用std::filesystem遍历文件夹_c++ 递归查找文件与权限修改【技巧】  LINUX下如何配置VLAN虚拟局域网_在LINUX交换机与服务器上的实现  Win11怎么调整屏幕亮度_Windows 11调节显示器亮度护眼设置【步骤】  Python文件和流处理指南_高效读写大体积数据文件  Win11资源管理器卡顿怎么办 Win11文件资源管理器重启技巧【优化】  c++ stringstream用法详解_c++字符串与数字转换利器  Python与MongoDB NoSQL开发实战_文档模型与索引优化  新手学PHP架构总混淆概念咋办_重点梳理【教程】  如何在Golang中配置代码格式化工具_使用gofmt和goimports  如何使用Golang实现容器健康检查_监控和自动重启  c++的STL算法库find怎么用 在容器中查找指定元素【实用教程】  Windows7怎么找回经典开始菜单_Windows7经典菜单找回步骤【方法】  如何使用Golang管理跨项目依赖_Golang多模块项目依赖实践  Windows蓝屏错误0x0000002C怎么解决_系统IO异常排查方法  Win11怎么设置任务栏大小_Windows11注册表修改TaskbarSi值  如何使用Golang管理模块版本_Golanggo mod tidy与升级方法  MAC怎么用连续互通相机里的“桌上视角”_MAC在视频通话中同时展示人脸和桌面  微信短链接怎么还原php_用浏览器开发者工具抓包获取【方法】  如何在 Go 中可靠地测试含 time.Time 字段的结构体  php485返回数据不完整怎么办_php485数据分包重组处理方法【教程】  Python安全爬虫设计_IP代理池与验证码识别策略解析  Python函数缓存机制_lru_cache解析【指导】  Win11怎么更改电脑名称_Windows 11修改计算机名操作指南【步骤】  C#怎么创建控制台应用 C# Console App项目创建方法  Win11怎么清理C盘下载文件夹_Win11清理下载文件夹技巧【教程】  Win11局域网共享怎么设置 Win11文件夹网络共享教程【详解】  如何从 Go 的 map[string]interface{} 中安全获取值  Win11开机速度慢怎么优化_Win11系统启动加速设置指南【方法】  Win10系统怎么查看显卡温度_Win10任务管理器GPU温度  Win11怎么看电池循环次数_Win11笔记本电池寿命检测【命令】  Win11怎么设置按流量计费_Win11限制后台流量消耗【网络】  Win11怎么设置触控板手势_Windows11三指四指操作自定义  PHP怎么接收前端传的时间戳_处理时间戳参数转换技巧汇总【指南】  如何在 Go 中正确测试带 Cookie 的 HTTP 请求  Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】  跨文件调用类方法怎么用_php作用域操作符与自动加载配合【介绍】  如何在Golang中捕获JSON序列化错误_Golangjson.Marshal错误处理示例  Django密码修改后会话失效的解决方案  Win11如何设置自动关机 Win11定时关机命令使用教程【技巧】  Win11怎么设置默认浏览器Chrome_Windows11修改默认网页打开方式 

 2025-11-23

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

致胜网络推广营销网


致胜网络推广营销网

致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。

 915688610

 17370845950

 915688610@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.