GET变量是否覆盖POST变量?

时间:2013-10-26 07:23:41

标签: php post get

假设我有一个表单,用于发布其字段,例如说payment.php?amount=100

而不是使用

$amount=$_POST['amount'];

如果我使用该怎么办:

$amount=$_REQUEST['amount'];

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

4 个答案:

答案 0 :(得分:6)

如果您使用 PHP 5.3 ,则可以选择$_REQUEST订单。从PHP手册:

  

request_order指令描述了PHP将GETPOSTCookie变量注册到_REQUEST数组中的顺序。注册从左到右完成,较新的值覆盖较旧的值。

正如它所说,它提供了$_POST$_GET更多的偏好。因此,如果您有两个相同的值,则$_REQUEST将采用$_POST的值而不是$_GET

答案 1 :(得分:2)

POST和GET是两个不同的超级全局变量,它们不会互相覆盖。

php.ini中的request_order配置指令将确定$_REQUEST

中将包含哪些超级全局变量(GET,POST,COOKIE,ENV和SERVER)

http://php.net/request-order

  

该指令描述了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