"a POST request also has $_GET parameters" 是什么意思

What is the meaning of "a POST request also has $_GET parameters"

您好,我正在研究 $_GET$_POST 方法之间的差异,我看到一些文章说

When should I use GET or POST method? What's the difference between them?

http://www.sitepoint.com/on-get-and-post/

还有一个例子

For example, let's say you have a form for editing an article. The article-id may be in the query string (and, so, available through $_GET['id']), but let's say that you want to change the article-id. The new id may then be present in the request body ($_POST['id']).

那么怎么才能同时使用$_GET['id'] and $_POST['id']呢,迷惑。 请用一个简单的例子来解释这一点。所以包括我在内,不懂这个的大家可以好好理解。

提前谢谢你:)

也许理解这一点的最简单方法是 $_GET 的命名很糟糕。它实际上代表的是从 ? 之后的 URL 部分解析出来的 "query string" 参数的值。由于每个请求都有一个 URL,无论它是什么类型,任何请求都可以填充 $_GET.

另一方面,

$_POST 仅针对 POST 请求填充,即便如此,也仅针对那些请求正文采用特定格式的请求填充。

当您在 HTML 中使用 method=get 时,浏览器只是根据表单数据创建一个 URL,并通过 GET 请求请求 URL就像你在地址栏中输入它一样。对于 method=post,表单数据与 URL 分开发送,但 URL 可能仍包含 ? 和查询字符串。

我举个例子给大家解释一下:

<form method='post' action='edit-article.php?article_id=3'>
    <label for='article_name'>Article name:</label>
    <input type='text' name='article_name' value='' />
    <input type='submit' name='edit' value='Change article name' />
</form>

当您按下提交时,您将被重定向到 edit-article.php?article_id=3

在这里您将设置以下变量: $_GET['article_id'](来自 url)、$_POST['article_name'](来自表单)和 $_POST['edit'](提交按钮,也通过表单)

这样想。你有两个完全不同的数组:

$A = array();
$B = array();

现在可以写这段代码了:

$A['id'] = 8;
$B['id'] = 5;

以上代码完全有效。这些是不同的数组,它们恰好具有相同的键,但分配给它们的值不同。

$_GET$_POST 是不同的变量。您写入 url 查询的所有内容都将显示在 $_GET 变量中,您通过 POST 发送的所有内容最终将显示在 $_POST 中。因此,您可以在 URL 查询和 POST 数据中设置相同的键。

然而,$_REQUEST保存$_GET$_POST$_COOKIE的数据。如果您在 $_POST$_GET 中有相同的键,我们可以假设 $_REQUEST 将仅包含其中一个值。其实我也不知道,$_REQUEST会保存哪个值,希望有人知道,因为我很好奇。