PHP过滤器主要对用户上传的数据进行验证清理,确保上传的数据完整安全。

比如我们可以通过PHP过滤器验证邮箱、电话号码或者URL这些既定格式;为了防止XSS攻击,可以使用PHP过滤器去除JavaScript、HTML代码。

PHP过滤器怎么用?

我们可以通过PHP内置的过滤器函数来进行过滤操作,下面让我们通过一张表格总览PHP过滤器的核心函数:

函数功能
filter_var()使用指定的过滤器过滤单个变量
filter_var_array()获取多个变量并使用相同或不同的过滤器过滤它们
filter_input()通过名称获取特定的外部变量并过滤它
filter_input_array()获取多个外部变量并使用相同或不同的过滤器过滤它们
filter_list()返回所支持的过滤器列表
filter_id()返回与特定过滤器名称关联的过滤器ID
filter_has_var()检查指定类型的变量是否存在

PHP过滤器分为种类型,要么是验证数据,要么是清理数据:

1. 验证数据

对于一些特定的数据格式,我们可以使用fliter_var()函数+特定的过滤器参数来进行验证:

函数功能示例
filter_var() + FILTER_VALIDATE_EMAIL验证电子邮件格式filter_var('test@dotcpp.com', FILTER_VALIDATE_EMAIL)
filter_var() + FILTER_VALIDATE_URL验证URL格式filter_var('https://www.dotcpp.com', FILTER_VALIDATE_URL)
filter_var() + FILTER_VALIDATE_IP验证IP地址格式filter_var('192.168.1.1', FILTER_VALIDATE_IP)
filter_var() + FILTER_VALIDATE_MAC验证MAC地址格式filter_var('00:1A:2B:3C:4D:5E', FILTER_VALIDATE_MAC)
filter_var() + FILTER_VALIDATE_INT验证整数格式filter_var('123', FILTER_VALIDATE_INT)
filter_var() + FILTER_VALIDATE_FLOAT验证浮点数格式filter_var('3.14', FILTER_VALIDATE_FLOAT)
filter_var() + FILTER_VALIDATE_BOOLEAN验证布尔值格式filter_var('true', FILTER_VALIDATE_BOOLEAN)
filter_var() + FILTER_VALIDATE_DOMAIN验证域名格式filter_var('dotcpp.com', FILTER_VALIDATE_DOMAIN)

这里拿filter_var() + FILTER_VALIDATE_EMAIL举一个例子,验证上传数据的电子邮件格式:

<?php 
/* filter_var() + FILTER_VALIDATE_EMAIL(验证电子邮件) */
$email="123456@dotcpp.com";
if(filter_var($email, FILTER_VALIDATE_EMAIL))
{
    echo "电子邮件验证成功!";
}
else 
{
    echo '非法电子邮件格式,验证失败!';
}
?>

进入test.php,我们可以看到“电子邮件验证成功!”。

filter_var() + FILTER_VALIDATE_EMAIL


2. 清理数据

对于一些非法数据,比如恶意的XSS攻击,我们就可以使用fliter_var()函数+特定的过滤器参数来进行清理:

函数功能
filter_var() + FILTER_SANITIZE_EMAIL删除电子邮件中非法的字符
filter_var() + FILTER_SANITIZE_URL                     删除URL中非法的字符
filter_var() + FILTER_SANITIZE_NUMBER_INT删除数字中非数字的字符
filter_var() + FILTER_SANITIZE_NUMBER_FLOAT删除浮点数中非数字的字符(保留小数点)
filter_var() + FILTER_SANITIZE_STRING删除或编码HTML标签
filter_var() + FILTER_SANITIZE_SPECIAL_CHARS将特殊字符转换为HTML实体
filter_var() + FILTER_SANITIZE_FULL_SPECIAL_CHARS转换所有特殊字符(包括单引号)

一般都是通过filter_var() + FILTER_SANITIZE_STRING删除Javascript标签,来防止XSS攻击:

<?php
// 用户提交的表单数据
$user_input = '<script>alert("XSS攻击")</script>没有数据清理你就等着被脚本注入吧';
//使用 filter_var() 清理
$safe_output = filter_var($user_input,  FILTER_SANITIZE_STRING);
echo "安全输出: " . $safe_output;
?>

filter_var() + FILTER_SANITIZE_STRING

这里会安全地显示文字,而没有进行alert弹窗,我们成功通过filter_var() + FILTER_SANITIZE_STRING删除Javascript标签,避免了脚本注入!


总之,PHP过滤器提高了输入数据的安全性和合法性,熟练运用PHP过滤器是PHP开发人员的必备基础技能。

点赞(0)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)