为什么服务器里 $HTTP_POST_VARS 获取不到值
而本机测试可以是不是服务器里php.in少开启什么,。

解决方案 »

  1.   

    HTTP_POST_VARS是个早已废弃的变量
    用$_POST
      

  2.   

    是不是把HTTP_POST_VARS改成$_POST
      

  3.   

    这个是过滤代码自己电脑执行HTTP_POST_VARS
    服务器不执行HTTP_POST_VARS<?php
    //要过滤的非法字符
    $ArrFiltrate=array("script","insert into","union");
    //出错后要跳转的url,不填则默认前一页
    $StrGoUrl="";
    //是否存在数组中的值
    function FunStringExist($StrFiltrate,$ArrFiltrate){
    foreach ($ArrFiltrate as $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)){
    header("Content-Type:text/html;charset=utf-8;");
    echo "<script language=\"javascript\">alert(\"非法字符输入!\");</script>
    <script language=\"javascript\">history.go(-1);</script>";
    if (emptyempty($StrGoUrl)){ 
    echo "<script language=\"javascript\">history.go(-1);</script>";
    }else{ 
    echo "<script language=\"javascript\">window.location=\"".$StrGoUrl."\";</script>";
    }
    exit;
    }
    }
    ?>
      

  4.   

    HTTP_POST_VARS 是标准 CGI 环境变量簇的成员使用形如 $HTTP_POST_VARS 需要 register_globals = on
    而php建议你 register_globals = off自 php 4.1.0 开始出现了替代品 $_POST
      

  5.   

    谢谢xuzuning,我测试下服务器
      

  6.   

    服务器改好了
     register_globals 里有个数组是OFF,我改成ON 可以了,不过谢谢你,知道哪里错了