+ -
当前位置:首页 → 问答吧 → php filter 安全过滤函数

php filter 安全过滤函数

时间:2011-07-02

来源:互联网

参考地址:http://www.php.net/manual/en/book.filter.php

希望大家看得开心,用得放心。


  1. <?php
  2. /**
  3. * @参数验证函数
  4. * @method:
  5. * @license http://www.blags.org/
  6. * @created:2011年07月02日 11时00分
  7. * @copyright 1997-2011 The Martin Group
  8. * @author Martin <[email protected]>
  9. * */
  10. abstract class CFilter
  11. {
  12.         /**
  13.          * 类型
  14.          * @var array
  15.          */
  16.         public static $varType = array(
  17.                                 'GET'        => INPUT_GET,
  18.                                 'POST'        => INPUT_POST,
  19.                                 'COOKIE'=> INPUT_COOKIE,
  20.                                 'SERVER'=> INPUT_SERVER,
  21.                                 'ENV'        => INPUT_ENV
  22.         );
  23.         public static $filterType = array(
  24.                         'STRING'        =>        FILTER_SANITIZE_STRING,
  25.                         'INT'                =>        FILTER_VALIDATE_INT,
  26.                         'BOOLEAN'        =>        FILTER_VALIDATE_BOOLEAN,
  27.                         'FLOAT'                =>        FILTER_VALIDATE_FLOAT,
  28.                         'REGEXP'        =>        FILTER_VALIDATE_REGEXP,
  29.                         'URL'                =>        FILTER_VALIDATE_URL,
  30.                         'EMAIL'                =>        FILTER_VALIDATE_EMAIL,
  31.                         'IP'                =>        FILTER_VALIDATE_IP,
  32.         );

  33.         /**
  34.          * 支持过滤列表
  35.          */
  36.         private static function lists()
  37.         {
  38.                 return filter_list();
  39.         }

  40.         /**
  41.          * 验证类型
  42.          * @param string $type
  43.          */
  44.         public static function filterType($type)
  45.         {
  46.                 $filter_list = self::lists();
  47.                 return array_search($type,$filter_list) !== false ? true : false;
  48.         }

  49.         /**
  50.          *
  51.          * @param $setVarType
  52.          */
  53.         private static function getVarType($setVarType)
  54.         {
  55.                 $setVarType = strtoupper($setVarType);
  56.                 return isset(self::$varType[$setVarType]) ? self::$varType[$setVarType] : null;
  57.         }

  58.         /**
  59.          *
  60.          * @param string $setFilterType
  61.          */
  62.         private static function getFilterType($setFilterType)
  63.         {
  64.                 $setFilterType = strtoupper($setFilterType);
  65.                 return isset(self::$filterType[$setFilterType]) ? self::$filterType[$setFilterType] : null;
  66.         }

  67.         /**
  68.          * 检测参数是否存在
  69.          * @param string $setVarType
  70.          * @param string $varName
  71.          */
  72.         public static function VarExists($setVarType,$varName)
  73.         {
  74.                 $FilterVarType = self::getVarType($setVarType);
  75.                 if (is_null($FilterVarType))
  76.                         return false;
  77.                 return filter_has_var(self::$varType[$FilterVarType], $varName);
  78.         }

  79.         /**
  80.          *
  81.          * @param string $setVarType
  82.          * @param string $varName
  83.          * @param string $filterType
  84.          */
  85.         public static function FilterInput($setVarType, $varName, $filterType = 'INT')
  86.         {
  87.                 $FilterVarType = self::getVarType($setVarType);
  88.                 $filterType = self::getFilterType($filterType);
  89.                 if (is_null($FilterVarType) || is_null($filterType))
  90.                         return false;
  91.                 return filter_input($FilterVarType, $varName, $filterType);
  92.         }

  93.         /**
  94.          * 验证变量
  95.          * @param string $var
  96.          * @param string $filterType
  97.          */
  98.         public static function FilterVar($var,$filterType)
  99.         {
  100.                 $filterType = self::getFilterType($filterType);
  101.                 return filter_var($var, $filterType);
  102.         }

  103.         /**
  104.          * 字符串
  105.          * @param string $var
  106.          */
  107.         public static function String($var)
  108.         {
  109.                 return self::FilterVar($var,'STRING');
  110.         }

  111.         public static function Int($var)
  112.         {
  113.                 return self::FilterVar($var,'INT');
  114.         }

  115.         public static function Boolean($var)
  116.         {
  117.                 return self::FilterVar($var,'INT');
  118.         }

  119.         public static function Float($var)
  120.         {
  121.                 return self::FilterVar($var,'FLOAT');
  122.         }

  123.         /**
  124.          *
  125.          * @param string $var
  126.          * @param array $option array("options"=>array("regexp"=>"/^M(.*)/"))
  127.          */
  128.         public static function Regexp($var,$option)
  129.         {
  130.                 $filterType = self::getFilterType($filterType);
  131.                 return filter_var($var, $filterType, $option);
  132.         }

  133.         public static function Url($var)
  134.         {
  135.                 return self::FilterVar($var,'URL');
  136.         }

  137.         public static function Email($var)
  138.         {
  139.                 return self::FilterVar($var,'EMAIL');
  140.         }

  141.         public static function Ip($var)
  142.         {
  143.                 return self::FilterVar($var,'IP');
  144.         }

  145. }
复制代码

出处: 马丁博客[http://www.blags.org/]

本文链接地址: http://www.blags.org/php-security-filter-function/

作者: china_code   发布时间: 2011-07-02

作者: china_code   发布时间: 2011-07-02

干嘛用的?

作者: a345868437   发布时间: 2011-07-02