PHP 如何做数据校验

当我们在网上填注册表单时,输入的手机号少了一位、密码的字母数字混输没达标,网站会立刻弹出提醒,不让错误数据传到后台——这背后的关键步骤就是数据校验。如果没有这层校验,用户可能乱填信息,程序会直接崩溃,还可能被恶意人士输入非法内容破坏系统。对用PHP搭建的网站来说,数据校验就是第一道“守门员”,帮我们把不合法的数据挡在门外。

先做最基础的“格式检查”

格式检查是最直观的校验,就像快递员送包裹前,先看收件地址有没有漏写省份。比如用户填手机号,我国手机号是11位数字,开头是1,那我们可以用简单的规则判断:先看输入的字符串是不是全数字,再数长度是不是11位,最后检查第一位是不是1。

PHP 如何做数据校验

举个例子:用户输入“13800138000”,数字、11位、开头1,全部符合;如果输入“1380013800”(少一位)、“1380abc8000”(有字母)、“23800138000”(开头是2),都能立刻被拦住。

在PHP里,不用自己写复杂的判断,用内置函数就能搞定:is_numeric() 检查是不是数字,strlen() 查长度,preg_match() 可以用正则表达式一次性匹配手机号规则,比如 /^1\d{10}$/ 就代表“开头是1,后面跟10位数字”,比分开写多个判断更高效。

再补“合法性校验”

格式对了不代表内容合法,就像填快递地址时,用户写“火星市123号”,地址格式没错,但现实里根本不存在。这一步就是核对数据的真实有效性。

常见的场景有两种:一种是核对唯一性,比如注册时填的手机号,不能是系统里已经存在的;另一种是核对范围,比如年龄只能是1-120岁,商品数量不能是负数。

举个例子:用户填年龄“150”,格式是数字,但超过人类正常年龄范围,就要提醒“请输入1到120之间的数字”;如果是商品下单,输入“-5”,明显不符合数量要求,直接报错。

在PHP里,先把格式通过的数据拿出来,用数据库查询功能检查手机号是否存在,用简单的if判断数字是否在合理区间,就能完成合法性筛选。

最后加“安全性校验”

这是最容易被忽略的一步,也是最重要的一步——防止恶意数据破坏系统。比如有人在输入框里写“<script>偷取信息的代码</script>”,如果不处理,这段代码会被直接当成网页内容显示,甚至被浏览器执行,这就是常见的“跨站脚本攻击”。

安全性校验就像给数据消毒,把危险的内容去掉。最常用的方法是用PHP的htmlspecialchars()函数,把尖括号、引号这类特殊字符转换成网页能安全显示的符号,比如把<</code>转换成&lt;,这样用户输入的代码就会变成普通文字,不会被执行。

还有一种情况是,有人用“万能密码”(比如输入“' OR 1=1 --”)绕过登录,这是针对数据库的攻击。用PHP准备SQL语句时,用“预处理语句”代替直接拼接字符串,就能把用户输入的内容和SQL指令分开,彻底挡住这种恶意数据。

很多人会觉得,把校验都放在前端(比如用网页的JavaScript做提示)就够了,但前端的校验是给普通用户看的,很容易被恶意人士绕过——他们可以直接跳过前端,把数据发给后台。所以PHP的后端校验才是“最终防线”,缺一不可。简单说,格式检查是“看对不对”,合法性是“看是不是真的”,安全性是“看会不会搞破坏”,三步做好,就能把大部分问题数据挡在系统外面。

上一篇 Swift语言核心特性与应用场景科普 助力开发者掌握高效编程范式