gpt4 book ai didi

PHP "php://input"与 $_POST

转载 作者:IT老高 更新时间:2023-10-28 11:39:35 24 4
gpt4 key购买 nike

在与来自 JQuery 的 Ajax 请求交互时,我被指示使用方法 php://input 而不是 $_POST。我不明白的是使用这个与 $_POST$_GET 的全局方法相比的好处。

最佳答案

原因是 php://input 返回请求的 HTTP-headers 之后的所有原始数据,无论内容类型如何。

PHP 超全局$_POST,只有应该包装数据,要么是

  • application/x-www-form-urlencoded(简单表单帖子的标准内容类型)或
  • multipart/form-data(多用于文件上传)

这是因为只有这些内容类型 must be supported by user agents .所以服务器和 PHP 传统上不期望接收任何其他内容类型(这并不意味着它们不能)。

所以,如果你只是简单地 POST 一个好的旧 HTML form,请求看起来像这样:

POST /page.php HTTP/1.1

key1=value1&key2=value2&key3=value3

但如果您经常使用 Ajax,这可能还包括使用类型(字符串、int、bool)和结构(数组、对象)交换更复杂的数据,因此在大多数情况下 JSON 是最佳选择。但是带有 JSON 有效负载的请求看起来像这样:

POST /page.php HTTP/1.1

{"key1":"value1","key2":"value2","key3":"value3"}

内容现在将是 application/json (或者至少不是上面提到的),所以 PHP 的 $_POST-wrapper 不知道如何处理它(然而)。

数据仍然存在,只是无法通过包装器访问它。因此,您需要使用 file_get_contents('php://input') ( as long as it's not multipart/form-data-encoded ) 以原始格式自己获取它。

这也是您访问 XML 数据或任何其他非标准内容类型的方式。

关于PHP "php://input"与 $_POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8893574/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com