PHP过滤器
PHP过滤器用于验证和过滤来自非安全数据源,比如用户的输入
什么是外部数据
来自表单的输入数据
Cookies
Web services data
服务器变量
数据库查询结果
函数和过滤器
如需过滤变量,请使用下面的过滤器函数之一:
filter_var() - 通过一个指定的过滤器来过滤单一的变量
filter_var_array() - 通过相同的或不同的过滤器来过滤多个变量
实例,利用filter_var()函数验证一个整数
}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
}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必须,规定要检查的变量
}else{$url = filter_input(INPUT_GET,'url',FILTER_SANITIZE_URL);
}?>
过滤多个输入
表单通常是由多个输入字段组成,避免重复调用,可以使用filter_var_array或filter_input_array函数。
$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过滤器,可以调用自定义的函数,把他作为过滤器来使用。
例如:
//定义过滤函数function converSpace($string)
{return str_replace("_",".",$string); //将"_"转换为".";
}$string = "www_baidu_com!";echo filter_var($string,FILTER_CALLBACK,array("options"=>"converSpace"));?>