-3

假设我有一个表单,它发布它的字段,比如说payment.php?amount=100

而不是使用

$amount=$_POST['amount'];

如果我使用:

$amount=$_REQUEST['amount'];

我的问题是,当$_REQUEST方法可以用于检索 get 和 post 变量时,表单发送的 post 变量是否被 get 变量覆盖?

4

4 回答 4

6

如果您使用的是PHP 5.3,那么您可以选择$_REQUEST顺序。来自 PHP 手册:

request_order指令描述了 PHP在数组中注册和GET变量的顺序。注册是从左到右完成的,较新的值会覆盖较旧的值。POSTCookie_REQUEST

正如它所说,它对$_POSTthan给予更多的偏好$_GET。因此,如果您有两个相同的值,$_REQUEST则将采用$_POST' 值而不是$_GET.

于 2013-10-26T07:26:23.877 回答
3

POST and GET are two different super globals and they do not override each other.

The request_order configuration directive in php.ini will determine which super globals (GET, POST, COOKIE, ENV and SERVER) will be included in $_REQUEST

http://php.net/request-order

This directive describes the order in which PHP registers GET, POST and Cookie variables into the _REQUEST array. Registration is done from left to right, newer values override older values.

In general (by default) it is set to GP. Which means that in the final _REQUEST array, POST will override GET if both exists.

于 2013-10-26T07:35:14.433 回答
1

$_REQUEST 中的变量是通过 GET、POST 和 COOKIE 输入机制提供给脚本的,因此可以由远程用户修改并且不可信。此数组中列出的变量的存在和顺序是根据 PHP variables_order 配置指令定义的。

variables_order string 设置 EGPCS(Environment、Get、Post、Cookie 和 Server)变量解析的顺序。

因此,在您的情况下,POST 是在先。

http://php.net/manual/en/reserved.variables.request.php http://www.php.net/manual/en/ini.core.php#ini.variables-order

于 2013-10-26T07:28:25.473 回答
1

$_REQUEST 处理 $_POST 和 $_GET 值

$_POST最终用户看不到方法,因此他/她无法操纵此信息,因此更安全,并且没有像$_GET方法那样发送信息的限制。

$_REQUEST方法用于在页面调用的数据传输中接收信息的数据,而与数据发送方法无关...

最重要的是$_REQUEST方法仅用于读取传递的信息,而不用于通过页面调用发送信息。

无论哪种方式,速度差异都应该是最小的,当然POST 在使用 REQUEST 时会覆盖 GET

于 2013-10-26T07:30:48.487 回答