>  기사  >  백엔드 개발  >  PHP 필터 기능

PHP 필터 기능

WBOY
WBOY원래의
2016-07-25 09:09:24912검색
php 利用filter 扩展编写的参数处理类。
http://www.blags.org/php-security-filter-function/
exp:
首先引入文件
include 'filter.php'
$email = CFilter::Email($_POST['email']);
验证成功返回字符串,反之返回false。
  1. /**
  2. * @参数验证函数
  3. * @method:
  4. * @license http://www.blags.org/
  5. * @created:2011年07月02日 11时00分
  6. * @copyright 1997-2011 The Martin Group
  7. * @author Martin
  8. * */
  9. abstract class CFilter
  10. {
  11. /**
  12. * 类型
  13. * @var array
  14. */
  15. public static $varType = array(
  16. 'GET' => INPUT_GET,
  17. 'POST' => INPUT_POST,
  18. 'COOKIE'=> INPUT_COOKIE,
  19. 'SERVER'=> INPUT_SERVER,
  20. 'ENV' => INPUT_ENV
  21. );
  22. public static $filterType = array(
  23. 'STRING' => FILTER_SANITIZE_STRING,
  24. 'INT' => FILTER_VALIDATE_INT,
  25. 'BOOLEAN' => FILTER_VALIDATE_BOOLEAN,
  26. 'FLOAT' => FILTER_VALIDATE_FLOAT,
  27. 'REGEXP' => FILTER_VALIDATE_REGEXP,
  28. 'URL' => FILTER_VALIDATE_URL,
  29. 'EMAIL' => FILTER_VALIDATE_EMAIL,
  30. 'IP' => FILTER_VALIDATE_IP,
  31. );
  32. /**
  33. * 支持过滤列表
  34. */
  35. private static function lists()
  36. {
  37. return filter_list();
  38. }
  39. /**
  40. * 验证类型
  41. * @param string $type
  42. */
  43. public static function filterType($type)
  44. {
  45. $filter_list = self::lists();
  46. return array_search($type,$filter_list) !== false ? true : false;
  47. }
  48. /**
  49. *
  50. * @param $setVarType
  51. */
  52. private static function getVarType($setVarType)
  53. {
  54. $setVarType = strtoupper($setVarType);
  55. return isset(self::$varType[$setVarType]) ? self::$varType[$setVarType] : null;
  56. }
  57. /**
  58. *
  59. * @param string $setFilterType
  60. */
  61. private static function getFilterType($setFilterType)
  62. {
  63. $setFilterType = strtoupper($setFilterType);
  64. return isset(self::$filterType[$setFilterType]) ? self::$filterType[$setFilterType] : null;
  65. }
  66. /**
  67. * 检测参数是否存在
  68. * @param string $setVarType
  69. * @param string $varName
  70. */
  71. public static function VarExists($setVarType,$varName)
  72. {
  73. $FilterVarType = self::getVarType($setVarType);
  74. if (is_null($FilterVarType))
  75. return false;
  76. return filter_has_var(self::$varType[$FilterVarType], $varName);
  77. }
  78. /**
  79. *
  80. * @param string $setVarType
  81. * @param string $varName
  82. * @param string $filterType
  83. */
  84. public static function FilterInput($setVarType, $varName, $filterType = 'INT')
  85. {
  86. $FilterVarType = self::getVarType($setVarType);
  87. $filterType = self::getFilterType($filterType);
  88. if (is_null($FilterVarType) || is_null($filterType))
  89. return false;
  90. return filter_input($FilterVarType, $varName, $filterType);
  91. }
  92. /**
  93. * 验证变量
  94. * @param string $var
  95. * @param string $filterType
  96. */
  97. public static function FilterVar($var,$filterType)
  98. {
  99. $filterType = self::getFilterType($filterType);
  100. return filter_var($var, $filterType);
  101. }
  102. /**
  103. * 字符串
  104. * @param string $var
  105. */
  106. public static function String($var)
  107. {
  108. return self::FilterVar($var,'STRING');
  109. }
  110. public static function Int($var)
  111. {
  112. return self::FilterVar($var,'INT');
  113. }
  114. public static function Boolean($var)
  115. {
  116. return self::FilterVar($var,'INT');
  117. }
  118. public static function Float($var)
  119. {
  120. return self::FilterVar($var,'FLOAT');
  121. }
  122. /**
  123. *
  124. * @param string $var
  125. * @param array $option array("options"=>array("regexp"=>"/^M(.*)/"))
  126. */
  127. public static function Regexp($var,$option)
  128. {
  129. $filterType = self::getFilterType($filterType);
  130. return filter_var($var, $filterType, $option);
  131. }
  132. public static function Url($var)
  133. {
  134. return self::FilterVar($var,'URL');
  135. }
  136. public static function Email($var)
  137. {
  138. return self::FilterVar($var,'EMAIL');
  139. }
  140. public static function Ip($var)
  141. {
  142. return self::FilterVar($var,'IP');
  143. }
  144. }
复制代码


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.