另外:
$_COOKIE的使用受到php.ini中variables_order选项设置的影响,
请问variables_order = "EGPS"时,怎么获取cookie值?
18 个解决方案
#1
没有影响. 取cookie 还是使用 $_COOKIE 来取..
而 variables_order 最主要, 还是用于同名变量时的值的优先...
如 $_GET['a'] $_POST['a'], $_ENV['a'], $_COOKIE['a']
在 早期的PHP中..
$a 倒底以 GET 为值?还是POST 为值, 还是....
新版PHP中, 已经把这种方式快抛弃了....
而 variables_order 最主要, 还是用于同名变量时的值的优先...
如 $_GET['a'] $_POST['a'], $_ENV['a'], $_COOKIE['a']
在 早期的PHP中..
$a 倒底以 GET 为值?还是POST 为值, 还是....
新版PHP中, 已经把这种方式快抛弃了....
#2
HTTP_RAW_POST_DATA
应该是POST数据的原始内空.
$_POST 是 array
HTTP_RAW_POST_DATA 应该是一个串....
应该是POST数据的原始内空.
$_POST 是 array
HTTP_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内容输出
?>
<?php
//第一次测试时,variables_order = "EGPCS"
setcookie('user','values',time()+36000);
var_dump($_COOKIE);//可看到所有cookie内容输出
?>
<?php
//第二次测试时,variables_order = "EGPS"
var_dump($_COOKIE);//此时看不到任何cookie内容输出
?>
#4
没有用过。这个函数不常用
#5
没人关注这个问题?
#6
webservice好像用到
#7
支持.
外部变量还是不要偷懒,
还是register_globals = Off比较好
这样会造成安全问题,还有混乱.
#8
就是原始的http body post串.最好用file_get_contents("php://input")代替。
#9
为什么我将variables_order = "EGPS"时,$_COOKIE取不到值呢,一但改回variables_order = "EGPCS"时,又能取到值了。。。
#10
http://www.phpman.com.cn/archives/143
#11
手册分明有写。。。
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设置值,按照顺序构建全局变量。
#12
是你没看明白我的话,还是我没看明白你的话?
我意思是说,当我设置variables_order = "EGPS"时,为什么从$_COOKIE数组中取不到值了,而设置成variables_order = "EGPCS"时,是可以取得值的。
但大家都说variables_order只是在变量同名时存在哪个值有效的影响,并不应该有我上面如指这个情况啊。
这是怎么回事呢?
#13
刚接触PHP的新手来学习了。
#14
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 中.
#15
static void main(){}
#16
那么回到了最开头的问题,如果variables_order 没有包含“C”的情况下,如何获取COOKIE值(对PGSE也有相同的疑问)?
#17
顶起来
#18
基本上$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST是一样的。但是如果post过来的数据不是PHP能够识别的,你可以用 $GLOBALS['HTTP_RAW_POST_DATA']来接收,比如 text/xml 或者 soap 等等。
PHP默认识别的数据类型是application/x-www.form-urlencoded标准的数据类型。
PHP默认识别的数据类型是application/x-www.form-urlencoded标准的数据类型。
#1
没有影响. 取cookie 还是使用 $_COOKIE 来取..
而 variables_order 最主要, 还是用于同名变量时的值的优先...
如 $_GET['a'] $_POST['a'], $_ENV['a'], $_COOKIE['a']
在 早期的PHP中..
$a 倒底以 GET 为值?还是POST 为值, 还是....
新版PHP中, 已经把这种方式快抛弃了....
而 variables_order 最主要, 还是用于同名变量时的值的优先...
如 $_GET['a'] $_POST['a'], $_ENV['a'], $_COOKIE['a']
在 早期的PHP中..
$a 倒底以 GET 为值?还是POST 为值, 还是....
新版PHP中, 已经把这种方式快抛弃了....
#2
HTTP_RAW_POST_DATA
应该是POST数据的原始内空.
$_POST 是 array
HTTP_RAW_POST_DATA 应该是一个串....
应该是POST数据的原始内空.
$_POST 是 array
HTTP_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内容输出
?>
<?php
//第一次测试时,variables_order = "EGPCS"
setcookie('user','values',time()+36000);
var_dump($_COOKIE);//可看到所有cookie内容输出
?>
<?php
//第二次测试时,variables_order = "EGPS"
var_dump($_COOKIE);//此时看不到任何cookie内容输出
?>
#4
没有用过。这个函数不常用
#5
没人关注这个问题?
#6
webservice好像用到
#7
支持.
外部变量还是不要偷懒,
还是register_globals = Off比较好
这样会造成安全问题,还有混乱.
#8
就是原始的http body post串.最好用file_get_contents("php://input")代替。
#9
为什么我将variables_order = "EGPS"时,$_COOKIE取不到值呢,一但改回variables_order = "EGPCS"时,又能取到值了。。。
#10
http://www.phpman.com.cn/archives/143
#11
手册分明有写。。。
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设置值,按照顺序构建全局变量。
#12
是你没看明白我的话,还是我没看明白你的话?
我意思是说,当我设置variables_order = "EGPS"时,为什么从$_COOKIE数组中取不到值了,而设置成variables_order = "EGPCS"时,是可以取得值的。
但大家都说variables_order只是在变量同名时存在哪个值有效的影响,并不应该有我上面如指这个情况啊。
这是怎么回事呢?
#13
刚接触PHP的新手来学习了。
#14
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 中.
#15
static void main(){}
#16
那么回到了最开头的问题,如果variables_order 没有包含“C”的情况下,如何获取COOKIE值(对PGSE也有相同的疑问)?
#17
顶起来
#18
基本上$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST是一样的。但是如果post过来的数据不是PHP能够识别的,你可以用 $GLOBALS['HTTP_RAW_POST_DATA']来接收,比如 text/xml 或者 soap 等等。
PHP默认识别的数据类型是application/x-www.form-urlencoded标准的数据类型。
PHP默认识别的数据类型是application/x-www.form-urlencoded标准的数据类型。