ホームページ  >  記事  >  バックエンド開発  >  PHPのフィルター関数

PHPのフィルター関数

WBOY
WBOYオリジナル
2016-07-25 09:09:24912ブラウズ
PHP はフィルター拡張機能を使用してパラメーター処理クラスを作成します。
http://www.blags.org/php-security-filter-function/
経験値:
まずファイルをインポートします
「filter.php」をインクルード
$email = CFilter::Email($_POST['email']);
検証が成功した場合は文字列が返され、そうでない場合は false が返されます。
  1. /**
  2. * @パラメータ検証関数
  3. * @method:
  4. * @license http://www.blags.org/
  5. * @created: July 02, 2011 11:00
  6. * @copyright 1997-2011 The Martin Group
  7. * @著者マーティン */
  8. abstract class CFilter
  9. {
  10. /**
  11. * 型
  12. * @var 配列
  13. */
  14. public static $varType = array(
  15. 'GET' => INPUT_GET,
  16. 'POST' => INPUT_POST,
  17. 'COOKIE'=> 'SERVER'=> INPUT_ENV
  18. );
  19. public static $filterType = array(
  20. 'STRING' = > FILTER_SANITIZE_STRING,
  21. FILTER_VALIDATE_INT,
  22. FILTER_VALIDATE_BOOLEAN,
  23. FILTER_VALIDATE_FLOAT,
  24. FILTER_VALIDATE_REGEX P ,
  25. 'URL' => FILTER_VALIDATE_URL,
  26. 'EMAIL' => FILTER_VALIDATE_EMAIL,
  27. 'IP' => FILTER_VALIDATE_IP,
  28. );
  29. /**
  30. * サポートフィルターリスト
  31. */
  32. プライベート静的関数 lists()
  33. {
  34. return filter_list();
  35. }
  36. / **
  37. * 検証タイプ
  38. * @param string $type
  39. */
  40. public static function filterType($type)
  41. {
  42. $filter_list = self::lists();
  43. return array_search($type,$filter_list) !== false true : false;
  44. }
  45. /**
  46. *
  47. * @param $setVarType
  48. */
  49. プライベート静的関数 getVarType($setVarType)
  50. {
  51. $setVarType = strtoupper($setVarType);
  52. return isset(self::$varType[$setVarType]) ? self::$ varType[$setVarType] : null;
  53. }
  54. /**
  55. *
  56. * @param string $setFilterType
  57. */
  58. プライベート静的関数 getFilterType($setFilterType)
  59. {
  60. $setFilterType = strtoupper($setFilterType);
  61. return isset(self::$filterType) [$setFilterType]) ? self::$filterType[$setFilterType] : null;
  62. }
  63. /**
  64. * パラメーターが存在するかどうかを確認します
  65. * @param string $setVarType
  66. * @param string $varName
  67. */
  68. public static function VarExists($setVarType,$varName)
  69. {
  70. $FilterVarType = self: :getVarType($setVarType);
  71. if (is_null($FilterVarType))
  72. return false;
  73. return filter_has_var(self::$varType[$FilterVarType], $varName);
  74. }
  75. /**
  76. *
  77. * @param string $setVarType
  78. * @param string $varName
  79. * @param string $filterType
  80. */
  81. public static function FilterInput($setVarType, $varName, $filterType = 'INT')
  82. {
  83. $FilterVarType = self::getVarType($setVarType);
  84. $filterType = self::getFilterType($filterType);
  85. if ( is_null($FilterVarType) || is_null($filterType))
  86. return false;
  87. return filter_input($FilterVarType, $varName, $filterType);
  88. }
  89. /**
  90. * 検証変数
  91. * @param string $var
  92. * @param string $filterType
  93. */
  94. public static function FilterVar($ var,$filterType)
  95. {
  96. $filterType = self::getFilterType($filterType);
  97. return filter_var($var, $filterType);
  98. }
  99. /**
  100. * 文字列
  101. * @param string $var
  102. */
  103. public static function String($ var)
  104. {
  105. return self::FilterVar($var,'STRING');
  106. }
  107. public static function Int($var)
  108. {
  109. return self::FilterVar($var,'INT');
  110. }
  111. public static function Boolean($var)
  112. {
  113. return self::FilterVar($var,'INT');
  114. }
  115. public static function Float($var)
  116. {
  117. return self::FilterVar($var) ,'FLOAT');
  118. }
  119. /**
  120. *
  121. * @param string $var
  122. * @param array $option array("options"=>array("regexp"=>"/^M(.*)/"))
  123. */
  124. public static function Regexp($var,$option)
  125. {
  126. $filterType = self::getFilterType($filterType);
  127. return filter_var($ var, $filterType, $option);
  128. }
  129. public static function Url($var)
  130. {
  131. return self::FilterVar($var,'URL');
  132. }
  133. public static function Email($var)
  134. {
  135. return self::FilterVar($var,'EMAIL');
  136. }
  137. public static function Ip($var)
  138. {
  139. return self::FilterVar($var,'IP');
  140. }
  141. }
  142. コードをコピー
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。