假设我有一个表单,它发布它的字段,比如说payment.php?amount=100
而不是使用
$amount=$_POST['amount'];
如果我使用:
$amount=$_REQUEST['amount'];
我的问题是,当$_REQUEST
方法可以用于检索 get 和 post 变量时,表单发送的 post 变量是否被 get 变量覆盖?
如果您使用的是PHP 5.3,那么您可以选择$_REQUEST
顺序。来自 PHP 手册:
该
request_order
指令描述了 PHP在数组中注册和GET
变量的顺序。注册是从左到右完成的,较新的值会覆盖较旧的值。POST
Cookie
_REQUEST
正如它所说,它对$_POST
than给予更多的偏好$_GET
。因此,如果您有两个相同的值,$_REQUEST
则将采用$_POST
' 值而不是$_GET
.
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
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.
$_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
$_REQUEST 处理 $_POST 和 $_GET 值
$_POST
最终用户看不到方法,因此他/她无法操纵此信息,因此更安全,并且没有像$_GET
方法那样发送信息的限制。
$_REQUEST
方法用于在页面调用的数据传输中接收信息的数据,而与数据发送方法无关...
最重要的是$_REQUEST
方法仅用于读取传递的信息,而不用于通过页面调用发送信息。
无论哪种方式,速度差异都应该是最小的,当然POST 在使用 REQUEST 时会覆盖 GET