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');
    }
}
原文地址:https://www.cnblogs.com/scrit/p/3750279.html