您的位置:首页 > 编程语言 > PHP开发

PHP过滤器(Filter)

2016-06-29 16:37 429 查看
PHP 过滤器用于验证和过滤来自非安全来源的数据。

几乎所有web应用程序都依赖外部的输入。

什么是外部数据:

.来自表单的输入数据

.Cookies

.服务端变量

.数据库查询结果

函数和过滤器

如需过滤变量,请使用下面的过滤器函数

.filter_var()-通过一个指定的过滤器来过滤单一的变量

.filter_var_array()-通过相同的或不同的过滤器来过滤多个变量

.filter_input-获取一个输入变量,并对它进行过滤

.filter_input_array-获取多个输入变量,并通过相同的或不同的过滤器对它们进行过滤

<?php

$int = 123;

if(!filter_var($int, FILTER_VALIDATE_INT)){

echo("Integer is not valid");

}else{

echo("Integer is valid");

}

?>

Validating 和 Sanitizing

Validating过滤器:

.用于验证用户输入

.严格的格式规则(比如URL或E-Mail验证)

.如果成功则返回预期的类型,如果失败则返回FALSE

Sanitizing过滤器:

.用于允许或禁止字符串中指定的字符

.无数据格式规则

.始终返回字符串

选项和标志

选项和标志用于向指定的过滤器添加额外的过滤选项。

不同的过滤器有不同的选项和标志

<?php

$var=300;

$int_options = array(

"option"=>array(

"min_range"=>0,

"max_range"=>256

)

);

if(!filter_var($var, FILTER_VALIDATE_INT, $int_options)){

echo("Integer is not valid");

}else{

echo("Integer is valid");

}

?>

验证输入

<?php

if(!filter_has_var(INPUT_GET, "email")){

echo("Input type does not exist");

}else{

if(!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL)){

echo "E-Mail is not valid"

}else{

echo "E-Mail is valid";

}

}

?>

净化输入

首先,我们要确认是否存在我们正在查找的输入数据。

然后,我们用filter_input()函数来净化输入数据。

<?php

if(!filter_has_var(INPUT_POST), "url"){

echo("Input type does not exit");

}else{

$url = filter_input(INPUT_POST,"url",FILTER_SANITIZE_URL);

}

?>

过滤多个输入

表单通常由多个输入字段组成。为了避免对filter_var或filter_input重复调用,我们可以使用filter_var_array或 filter_input_array函数

我们使用filter_input_array()函数来过滤三个GET变量。

<?php

$filters = array(

"name"=>array(

"filter"=>FILITER_SANITIZE

),

"age"=>array(

"filter"=>FILTER_VALIDATE_INT,

"option"=>array(

"min_range"=>1,

"max_range"=>120

)

),

"email"=>FILITER_VALIDATE_EMAIL,

);

$result = filter_input_array(INPUT_GET, $filters);

if(!$result["age"]){

echo("Age must be a number between 1 and 120.<br />");

}else if(!result["email"]){

echo("E-Mail is not valid.<br />");

}else{

echo("User input is valid");

}

?>

使用Filter Callback

通过使用FILTER_CALLBACK过滤器,可以调用自定义的函数,把它作为一个过滤器来使用。这样,我们就拥有了数据过滤的完全控制权。

<?php

function convertSpace($sting){

return str_replace("_"," ", $string);//将"-"转换成空格

}

$string = "Peter_is_a_great_guy!";

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

?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php filter 过滤器