我正在尝试在PHP
中创建一个表单,我使用用户ID通过GET以表格形式显示数据,但在通过POST提交表单后,我将用户ID存储在隐藏字段中..
尝试此操作时,我对GET
,POST
和REQUEST
感到困惑。
看到这种情况
<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="
会怎样?
答案 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 $_POST和What'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。