假设我有一个表单,用于发布其字段,例如说payment.php?amount=100
而不是使用
$amount=$_POST['amount'];
如果我使用该怎么办:
$amount=$_REQUEST['amount'];
我的问题是,当$_REQUEST
方法可用于检索get和post变量时,表单发送的post变量是否会被get变量覆盖?
答案 0 :(得分:6)
如果您使用 PHP 5.3 ,则可以选择$_REQUEST
订单。从PHP手册:
request_order
指令描述了PHP将GET
,POST
和Cookie
变量注册到_REQUEST
数组中的顺序。注册从左到右完成,较新的值覆盖较旧的值。
正如它所说,它提供了$_POST
比$_GET
更多的偏好。因此,如果您有两个相同的值,则$_REQUEST
将采用$_POST
的值而不是$_GET
。
答案 1 :(得分:2)
POST和GET是两个不同的超级全局变量,它们不会互相覆盖。
php.ini中的request_order
配置指令将确定$_REQUEST
该指令描述了PHP将GET,POST和Cookie变量注册到_REQUEST数组的顺序。注册从左到右完成,较新的值覆盖较旧的值。
一般情况下(默认情况下),它设置为GP。这意味着在最终的_REQUEST数组中,如果两者都存在,POST将覆盖GET。
答案 2 :(得分: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
答案 3 :(得分:1)
$ _ REQUEST同时处理$ _POST和$ _GET值
$_POST
方法对最终用户不可见,因此他/她无法操纵此信息,因此它更安全,并且没有$_GET
方法发送信息的限制。
$_REQUEST
方法用于接收页面调用上数据传输的信息数据,无论数据发送方法是什么......
最重要的是$_REQUEST
方法仅用于读取传递给它的信息,而不是用于通过页面调用发送信息。
速度差异应该是最小的,当然 POST使用REQUEST覆盖GET