具有 PHP 机制的 HTML 表单



我试图了解将HTML表单发送到PHP脚本时发生的事情背后的机制,最重要的是_GET美元和_POST美元中的实际内容。

到目前为止,我对它的理解:当提交 HTML 表单时,会向服务器发出 HTTP 请求,并且 HTML 表单中 name="value" 对的值部分入到超全局 PHP 数组中,可以是 $_GET 或 $_POST,具体取决于用于发送数据的方法。右?

我的问题:

  1. 如果我们给出一个输入元素:name="test[]"并使用 post 方法发送它,那么根据上述信息,字符串 "test[]" 被发送到 $_POST。那么 $_POST 是否包含值为"test[]"的字符串,或者它是否包含名为 test 的数组?我们是否将数组放在数组中?
  2. 给定 name="name" 的输入,如果只将字符串"name"发送到服务器,它如何选择用户在该字段中键入的值。

name[]这样的名称被扩展为数组,但可能不像你想象的那样。如果您有:

<input type="checkbox" name="foo[]" value="bar" />
<input type="checkbox" name="foo[]" value="ipsum" />

如果您同时选中这两个复选框。您将获得:

array(
    "foo" => array("bar", "ipsum")
)

如果您只检查第二个,您将获得:

array(
    "foo" => array("ipsum")
)

如果您不检查任何内容,您将获得:

array()

(所以甚至不存在密钥foo(。

对于文本输入,它只会发送一个空值,如下所示:

array(
    "foo" => ""
)

但是对于复选框,情况就不同了。

浏览器将从表单发送所有值,它看起来像这样name1=val1&name2=val2(名称和值对用&分隔(。

然后它会解析它(您可以使用parse_str()进行测试(并放置在$_POST$_GET数组中(取决于表单方法(。在此步骤中,所有[]将扩展到数组。

是的,您可以将数组放在数组中。您也可以将下一个数组放入该数组中:)它被称为multidimensional array.

最新更新