新闻中心
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之间的数字。
PictoGraphic
AI驱动的矢量插图库和插图生成平台
133
查看详情
$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 "<p style='color:red;'>$error</p>";
}
}
}
基本上就这些。掌握这些基础方法后,你可以根据项目需求扩展验证规则,比如添加验证码、文件上传校验等。关键是保持代码清晰、安全优先,避免遗漏关键检查点。
以上就是PHP表单验证怎么写_PHP表单数据验证的常用方法与实例的详细内容,更多请关注php中文网其它相关文章!
# 多条
# 广宁网站关键词优化
# 德州济南网站优化推广
# 金华网站建设推广专家团队
# 海南抖音seo优化技术
# 营销推广版薯条在哪找到
# 国内seo大牛博客
# 网站推广有效的方式
# 导航网站怎么推广给别人
# 上海网站优化简历工作
# seo文章标题优化技巧
# 中文网
# 相关文章
# 雪夜
# 你可以
# php基础语法
# 应在
# 不正确
# 为空
# 表单
# lsp
# 表单提交
# 防止sql注入
# 邮箱
# sql注入
# ai
# 正则表达式
# 前端
# html
# php
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
树莓派传感器触发:通过Twilio API发送WhatsApp消息教程
c++项目目录结构应该如何组织_c++工程化项目结构规范
MongoDB聚合管道:正确匹配对象数组中_id的方法
Lar*el的路由模型绑定怎么用_Lar*el Route Model Binding简化控制器逻辑
J*aScript Promise链中如何正确终止后续.then执行并处理错误
电脑屏幕颜色不舒服怎么办_Windows夜间模式与色彩校准教程【护眼技巧】
如何在低配置电脑上搭建轻量级J*a环境_占用更小的环境选择技巧
Golang如何优化CPU绑定任务分配策略_Golang CPU任务分配优化实践
内存疯狂猛猛涨价:主板销量直接腰斩!
在Blazor WebAssembly应用中动态注入客户端特定指标代码的策略
包子漫画官方网站阅读入口-包子漫画在线漫画官网直达链接
Win10自动更新怎么关闭 Win10永久关闭系统更新的两种方法【终极版】
一加手机电池耗电快怎么办_一加手机电池耗电快的解决方法
Vue.js 图片显示异常排查:理解应用挂载范围与DOM ID唯一性
铃兰之剑为这和平的世界希里技能组及加点推荐
Win10如何开启蓝牙功能_Windows10找不到蓝牙开关解决方法
MinIO大规模对象列表性能瓶颈深度解析与外部元数据管理策略
《铁拳8》黑皮辣妹新实机:元气满满的18岁少女!
J*aScript动态修改指定div内所有a标签样式指南
C++如何解决segmentation fault_C++段错误调试与原因分析
如何使用Go和Martini动态服务解码后的图片
学习通网页版官方登录 超星学习通电脑端入口指南
“音游” × “怪文书” 题材的节奏冒险游戏 《晕晕电波症候群》确定于2026年4月发售!
格力空气能E5故障代码是什么情况_格力空气能E5代码解析与应对措施
CSS Grid如何控制元素对齐_align-items与justify-items组合使用
steam官方网页快速访问 steam账号注册全流程
c++中的std::forward_list和std::list有什么不同_c++ forward_list与list区别分析
Django模型中自动计算可用余额的实现方法
汽车之家官方网站官网入口_汽车之家网页版直接进入
qq游戏手机版下载安装_qq游戏移动端入口
2026春节假期票务安排_2026春节放假购票指南
谷歌google账号怎么注册账号 谷歌账号注册官方流程
TikTok评论显示延迟如何处理 TikTok评论刷新优化方法
Excel Power Pivot如何处理XML数据源 构建高级数据模型
抖音隐秘迷城小游戏入口_ 抖音冒险解谜小游戏秒玩
J*a递归快速排序中静态变量导致数据累积问题的解决方案
uc浏览器网页版入口 uc浏览器网页版最新网址
J*a如何使用AtomicInteger控制计数_J*a无锁计数器性能分析
Go语言中高效处理x-www-form-urlencoded表单数据
多闪网页版在线观看免费入口_多闪官网访问入口
铁路12306改签能改到更早的车次吗_铁路12306改签提前车次规则
豆包手机助手发布技术预览版:直接嵌入手机系统!努比亚样机发售
电脑IP地址怎么查 查看本机IP地址的几种方法
快速CSGO开箱网站指南 CSGO开箱平台推荐
C++ vector二维数组定义_C++ vector of vector用法
谷歌学术网站直达地址 谷歌学术搜索网页版一键进入
MAC怎么让Dock栏只显示当前运行的应用_MAC终端命令实现极简Dock栏
React Router v6 教程:构建认证保护的私有路由与重定向策略
React列表渲染与独立状态管理:避免全局状态影响局部更新
天猫2025双十一0点秒杀攻略 天猫爆款抢购时间


2025-11-23
浏览次数:次
返回列表
户名长度应在2到20之间";
}
// 年龄应在 1-120 之间
$age = (int)$_POST['age'];
if ($age < 1 || $age > 120) {
echo "请输入有效的年龄";
}