PHP MySQL 防注入代码

<?php/*************************php防注入保存为checkpostandget.php然后在每个php文件前加include(“check... <?php
/*************************
php 防注入
保存为checkpostandget.php
然后在每个php文件前加include(“checkpostandget.php“);即可

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

//要过滤的非法字符
$ArrFiltrate=array("'",";","union");
//出错后要跳转的url,不填则默认前一页
$StrGoUrl="";
//是否存在数组中的值
function FunStringExist($StrFiltrate,$ArrFiltrate){
foreach ($ArrFiltrate as $key=>$value){
if (eregi($value,$StrFiltrate)){
return true;
}
}
return false;
}

//合并$_POST 和 $_GET
if(function_exists(array_merge)){
$ArrPostAndGet=array_merge($HTTP_POST_VARS,$HTTP_GET_VARS);
}else{
foreach($HTTP_POST_VARS as $key=>$value){
$ArrPostAndGet[]=$value;
}
foreach($HTTP_GET_VARS as $key=>$value){
$ArrPostAndGet[]=$value;
}
}

//验证开始
foreach($ArrPostAndGet as $key=>$value){
if (FunStringExist($value,$ArrFiltrate)){
echo "<script language=\"javascript\">alert(\"非法字符\");</script>";
if (empty($StrGoUrl)){
echo "<script language=\"javascript\">history.go(-1);</script>";
}else{
echo "<script language=\"javascript\">window.location=\"".$StrGoUrl."\";</script>";
}
exit;
}
}
?>

代码如上
但是会出现这个
Warning: array_merge() [function.array-merge]: Argument #1 is not an array in

Warning: array_merge() [function.array-merge]: Argument #2 is not an array in

Warning: Invalid argument supplied for foreach()
问题
展开
 我来答
JJ_Victor
2009-06-21 · TA获得超过430个赞
知道小有建树答主
回答量:214
采纳率:0%
帮助的人:161万
展开全部
array_merge($HTTP_POST_VARS,$HTTP_GET_VARS);
这个方法里面的第一个参数不是数组,这很明显的说了啊。
$HTTP_POST_VARS是一个全局变量用于接受post过来的值
检查一下这里应该能找到问题所在
百度网友83f2033
2009-06-19 · TA获得超过1490个赞
知道小有建树答主
回答量:1419
采纳率:0%
帮助的人:1303万
展开全部
提示的意思就是说array_merge不是一个数组,

你检查一下array_merge从哪里获取的,应该就可以找到问题的所在。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式