本帖最后由 seai 于 2010-06-08 03:12:10 编辑

解决方案 »

  1.   

    没有影响. 取cookie 还是使用 $_COOKIE 来取..而 variables_order 最主要, 还是用于同名变量时的值的优先...如 $_GET['a']  $_POST['a'], $_ENV['a'], $_COOKIE['a']在 早期的PHP中..$a 倒底以 GET 为值?还是POST 为值, 还是....新版PHP中, 已经把这种方式快抛弃了....
      

  2.   

    HTTP_RAW_POST_DATA应该是POST数据的原始内空.$_POST 是 arrayHTTP_RAW_POST_DATA 应该是一个串....
      

  3.   

    我自已试验时,variables_order = "EGPS"用$_COOKIE取不到cookie(环境:iis5.1+php5.3),试验过程如下:
    <?php
    //第一次测试时,variables_order = "EGPCS"
    setcookie('user','values',time()+36000);
    var_dump($_COOKIE);//可看到所有cookie内容输出
    ?><?php
    //第二次测试时,variables_order = "EGPS"
    var_dump($_COOKIE);//此时看不到任何cookie内容输出
    ?>
      

  4.   

    支持.外部变量还是不要偷懒,
    还是register_globals = Off比较好     
    这样会造成安全问题,还有混乱.
      

  5.   

    就是原始的http body post串.最好用file_get_contents("php://input")代替。
      

  6.   

    为什么我将variables_order = "EGPS"时,$_COOKIE取不到值呢,一但改回variables_order = "EGPCS"时,又能取到值了
      

  7.   

    手册分明有写
      variables_order  string    设定 EGPCS(Environment,GET,POST,Cookie,Server)变量解析的顺序。默认设定为“EGPCS”。举例说,将其设为 “GP”,会导致 PHP 完全忽略环境变量,cookies 和 server 变量,并用 GET 方法的变量覆盖 POST 方法的同名变量。 
    你如果设置为只设置为"P",你连$_GET都得不到任何GET参数值。
    这个和register_globals的设置是先后关系,register_globals如果设置为on,将读取variables_order设置值,按照顺序构建全局变量。
      

  8.   

    是你没看明白我的话,还是我没看明白你的话?我意思是说,当我设置variables_order = "EGPS"时,为什么从$_COOKIE数组中取不到值了,而设置成variables_order = "EGPCS"时,是可以取得值的。但大家都说variables_order只是在变量同名时存在哪个值有效的影响,并不应该有我上面如指这个情况啊。这是怎么回事呢?
      

  9.   

    foolbirdflyfirst 说得对.. 你没有认真读他的回贴... 我没有认真看过这块的手册
    手册上有讲
    http://php.net/manual/en/ini.core.php
    ...
    Sets the order of the EGPCS (Environment, Get, Post, Cookie, and Server) variable parsing. For example, if variables_order is set to "SP" then PHP will create the superglobals $_SERVER and $_POST, but not create $_ENV, $_GET, and $_COOKIE. Setting to "" means no superglobals will be set.
    ...
    variables_order 不但会影响 magic variable 的顺序, 还会影响 它们是否生成.所以, 你的测试是没有问题的.
    你要使用COOKIE, 就一定要把 "C" 置于variables_order 中.
      

  10.   


    那么回到了最开头的问题,如果variables_order 没有包含“C”的情况下,如何获取COOKIE值(对PGSE也有相同的疑问)?
      

  11.   

    基本上$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST是一样的。但是如果post过来的数据不是PHP能够识别的,你可以用 $GLOBALS['HTTP_RAW_POST_DATA']来接收,比如 text/xml 或者 soap 等等。PHP默认识别的数据类型是application/x-www.form-urlencoded标准的数据类型。