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 中.
<?php
//第一次测试时,variables_order = "EGPCS"
setcookie('user','values',time()+36000);
var_dump($_COOKIE);//可看到所有cookie内容输出
?><?php
//第二次测试时,variables_order = "EGPS"
var_dump($_COOKIE);//此时看不到任何cookie内容输出
?>
还是register_globals = Off比较好
这样会造成安全问题,还有混乱.
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设置值,按照顺序构建全局变量。
手册上有讲
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 中.
那么回到了最开头的问题,如果variables_order 没有包含“C”的情况下,如何获取COOKIE值(对PGSE也有相同的疑问)?