我了解,如果我创建一个HTML表单,并将action属性设置为PHP脚本,则可以通过超级全局$ _POST访问POST数据。我的问题是这是怎么发生的?
如果我有一个像这样的简单表格:
<form action="script.php" method="POST">
<input type="text" name="fname">
<input type="submit" value="Submit">
</form>
还有一个简单的脚本,如下所示:
<?php
echo $_POST["name"];
?>
什么机制将POST请求中的原始表单数据带入PHP?有某种CGI脚本吗? Ruby说,另一种语言的等效含义是什么?
答案 0 :(得分:1)
通过变量传递给当前脚本的变量关联数组 使用application / x-www-form-urlencoded或 multipart / form-data作为请求中的HTTP Content-Type。
$ HTTP_POST_VARS包含相同的初始信息,但不是 超全球(请注意,$ HTTP_POST_VARS和$ _POST是不同的 变量,而PHP照这样处理它们)
https://www.php.net/manual/en/reserved.variables.post.php
这只是一个超全局变量,PHP解释器将存储所有发布数据,直到清除下一个请求为止。
答案 1 :(得分:1)
通过浏览器提交表单时,浏览器将获取数据并对其进行序列化,然后将其通过HTTP / HTTPS请求发送至Web服务器。
对于GET表单,数据会序列化并附加到URL中的字符串查询中,例如myphp.php?field1=foo&field2=bar
对于POST数据,它被插入到请求的主体中。
然后,根据请求的类型,PHP引擎将解析接收到的数据,为方便起见,URL对其进行解码,并用它填充超全局变量。在上面的示例中,数据将如下所示:
$_GET = [
'field1' => 'foo',
'field2' => 'bar'
];
与PERL这样的语言相比,这是PHP的一个不错的功能,它迫使您自己解析输入数据。