php過濾函數

來源:互聯網
上載者:User
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. }
複製代碼
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.