将php.ini中的register_global设置为off,
只通过_GET或_POST去访问提交过来的数据.
不要自动注册成全局变量.这样会带来莫大的安全隐患.

解决方案 »

  1.   

    我是新手, 通过page1传递一个str_abc参数给page2page2的代码如下:
    echo '$_REQUEST['str_abc']';
    echo $str_abc;if ($_REQUEST['str_abc']==$str_abc)
        echo '$_REQUEST[\'str_abc\']=$str_abc';运行结果显示,
    $_REQUEST['str_abc']与$str_abc的内容是一样的,并且我在page2里并没有声明$str_abc这个变量,困惑ing........
      

  2.   

    给你说了.如果register_global开着了ON.它会自动将request注册成变量.
      

  3.   


    说得对,对于register_global设置是从PHP3到PHP4.1(好像)版本之前的产物,之前PHP没有引入预定义变量的概念而对于变量只要定义,即可通过变量名称进接获得,为了盈合大多数以及PHP之初开发者们,而被延用,之后因为发现$_FILE方式不错,被PHP4.1之后版本引入,这样对于传来的变量区分成为$_POST与$_GET了。同时引入$_GLOBAL,$_SESSION,$_COOKIE等预定义变量。
    PS:相信之后PHP6版本的时候应该会将该设置去掉。