1.回顾:上篇学习了 php高级里的错误处理和Exception

2.这篇将要学习 过滤器 filter

3.Filter 过滤器

      3.1了解

过滤器用于验证和过滤来自非安全来源的数据,比如用户的输入
3.2 什么过滤器?
(1)过滤器用于验证过滤来自非安全来源的数据
(2)验证和过滤用户输入或自定义数据是任何web应用的重要组成部分
(3)为了安全起见
(4)过滤的数据包括:来自表单的输入数据,Cookies,服务器变量,数据库查询结果
3.3 函数和过滤器
(1)过滤变量,可以使用下面过滤器:
(2)filter_var() 通过一个指定的过滤器来过滤单一变量
(3)filter_var_array() 通过相同的或不同的过滤器来过滤多个变量
(4)filter_input() 获取一个输入变量,进行过滤
(5)filter_input_array() 获取多个输入变量,并通过相同的或不同的过滤器进行过滤


$int=123;
if(!filter_var($int,FILTER_VALIDATE_INT)){
echo "不是int类型";
}else{
echo "是 int类型";
}


3.4 选项和标志

(1)用于指定过滤器添加额外的过滤选项
(2)下面代码定义了一个范围0~256,当var为300是会判断错误


#用于指定过滤器添加额外的过滤选项
#下面代码定义了一个范围0~256,当var为300是会判断错误
$var=300;
$int_option=array(
"options"=>array(
"min_range"=>0,
"max_range"=>256
)
);

if(!filter_var($var,FILTER_VALIDATE_INT,$int_option)){
echo "not Integer";
}else{
echo "is Integer";
}
echo "<br>";



3.5 验证输入


#使用 filter_input函数过滤输入数据
#测试:在地址上,用get方式传参
#demo:http://localhost:1095/index_demo8.php?email=11@ss.com
if(!filter_input(!filter_has_var(INPUT_GET),"email")){
echo("email 不存在!");
}else{
if(!filter_input(INPUT_GET,"email",FILTER_VALIDATE_EMAIL)){
echo "email 不正确";
}else{
echo "email 正确";
}
}

3.6 净化输入

#使用清理表单传来的URL
#测试:使用post方式,检测url变量
#存在变量,删除非法字符(净化),并将其存储在$url变量中
#可以在表单里测试
if(!filter_has_var(INPUT_POST,"url")){
echo("url 不存在");
}else{
$url=filter_input(INPUT_POST,"url",FILTER_SANITIZE_URL);
echo $url;
}


#避免使用多个filter_var()和filter_input()
#使用filter_var_array和filter_input_array()
#过滤name是字符串,age是正数(1~120之间),email格式
$filters = array(
"name" => array(
"filter"=>FILTER_SANITIZE_STRING
),
"age" => array(
"filter"=>FILTER_VALIDATE_INT,
"options"=>array(
"min_range"=>1,
"max_range"=>120
)
),
"email"=> FILTER_VALIDATE_EMAIL,
);
#返回的是数组,过滤的时候,谁出错,不存储谁
$result = filter_input_array(INPUT_GET, $filters);
if (!$result["age"])
{
echo("Age must be a number between 1 and 120.<br />");
}


#通过FILTER CALLBACK过滤器,可以调用自定义函数,把他作为一个过滤器使用
function convertSpace($str){
return str_replace("_"," ",$str);
}

$str="yuan_ming_zhuo_LABELNET";
echo filter_var($str,FILTER_CALLBACK,array("options"=>"convertSpace"));



下篇将学习 php-面向对象编程!