1.php 过滤器
PHP 过滤器用于验证和过滤来自非安全来源的数据,比如用户的输入。
2.什么是php 过滤器
PHP 过滤器用于验证和过滤来自非安全来源的数据。
测试、验证和过滤用户输入或自定义数据是任何 Web 应用程序的重要组成部分。PHP 的过滤器扩展的设计目的是使数据过滤更轻松快捷
3.为什么使用过滤器
几乎所有的 Web 应用程序都依赖外部的输入。这些数据通常来自用户或其他应用程序(比如 web 服务)。通过使用过滤器,您能够确保应用程序获得正确的输入类型
对外部数据进行过滤,会提高安全性,那么有哪些外部数据呢?
(1).来自表单的输入数据
(2).Cookies
(3).Web services data
(4).服务器变量
(5).数据库查询结果
函数和过滤器
如需过滤变量,请使用下面的过滤器函数之一:
filter_var() - 通过一个指定的过滤器来过滤单一的变量
filter_var_array() - 通过相同的或不同的过滤器来过滤多个变量
filter_input - 获取一个输入变量,并对它进行过滤
filter_input_array - 获取多个输入变量,并通过相同的或不同的过 滤器对它们进行过滤
<?php header("Content-type: text/html; charset=utf-8");//设置编码 $int = 123; if(!filter_var($int, FILTER_VALIDATE_INT)){ echo("不是一个合法的整数"); }else{ echo("是个合法的整数"); } ?>
注:当我们写上一个合法的整数,就会输出是个合法的整数,如果不是则输出不是合法的整数
Validating 和 Sanitizing 这是俩种过滤器
Validating 过滤器:
用于验证用户输入
严格的格式规则(比如 URL 或 E-Mail 验证)
如果成功则返回预期的类型,如果失败则返回 FALSE
Sanitizing 过滤器:
用于允许或禁止字符串中指定的字符
无数据格式规则
始终返回字符串
选项和标志
选项和标志用于向指定的过滤器添加额外的过滤选项。
不同的过滤器有不同的选项和标志
<?php header("Content-type: text/html; charset=utf-8");//设置编码 $var=300; $int_options = array( "options"=>array( "min_range"=>0, "max_range"=>256 ) ); if(!filter_var($var, FILTER_VALIDATE_INT, $int_options)){ echo("不是一个合法的整数"); }else{ echo("是个合法的整数"); } ?>
注:就像上面的代码一样,选项必须放入一个名为 "options" 的相关数组中。如果使用标志,则不需在数组内。由于整数是 "300",它不在指定的范围内
验证输入
让我们试着验证来自表单的输入。
我们需要做的第一件事情是确认是否存在我们正在查找的输入数据。
然后我们用 filter_input() 函数过滤输入的数据。
在下面的实例中,输入变量 "email" 被传到 PHP 页面
<?php header("Content-type: text/html; charset=utf-8");//设置编码 if(!filter_has_var(INPUT_GET, "email")){ echo("没有 email 参数"); }else{ if (!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL)){ echo "不是一个合法的 E-Mail"; }else{ echo "是一个合法的 E-Mail"; } } ?>
注:当一个表单传输过来数据,首先检测是否存在get 传输过来的数据
然后如果有传输过来数据,在判断是否是一个合法的email
净化输入
让我们试着清理一下从表单传来的 URL。
首先,我们要确认是否存在我们正在查找的输入数据。
然后,我们用 filter_input() 函数来净化输入数据。
在下面的实例中,输入变量 "url" 被传到 PHP 页面:
<?php header("Content-type: text/html; charset=utf-8");//设置编码 if(!filter_has_var(INPUT_GET, "url")){ echo("没有 url 参数"); }else{ $url = filter_input(INPUT_GET, "url", FILTER_SANITIZE_URL); echo $url; } ?>
注:检测是否存在 "GET" 类型的 "url" 输入变量。
如果存在此输入变量,对其进行净化(删除非法字符),并将其存储在 $url 变量中