牛骨文教育服务平台(让学习变的简单)
博文笔记

php-高级(过滤器 filter)

创建时间:2015-08-01 投稿人: 浏览次数:126

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;
     }
 
    3.7 过滤多个输入
       #避免使用多个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 />");
      }
  3.8 Filter CallBack 的使用
     #通过FILTER CALLBACK过滤器,可以调用自定义函数,把他作为一个过滤器使用
     function convertSpace($str){
         return str_replace("_"," ",$str);
     }
     
     $str="yuan_ming_zhuo_LABELNET";
     echo filter_var($str,FILTER_CALLBACK,array("options"=>"convertSpace"));


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



声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。