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")); ?>
02-12 11:24