请教各位 $HTTP_RAW_POST_DATA的涵义是什么,最常用在什么场合?

时间:2021-07-24 12:06:51
以及与$_POST有何区别?


另外: 

$_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中, 已经把这种方式快抛弃了....

#2


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内容输出
?>

#4


没有用过。这个函数不常用

#5


没人关注这个问题?

#6


webservice好像用到

#7


引用 1 楼 mrshelly 的回复:
没有影响. 取cookie 还是使用 $_COOKIE 来取..

而 variables_order 最主要, 还是用于同名变量时的值的优先...

如 $_GET['a']  $_POST['a'], $_ENV['a'], $_COOKIE['a']

在 早期的PHP中..

$a 倒底以 GET 为值?还是POST 为值, 还是....

新版PHP中, 已经把这种……

支持.

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

#8


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

#9


引用 7 楼 jlzan1314 的回复:
引用 1 楼 mrshelly 的回复:

没有影响. 取cookie 还是使用 $_COOKIE 来取..

而 variables_order 最主要, 还是用于同名变量时的值的优先...

如 $_GET['a']  $_POST['a'], $_ENV['a'], $_COOKIE['a']

在 早期的PHP中..

$a 倒底以 GET 为值?还是POST 为值,……



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

#10


http://www.phpman.com.cn/archives/143

#11


引用 9 楼 seai 的回复:
引用 7 楼 jlzan1314 的回复:

引用 1 楼 mrshelly 的回复:

没有影响. 取cookie 还是使用 $_COOKIE 来取..

而 variables_order 最主要, 还是用于同名变量时的值的优先...

如 $_GET['a']  $_POST['a'], $_ENV['a'], $_COOKIE['a']

在 早期的PHP中..

……

手册分明有写。。。
  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


引用 11 楼 foolbirdflyfirst 的回复:
引用 9 楼 seai 的回复:

引用 7 楼 jlzan1314 的回复:

引用 1 楼 mrshelly 的回复:

没有影响. 取cookie 还是使用 $_COOKIE 来取..

而 variables_order 最主要, 还是用于同名变量时的值的优先...

如 $_GET['a']  $_POST['a'], $_ENV['a'], $_COOKIE['a……



是你没看明白我的话,还是我没看明白你的话?

我意思是说,当我设置variables_order = "EGPS"时,为什么从$_COOKIE数组中取不到值了,而设置成variables_order = "EGPCS"时,是可以取得值的。

但大家都说variables_order只是在变量同名时存在哪个值有效的影响,并不应该有我上面如指这个情况啊。

这是怎么回事呢?

#13


刚接触PHP的新手来学习了。

#14


引用 12 楼 seai 的回复:
引用 11 楼 foolbirdflyfirst 的回复:

引用 9 楼 seai 的回复:

引用 7 楼 jlzan1314 的回复:

引用 1 楼 mrshelly 的回复:

没有影响. 取cookie 还是使用 $_COOKIE 来取..

而 variables_order 最主要, 还是用于同名变量时的值的优先...

如 $_GET['a']  $_P……

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


引用 14 楼 mrshelly 的回复:
variables_order 不但会影响 magic variable 的顺序, 还会影响 它们是否生成.

所以, 你的测试是没有问题的.
你要使用COOKIE, 就一定要把 "C" 置于variables_order 中.


那么回到了最开头的问题,如果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标准的数据类型。

#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 是 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内容输出
?>

#4


没有用过。这个函数不常用

#5


没人关注这个问题?

#6


webservice好像用到

#7


引用 1 楼 mrshelly 的回复:
没有影响. 取cookie 还是使用 $_COOKIE 来取..

而 variables_order 最主要, 还是用于同名变量时的值的优先...

如 $_GET['a']  $_POST['a'], $_ENV['a'], $_COOKIE['a']

在 早期的PHP中..

$a 倒底以 GET 为值?还是POST 为值, 还是....

新版PHP中, 已经把这种……

支持.

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

#8


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

#9


引用 7 楼 jlzan1314 的回复:
引用 1 楼 mrshelly 的回复:

没有影响. 取cookie 还是使用 $_COOKIE 来取..

而 variables_order 最主要, 还是用于同名变量时的值的优先...

如 $_GET['a']  $_POST['a'], $_ENV['a'], $_COOKIE['a']

在 早期的PHP中..

$a 倒底以 GET 为值?还是POST 为值,……



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

#10


http://www.phpman.com.cn/archives/143

#11


引用 9 楼 seai 的回复:
引用 7 楼 jlzan1314 的回复:

引用 1 楼 mrshelly 的回复:

没有影响. 取cookie 还是使用 $_COOKIE 来取..

而 variables_order 最主要, 还是用于同名变量时的值的优先...

如 $_GET['a']  $_POST['a'], $_ENV['a'], $_COOKIE['a']

在 早期的PHP中..

……

手册分明有写。。。
  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


引用 11 楼 foolbirdflyfirst 的回复:
引用 9 楼 seai 的回复:

引用 7 楼 jlzan1314 的回复:

引用 1 楼 mrshelly 的回复:

没有影响. 取cookie 还是使用 $_COOKIE 来取..

而 variables_order 最主要, 还是用于同名变量时的值的优先...

如 $_GET['a']  $_POST['a'], $_ENV['a'], $_COOKIE['a……



是你没看明白我的话,还是我没看明白你的话?

我意思是说,当我设置variables_order = "EGPS"时,为什么从$_COOKIE数组中取不到值了,而设置成variables_order = "EGPCS"时,是可以取得值的。

但大家都说variables_order只是在变量同名时存在哪个值有效的影响,并不应该有我上面如指这个情况啊。

这是怎么回事呢?

#13


刚接触PHP的新手来学习了。

#14


引用 12 楼 seai 的回复:
引用 11 楼 foolbirdflyfirst 的回复:

引用 9 楼 seai 的回复:

引用 7 楼 jlzan1314 的回复:

引用 1 楼 mrshelly 的回复:

没有影响. 取cookie 还是使用 $_COOKIE 来取..

而 variables_order 最主要, 还是用于同名变量时的值的优先...

如 $_GET['a']  $_P……

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


引用 14 楼 mrshelly 的回复:
variables_order 不但会影响 magic variable 的顺序, 还会影响 它们是否生成.

所以, 你的测试是没有问题的.
你要使用COOKIE, 就一定要把 "C" 置于variables_order 中.


那么回到了最开头的问题,如果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标准的数据类型。