`
chinacode
  • 浏览: 28414 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

php filter 安全过滤函数

    博客分类:
  • php
阅读更多

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');
	}
 
}
 

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

分享到:
评论

相关推荐

    PHP Filter 函数

    PHP Filter 函数PHP Filter 函数

    PHP filter_var() 函数 Filter 函数

    filter_var() 函数通过指定的过滤器过滤变量。 如果成功,则返回已过滤的数据,如果失败,则返回 false。 语法 filter_var(variable, filter, options)variable:必需。规定要过滤的变量。 filter:可选。规定要使用...

    PHP过滤器 filter_has_var() 函数用法实例分析

    主要介绍了PHP过滤器 filter_has_var() 函数用法,结合实例形式分析了PHP过滤器 filter_has_var() 函数基本功能、原理、用法及操作注意事项,需要的朋友可以参考下

    php数组操作函数

    array_diff -- 计算数组的差集 array_fill -- 用给定的值填充数组 array_filter -- 用回调函数过滤数组中的单元 array_flip -- 交换数组中的键和值 array_intersect_assoc -- 带索引检查计算数组的交集 array_...

    php中filter_input函数用法分析

    fliter 模块对应的 filter_input 函数使用起来非常的简单,例如我们过滤用户输入名为 sample 的 get 参数为整型,那么可以这样写: 复制代码 代码如下:filter_input(input_get, “sample”, filter_sanitize_number_int...

    dms-filter的php过滤库.zip

    &lt;?php namespace DMS\Filter; /**  * Filter Object, responsible for retrieving the filtering rules ...dms-filter的php过滤库就是一个防止别人恶意攻击你的过滤库,有需要的朋友可以下载使用。

    php中filter函数验证、过滤用户输入的数据

    PHP Filter 简介 PHP 过滤器用于对来自非安全来源的数据(比如用户输入)进行验证和过滤。 复制代码 代码如下: //除去html标签,或除去编码特殊字符 var_dump(filter_var(“&lt;html&gt;中文ABC@#&lt;/html&gt;...

    PHP中filter函数校验数据的方法详解

    介绍PHP中filter函数校验数据的方法详解,PHP过滤器包含两种类型:Validation用来验证验证项是否合法 、Sanitization用来格式化被验证的项目,因此它可能会修改验证项的值,将不合法的字符删除。 input_filters_list...

    php中使用array_filter()函数过滤空数组的实现代码

    主要介绍了php中使用array_filter()函数过滤空数组的实现代码,这是浏览PHP手册时无意发意的一个有意思的array_filter()函数用法,需要的朋友可以参考下

    php使用filter_var函数判断邮箱,url,ip格式示例

    后来随着使用的逐渐深入,才知道在php中也可以使用内置的函数库过滤器filter来完成这些功能。 对于filter_var这个函数,如果验证通过则会返回验证对象,否则返回false。 语法 filter_var(variable, filter, options...

    简单的PHP过滤库.zip

    &lt;?php require 'vendor/autoload.php'; use Filterus\Filter; $filter = Filter::map(array('foo' =&gt; 'string,min:4,default:test'));...简单的PHP过滤库就是这么一个简单好用的过滤库

    整理php防注入和XSS攻击通用过滤

    仅仅使用php的一些内置过滤函数是对付不了的,即使你将filter_var,mysql_real_escape_string,htmlentities,htmlspecialchars,strip_tags这些函数都使用上了也不一定能保证绝对的安全。 那么如何预防 XSS 注入?主要...

    基于标注的PHP过滤库.zip

    &lt;?... }在PHP中,有些很有用的函数开源非常方便的防止你的网站遭受各种攻击,例如SQL注入攻击,XSS(Cross Site Scripting:跨站脚本)攻击等。所以就有了这个非常好用的基于标注的PHP过滤库。

    php-plugin-api:用于管理操作和过滤器、挂钩函数并因此调用它们的插件 API

    PHP 插件 API关于该项目提供了一个插件 API,用于管理操作和过滤器、挂钩函数并因此调用它们。 它基于令人惊叹的插件 API 系统,该系统内置于屡获殊荣的 WordPress 平台中。 PHP 插件 API 允许创建操作和过滤器以及...

Global site tag (gtag.js) - Google Analytics