【php】用filter_var实现的简单参数验证

简介:

filter_var是在php5.2.0中开始提供的。详细说明见:


http://www.php.net/manual/zh/book.filter.php


先看看代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<?php
class  Utils {
     /**
      * 主要是调用filter_var_array验证,再扩充一个required字段来表示必填项。
      * http://www.php.net/manual/zh/book.filter.php
      * 注意: (可以不传,但不能传错)
      *  1.先验证格式,有失败的抛异常。
      *  2.未传的参数,有default的(不管是否required=1),则设置为default值。
      * 示例:
      *      $filterArr = array(
      *          "pn" =>array(
      *              "required"  => 1,
      *              "filter"    => FILTER_VALIDATE_INT,
      *              "options"   => array(
      *                  "default"   =>1,
      *                  "min_range" =>1,
      *              )
      *          )
      *      )
      */
public  static  function  filter_param( $paramArr $filterArr ){
         $res  = filter_var_array( $paramArr $filterArr );      //参数不合法-flase, 没传参数-null
         foreach ( $res  as  $key => $val ){
             //如果有验证失败的,抛出异常。
             if (false ===  $val ){
                 throw  new  Exception(  "Utils::filter_param: failed, key=$key " );
             }
             //再判断未传的参数。
             if is_null ( $val )){
                 //1.如果是必填项
                 if ( $filterArr [ $key ][ 'required' ] ){
                     if (isset( $filterArr [ $key ][ 'options' ][ 'default' ])){
                         //1.1如果有default值,则设置为default值。
                         $res [ $key ] =  $filterArr [ $key ][ 'options' ][ 'default' ];
                     } else {
                         //1.2如果没有default值,抛出异常。
                         throw  new  Exception(  "Utils::filter_param: Do not have required param, key=$key"  );
                     }
                 } else {
                     //$res[$key]='';      //这里是默认把null值改为空值。是否有必要?
                 }
             }
         }
         return  $res ;
}
};
 
 
 
 
         //每个model里,都写个checkParam函数,用来配置验证的规则。
     function  checkParam( $arrInput ){
         //1.先检查catId
         $filter  array (
                 //数字类型的,必填。只允许 0-1。
             "catId"  =>  array (
                 "required" =>1,
                 "filter" =>FILTER_VALIDATE_INT,
                 "options" => array (
                     "min_range"  =>0,
                     "max_range"  =>1,
                 )
             ),
                 //字符串类型的,必填。长度大于1。
             "title"  =>  array (
                 "required" =>1,
                 "filter" =>FILTER_VALIDATE_REGEXP,
                 "options" => array (
                     "regexp"  => "/^.+/" ,
                 )
             ),
                 //字符串类型的,非必填。但要是填了的话,则格式必须为email。
             "email"  =>  array (
                 "filter" =>FILTER_VALIDATE_EMAIL,
             ),
         );
         $_res  = Utils::filter_param( $arrInput $filter ) ;
     }
     
         //比如这个是输入的参数。可以试着修改这里看看效果。
     $arrInput = array (
         'catId' =>1,
         'title' => 'xx' ,
         'email' => 'xxxxxx.com' ,
     );
     try {
         $res =checkParam( $arrInput );
         echo  "验证通过,继续其它代码...\n" ;
     } catch (Exception  $e ){
         echo  'Caught exception: ' ,   $e ->getMessage(),  "\n" ;
     }
?>


上面的代码,可直接运行。


使用方法:

  1. 建议把filter_param放到公共函数库中。

  2. 建议在每个model里都有个checkParam函数,专门配置验证规则。



本文转自 xjtuhit 51CTO博客,原文链接:http://blog.51cto.com/51reboot/1427065


相关文章
|
6月前
|
小程序 前端开发 PHP
PHP实现生成小程序二维码带参数进入指定页面、小程序URL scheme实现携带数据跳转小程序
PHP实现生成小程序二维码带参数进入指定页面、小程序URL scheme实现携带数据跳转小程序
|
1月前
|
数据采集 存储 JavaScript
PHP爬虫技术:利用simple_html_dom库分析汽车之家电动车参数
本文旨在介绍如何利用PHP中的simple_html_dom库结合爬虫代理IP技术来高效采集和分析汽车之家网站的电动车参数。通过实际示例和详细说明,读者将了解如何实现数据分析和爬虫技术的结合应用,从而更好地理解和应用相关技术。
PHP爬虫技术:利用simple_html_dom库分析汽车之家电动车参数
|
3月前
|
安全 Linux 测试技术
PHP环境配置和验证
PHP环境配置和验证
31 0
|
8月前
|
前端开发 JavaScript 机器人
用PHP实现了一个极验验证功能,如何做?具体代码如何写?
极验验证是一种防机器人的验证机制,可以通过图像识别等方式来判断用户是否为真实用户。
91 1
|
3月前
|
PHP
PHP进阶-默认参数值和可变参数列表
PHP函数支持默认参数值和可变参数列表两种特性。默认参数值,即可以为参数指定默认值,使得在函数调用时如果没有提供相应参数,则会使用默认值;可变参数列表,即使用不定数量的参数调用函数。本文将详细介绍这两种用法,并通过代码举例说明其使用场景。熟练掌握默认参数和可变参数列表的使用,可以极大地提高PHP开发的效率。
35 0
|
8月前
|
安全 PHP
PHP - Laravel 表单验证(验证规则与使用 $this->validate()、Validator::make()、Requests)
PHP - Laravel 表单验证(验证规则与使用 $this->validate()、Validator::make()、Requests)
153 0
|
8月前
|
PHP
PHP - Laravel 路由参数
PHP - Laravel 路由参数
43 0
|
4月前
|
PHP 数据库
【PHP学习】—PHP连接数据库实现表单页面的验证功能(七)
【PHP学习】—PHP连接数据库实现表单页面的验证功能(七)