在PHP4里,global设置默认是off,那你用post方法传递变量的时候,直接用$就取不到,必须用$_POST['name']PHP3里是on ,所以可以随便用。

解决方案 »

  1.   

    打开的话没什么区别
    但是建议关闭后用$_POST好点
      

  2.   

    global如果是off那不仅是post,其他的get、session等等都不能直接用$取,养成好习惯$_POST方式取怎么都不会错!
      

  3.   

    呵呵,这个算是我学习PHP的时候碰到比较郁闷的问题,也是比较经典的问题。global_register 这个选项是在php.ini里面设置的,如果该选项为on的话,那么就是说我们通过get或者post的变量就自动是全局变量,就能够直接访问,比如: test.php?id=1&name=heiyeluren,那么我们在程序里就能够直接引用变量id和变量name了,post变量也是一样。
    如果global_register为off的情况下,那么我们通过get或者post的变量就无法直接引用,因为不是全局变量,而且把变量存进了一个数组里,比如get过来的变量:test.php?id=1&name=heiyeluren,那么变量就存储进了一个叫做$_GET的数组里,那么我们要引用id这个变量的话,就必须使用 $_GET[id]来引用了,因为id已经是$_GET这个数组里面的一个元素了,如果要引用post的变量,就使用$_POST来引用。php3里面php.ini中register_global默认的值是on,也就是说默认就是打开全局变量的,就能够直接引用变量。php4以后的php.ini里面的register_global是off,就是关闭了全局变量,那么你要引用的时候就必须使用$_GET和$_POST数组来引用,如果你是直接引用的话,那么就会出错了。如果你的代码是全局变量的,那么你可以更改php.ini中的register_global = on来恢复全局变量注册来解决你的问题。另外,你肯定想知道为什么要有这么一个选项,搞的这么复杂,其实是为了安全。更详细的知识可以去搜索一下。
      

  4.   

    php真是有点复杂,这个小问题能讲这么多,呵呵,也许是我表达能力不行。 -_-#
      

  5.   

    建议先将传递同变量名的值先清空
    such as
    <?php
    $id="";
    $name="";
    $id=$_POST['id'];
    $name=$_POST['id'];?>
      

  6.   

    说到底还是为了安全,其实直接取变量和$_POST['var'] 是一样的!只不过后者更安全罢了!