• 技术文章 >后端开发 >php教程

    php filter 安全过滤函数

    巴扎黑巴扎黑2016-11-24 14:55:27原创475
    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');
    }
     
    }
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:8个与安全相关的php函数 下一篇:JavaScript中常见的字符串操作函数及用法
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• 20+值得了解的PHP面试题(附答案分析)• 有哪位高手会改.htaccess内容 • session,该怎么处理 • PHP登录跳转,该怎么处理 • 帮忙分析下哪里异常
    1/1

    PHP中文网