• php filter 安全过滤函数


    转自:http://www.blags.org/archives/741.html

    php 利用filter 扩展编写的参数处理静态类,欢迎使用。
    希望大家看得开心,用得放心。

    <?php
    /**
     * @参数验证函数
     * @method:
     * @license http://www.blags.org/
     * @created:2011年07月02日 11时00分
     * @copyright 1997-2011 The Martin Group
     * @author Martin <martin@blags.org>
     * */
    abstract class CFilter
    {
        /**
        * 类型
        * @var array
        */
        public static $varType = array(
            'GET'=> INPUT_GET,
            'POST'=> INPUT_POST,
            'COOKIE'=> INPUT_COOKIE,
            'SERVER'=> INPUT_SERVER,
            'ENV'=> INPUT_ENV
        );
        public static $filterType = array(
            'STRING'=>FILTER_SANITIZE_STRING,
            'INT'=>FILTER_VALIDATE_INT,
            'BOOLEAN'=>FILTER_VALIDATE_BOOLEAN,
            'FLOAT'=>FILTER_VALIDATE_FLOAT,
            'REGEXP'=>FILTER_VALIDATE_REGEXP,
            'URL'=>FILTER_VALIDATE_URL,
            'EMAIL'=>FILTER_VALIDATE_EMAIL,
            'IP'=>FILTER_VALIDATE_IP,
        );
    
        /**
        * 支持过滤列表
        */
        private static function lists()
        {
            return filter_list();
        }
    
        /**
        * 验证类型
        * @param string $type
        */
        public static function filterType($type)
        {
            $filter_list = self::lists();
            return array_search($type,$filter_list) !== false ? true : false;
        }
    
        /**
        *
        * @param $setVarType
        */
        private static function getVarType($setVarType)
        {
            $setVarType = strtoupper($setVarType);
            return isset(self::$varType[$setVarType]) ? self::$varType[$setVarType] : null;
        }
    
        /**
        *
        * @param string $setFilterType
        */
        private static function getFilterType($setFilterType)
        {
            $setFilterType = strtoupper($setFilterType);
            return isset(self::$filterType[$setFilterType]) ? self::$filterType[$setFilterType] : null;
        }
    
        /**
        * 检测参数是否存在
        * @param string $setVarType
        * @param string $varName
        */
        public static function VarExists($setVarType,$varName)
        {
            $FilterVarType = self::getVarType($setVarType);
            if (is_null($FilterVarType))
            return false;
            return filter_has_var(self::$varType[$FilterVarType], $varName);
        }
    
        /**
        *
        * @param string $setVarType
        * @param string $varName
        * @param string $filterType
        */
        public static function FilterInput($setVarType, $varName, $filterType = 'INT')
        {
            $FilterVarType = self::getVarType($setVarType);
            $filterType = self::getFilterType($filterType);
            if (is_null($FilterVarType) || is_null($filterType))
            return false;
            return filter_input($FilterVarType, $varName, $filterType);
        }
    
        /**
        * 验证变量
        * @param string $var
        * @param string $filterType
        */
        public static function FilterVar($var,$filterType)
        {
            $filterType = self::getFilterType($filterType);
            return filter_var($var, $filterType);
        }
    
        /**
        * 字符串
        * @param string $var
        */
        public static function String($var)
        {
            return self::FilterVar($var,'STRING');
        }
    
        public static function Int($var)
        {
            return self::FilterVar($var,'INT');
        }
    
        public static function Boolean($var)
        {
            return self::FilterVar($var,'INT');
        }
    
        public static function Float($var)
        {
            return self::FilterVar($var,'FLOAT');
        }
    
        /**
        *
        * @param string $var
        * @param array $option array("options"=>array("regexp"=>"/^M(.*)/"))
        */
        public static function Regexp($var,$option)
        {
            $filterType = self::getFilterType($filterType);
            return filter_var($var, $filterType, $option);
        }
    
        public static function Url($var)
        {
            return self::FilterVar($var,'URL');
        }
    
        public static function Email($var)
        {
            return self::FilterVar($var,'EMAIL');
        }
    
        public static function Ip($var)
        {
            return self::FilterVar($var,'IP');
        }
    }
  • 相关阅读:
    Quartz使用及注意事项
    .Net下性能调优浅析
    .Net下Redis使用注意事项
    WCF服务开发与调用的完整示例
    超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
    C# DES
    webService访问加密-Soapheader
    WebMethod 属性
    互联网 免费的WebService接口
    利用XPath解析带有xmlns的XML文件
  • 原文地址:https://www.cnblogs.com/scrit/p/3750279.html
Copyright © 2020-2023  润新知