欢迎光临
感谢一路有你

PHP 过滤 $_POST 或 $_GET 接收的参数

如果你对该文章中的内容有疑问/不解,可以点击此处链接提问
要注明问题和此文章链接地址 点击此处跳转
 

<code class="">/************************* 
说明: 
判断传递的变量中是否含有非法字符 
如$_POST、$_GET 
功能: 
防注入 
*************************/
//你想要过滤的非法字符 
$ArrFiltrate=array(&quot;'&quot;,&quot;or&quot;,&quot;and&quot;,&quot;union&quot;,&quot;where&quot;,&quot;&amp;&quot;,&quot;join&quot;); 

//出错后要跳转的url,不填则默认前一页 

$StrGoUrl=&quot;&quot;; 

//是否存在数组中的值 

function FunStringExist($StrFiltrate,$ArrFiltrate){ 

    foreach ($ArrFiltrate as $key=>$value){ 
//var_dump($value)exit();
 if (@eregi($value,$StrFiltrate)){   //eregi(规则,被验证字符串) 不区分大小写的正则表达式匹配,该函数只支持php 4,5版本

    return true; 

 } 



return false; 



 //合并$_POST 和 $_GET ,把它们的值都存到 $ArrPostAndGet[] 这个数组里
$HTTP_POST_VARS=$_POST;
$HTTP_GET_VARS=$_GET;
foreach($HTTP_POST_VARS as $key=>$value){ 

    $ArrPostAndGet[]=$value; 


foreach($HTTP_GET_VARS as $key=>$value){ 

    $ArrPostAndGet[]=$value; 


//var_dump($ArrPostAndGet);exit;

 //验证开始 

foreach($ArrPostAndGet as $key=>$value){ 

    if (FunStringExist($value,$ArrFiltrate)){ //返回 true 说明含有非法字符串

        if (empty($StrGoUrl)){ 
//让它返回上一步,也可以让它退出登录,还可把本次操作加入日志(该用户非法操作)
            echo &quot;&lt;script language='javascript'>history.go(-1);&lt;/script>&quot;; 

        }else{ 

            echo &quot;&lt;script language='javascript'>window.location='&quot;.$StrGoUrl.&quot;';&lt;/script>&quot;; 

        } 

        exit; 

    } else{
    //不含有非法字符串,不做操作
        $_GET=$_GET;
        $_POST=$_POST;

    }



/***************结束防止PHP注入*****************/
</code>
赞(1) 打赏
未经允许不得转载:王明昌博客 » PHP 过滤 $_POST 或 $_GET 接收的参数
分享到: 更多 (0)

相关推荐

  • 暂无文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

×
订阅图标按钮