1

我正在重新实现客户端没有源代码并且正在失去对服务器的访问权限的 REST API...

我发现呼叫者正在发送帖子但没有发布数据。所有参数都在 URL 中指定,或者如果它是张贴表单将是什么操作。

像这样:

"POST http://foo.com/api/rest/?method=users.add_user&token=foo&section=bar&group=baz HTTP/1.1" 200 605 "-" "-" 

令我惊讶的是,这些参数既不在 $_GET 也不在 $_POST 中,而仅在 $_REQUEST 中可用。

我在这里错过了什么吗?为什么它们不在 $_GET 中作为访问的 URL 的一部分?显而易见的答案是“因为这是一个 POST 所以 GET 是未定义的”?

有人能告诉我我对那些超级全球人的误解吗?

4

1 回答 1

2

$_GET 和 $_POST 是空的,因为您使用的是 POST 协议,但通过 GET 方法发送变量(在 URL 中编码它们)。

PHP 正在查找使用的 POST 方法,因此它将 $_GET 变量中的信息设置为空,然后将表单的 POST 数据中发送的变量解析为 $_POST 变量,即:空。

另一方面,$_REQUEST 变量在不同的机制上运行,它将解析请求中的所有变量,无论它们来自 cookie、多部分数据、post、get 等。这就是你在那里看到它们的原因。

通常脚本和应用程序无论如何都会处理 $_REQUEST 数据,因为它是所有数据的更简洁的集合,并且由于从技术上讲,您不能在同一请求中拥有 GET 和 POST 数据,因此您不必担心之间的冲突数据集。

于 2012-02-16T17:55:08.457 回答