1. 说明:

  2. 判断传递的变量中是否含有非法字符
  3. 如$_POST、$_GET
  4. 功能:防注入
  5. **************************/

  6. //要过滤的非法字符

  7. $ArrFiltrate=array("'",";","union");
  8. //出错后要跳转的url,不填则默认前一页
  9. $StrGoUrl="";
  10. //是否存在数组中的值
  11. function FunStringExist($StrFiltrate,$ArrFiltrate){
  12. foreach ($ArrFiltrate as $key=>$value){
  13. if (eregi($value,$StrFiltrate)){
  14. return true;
  15. }
  16. }
  17. return false;
  18. }

  19. //合并$_POST 和 $_GET

  20. if(function_exists(array_merge)){
  21. $ArrPostAndGet=array_merge($HTTP_POST_VARS,$HTTP_GET_VARS);
  22. }else{
  23. foreach($HTTP_POST_VARS as $key=>$value){
  24. $ArrPostAndGet[]=$value;
  25. }
  26. foreach($HTTP_GET_VARS as $key=>$value){
  27. $ArrPostAndGet[]=$value;
  28. }
  29. }

  30. //验证开始

  31. foreach($ArrPostAndGet as $key=>$value){
  32. if (FunStringExist($value,$ArrFiltrate)){
  33. echo "";
  34. if (emptyempty($StrGoUrl)){
  35. echo "";
  36. }else{
  37. echo "";
  38. }
  39. exit;
  40. }
  41. }
  42. ?>
复制代码

保存为 checkpostandget.php,然后在每个php文件前加include(“checkpostandget.php“);即可。

方法二

  1. foreach ($_GET as $get_key=>$get_var)

  2. {
  3. if (is_numeric($get_var)) {
  4. $get[strtolower($get_key)] = get_int($get_var);
  5. } else {
  6. $get[strtolower($get_key)] = get_str($get_var);
  7. }
  8. }

  9. /* 过滤所有POST过来的变量 */

  10. foreach ($_POST as $post_key=>$post_var)
  11. {
  12. if (is_numeric($post_var)) {
  13. $post[strtolower($post_key)] = get_int($post_var);
  14. } else {
  15. $post[strtolower($post_key)] = get_str($post_var);
  16. }
  17. }

  18. /* 过滤函数 */

  19. //整型过滤函数
  20. function get_int($number)
  21. {
  22. return intval($number);
  23. }
  24. //字符串型过滤函数
  25. function get_str($string)
  26. {
  27. if (!get_magic_quotes_gpc()) {
  28. return addslashes($string);
  29. }
  30. return $string;
  31. }
  32. ?>

复制代码


09-09 07:02