Heim > Backend-Entwicklung > PHP-Tutorial > php filter 保险过滤函数

php filter 保险过滤函数

WBOY
Freigeben: 2016-06-13 13:11:48
Original
841 Leute haben es durchsucht

php filter 安全过滤函数

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');
	}
 
}
Nach dem Login kopieren
?

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

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

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

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage