当GET和POST发送相同的值时,$ _REQUEST将返回什么?

时间:2015-08-06 06:06:17

标签: php forms post get

我正在尝试在PHP中创建一个表单,我使用用户ID通过GET以表格形式显示数据,但在通过POST提交表单后,我将用户ID存储在隐藏字段中..

尝试此操作时,我对GETPOSTREQUEST感到困惑。

看到这种情况

<form action="script.php?id=777" method="post">
     ID: <input type="text" name="id" />
     <input type="submit" value="Send" />
</form>

我们假设我在文本字段中输入'888' 提交此表单时,$_REQUEST['id'];应提供什么值?

所有php versions都是一样的吗?

如果我将文字字段留空,会发生什么?

如果我将行动更改为action="script.php?id="会怎样?

2 个答案:

答案 0 :(得分:3)

<强> 01

如果表单在post方法

<form action="script.php" method="post">
     ID: <input type="text" name="id" />
     <input type="submit" value="Send" />
</form>

script.php中,您可以使用

获取数据
$id = $_POST['id'];//works
$id = $_REQUEST['id'];//works
$id = $_GET['id'];//Failed

<强> 02

如果表单在get方法

<form action="script.php" method="get">
     ID: <input type="text" name="id" />
     <input type="submit" value="Send" />
</form>

script.php中,您可以使用

获取数据
$id = $_GET['id'];//works
$id = $_REQUEST['id'];//works
$id = $_POST['id'];//Failed

您可以参考$_REQUEST vs $_GET and $_POSTWhat's wrong with using $_REQUEST[]?

答案 1 :(得分:3)

实际订单在PHP.ini文件的“request_order”设置中确定

; This directive determines which super global data (G,P,C,E & S) should
; be registered into the super global array REQUEST. If so, it also determines
; the order in which that data is registered. The values for this directive are
; specified in the same manner as the variables_order directive, EXCEPT one.
; Leaving this value empty will cause PHP to use the value set in the
; variables_order directive. It does not mean it will leave the super globals
; array REQUEST empty.
; Default Value: None
; Development Value: "GP"
; Production Value: "GP"
; http://php.net/request-order
request_order = "GP"

通常默认设置为Get then Post。在这种情况下,您将id参数作为get AND作为post参数提供。这意味着$ _REQUEST首先填充$ _GET,然后填充$ _POST。含义$ _REQUEST将反映$ _POST。