Heim >Backend-Entwicklung >PHP-Tutorial >PHP-Filter-Sicherheitsfilterfunktion
PHP verwendet statische Parameterverarbeitungsklassen, die von der Filtererweiterung geschrieben wurden. Die Verwendung ist willkommen.
Ich hoffe, dass es allen gefällt und sich bei der Nutzung wohl fühlt.
<?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'); } }