PHP过滤器
PHP过滤器用于验证和过滤来自非安全数据源,比如用户的输入
什么是外部数据
来自表单的输入数据
Cookies
Web services data
服务器变量
数据库查询结果
函数和过滤器
如需过滤变量,请使用下面的过滤器函数之一:
filter_var() - 通过一个指定的过滤器来过滤单一的变量
filter_var_array() - 通过相同的或不同的过滤器来过滤多个变量
实例,利用filter_var()函数验证一个整数
<?php $int = 113; if(filter_var($int,FILTER_VALIDATE_INT)){ echo "是一个合法的整数"; }else{ echo "不是一个合法的整数"; } ?>
选项和标志
选项和标志用于向指定的过滤器添加额外的过滤选项。
不同的过滤器有不同的选项和标志
在实例中,利用filter_var()和min_range以及max_range选项验证一个整数,整数的范围是0到255
<?php $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 "不是一个合法整数"; } ?>
验证表单输入
首先确认是否存在我们正在查找的输入数据
其次利用filter_input()函数过滤输入的数据
filter_input(input_type,variable,filter,options)
//input_type,规定输入的类型,variable必须,规定要过滤的变量,filter,可选,规定要使用的过滤器ID,默认是FILTER_SANITIZE_STRING
<?php if(filter_has_var(INPUT_GET,"email")){ echo "没有参数"; }else{ if(filter_input(INPUT_GET,"email",FILTER_VALIDATE_EMAIL)) { echo "是一个合法的email"; } echo "不是合法的email"; } ?>
净化输入
通过GET方法传送的输入变量(url);
1、检测是否存在GET类型的url输入变量
2、如果存在,删除非法字符,并将其存储在$url中
filter_has_var(type,variable) //type 必须,规定要检测的类型。variable必须,规定要检查的变量
<?php if(filter_has_var(INPUT_GET,'url')){ echo "没有url参数"; }else{ $url = filter_input(INPUT_GET,'url',FILTER_SANITIZE_URL); } ?>
过滤多个输入
表单通常是由多个输入字段组成,避免重复调用,可以使用filter_var_array或filter_input_array函数。
<?php //对表单输入的name,age,email进行过滤 $filter = array( "name" => array ( "filter" => FILTER_SANITIZE_STRING //name是字符串类型 ), "age" => array ( "filter" => FILTER_VALIDATE_INT, //age是整数类型 "options" => array ( 'min_range' =>1, 'max_range' =>120 ) ), "email" => FILTER_VALIDATE_EMAIL, //邮箱是email类型 ); $result = filter_input_array(INPUT_GET,$filter); if(!$result["age"]) { echo "年龄必须在1到120之间"; }else if(!$result['name']) { echo "name输入错误"; }else { echo "输入正确"; } ?>
使用Filter Calllback调用自定义的函数,使用Filter Calllback过滤器,可以调用自定义的函数,把他作为过滤器来使用。
例如:
<?php
//定义过滤函数 function converSpace($string) { return str_replace("_",".",$string); //将"_"转换为"."; } $string = "www_baidu_com!"; echo filter_var($string,FILTER_CALLBACK,array("options"=>"converSpace")); ?>