php防sql注入代码

一款比较完美的php防sql注入代码,很多初学者都有被sql注入的经验吧,今天我们来分享你一款比较完整的sql防注入代码,有需要的同学可以参考一下.

php防sql注入代码如下:

  1. <?php
  2. /*************************
  3. 说明:
  4. 判断传递的变量中是否含有非法字符
  5. 如$_POST、$_GET
  6. 功能:
  7. 防注入
  8. *************************/
  9. //要过滤的非法字符
  10. $ArrFiltrate=array("'","or","and","union","where");
  11. //出错后要跳转的url,不填则默认前一页
  12. $StrGoUrl="";
  13. //是否存在数组中的值
  14. function FunStringExist($StrFiltrate,$ArrFiltrate){
  15. foreach ($ArrFiltrate as $key=>$value){
  16. if (eregi($value,$StrFiltrate)){
  17. return true;
  18. }
  19. }
  20. return false;
  21. }
  22. //合并$_POST 和 $_GET
  23. if(function_exists(array_merge)){
  24. $ArrPostAndGet=array_merge($HTTP_POST_VARS,$HTTP_GET_VARS);
  25. }else{
  26. foreach($HTTP_POST_VARS as $key=>$value){
  27. $ArrPostAndGet[]=$value;
  28. }
  29. foreach($HTTP_GET_VARS as $key=>$value){
  30. $ArrPostAndGet[]=$value;
  31. }
  32. }
  33. //验证开始
  34. foreach($ArrPostAndGet as $key=>$value){
  35. if (FunStringExist($value,$ArrFiltrate)){
  36. echo "<script language='javascript'>alert('传递的信息中不得包含{',or,and,union}等非法字符请您把他们换成{‘,OR,AND,UNION}');</script>"; //开源代码phpfensi.com
  37. if (emptyempty($StrGoUrl)){
  38. echo "<script language='javascript'>history.go(-1);</script>";
  39. }else{
  40. echo "<script language='javascript'>window.location='".$StrGoUrl."';</script>";
  41. }
  42. exit;
  43. }
  44. }
  45. /***************结束防止PHP注入*****************/
  46. ?>