当前位置: 首页 > 面试题库 >

PHP“ php:// input”与$ _POST

东郭骁
2023-03-14
问题内容

我被指示使用该方法,php://input而不是$_POST与JQuery的Ajax请求进行交互时使用。我不了解使用vs
$_POST或全局方法的好处$_GET


问题答案:

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

PHP superglobal $_POST 包装以下任一html" target="_blank">数据

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

这是因为这些是用户代理 必须 支持的唯一内容类型。因此,服务器和PHP传统上不希望接收任何其他内容类型(这并不意味着它们不能)。

因此,如果您只发布一个好的旧HTML form,则请求看起来像这样:

POST /page.php HTTP/1.1

key1=value1&key2=value2&key3=value3

但是,如果您经常使用Ajax,那么这种可能性还包括使用类型(字符串,整数,布尔值)和结构(数组,对象)交换更复杂的数据,因此在大多数情况下,JSON是最佳选择。但是带有JSON有效负载的请求如下所示:

POST /page.php HTTP/1.1

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

现在的内容是application/json(或至少没有上述内容),因此PHP的$_POST-wrapper不知道该如何处理。

数据仍然在那里,您只是无法通过包装器访问它。因此,您需要使用file_get_contents('php://input')(只要未multipart/form- data编码)原始格式来获取它。

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



 类似资料:
  • 问题内容: 我有一个很大的html表单(包含带行的表,其中包含多个输入),我需要通过POST请求提交给PHP脚本。问题是PHP的$ _POST超全局变量中没有提供某些值并且不存在这些值。 我检查(使用Firebug扩展名)这些值实际上是由浏览器发送到服务器的。 $ _POST被填充,但是一些值丢失了。 我使用以下命令检查了原始请求: 并且返回的字符串具有值。它们只是不解析为$ _POST数组。我注

  • 本文向大家介绍php使用file_get_contents(‘php://input‘)和$_POST的区别实例对比,包括了php使用file_get_contents(‘php://input‘)和$_POST的区别实例对比的使用技巧和注意事项,需要的朋友参考一下 本文学习目的: 为什么和第三方平台对接接口的时候,在接收http请求数据包时,一般都是用file_get_contents("php

  • 问题内容: 我正在尝试使用jQuery $ .ajax(),但遇到了一些困难。 这是我要用于POST的文本框字段: 这是代码: 现在这是file.php: 现在,我的问题是,如何在此PHP代码中返回变量并在上面的代码中使用它们,我的意思是$ .ajax()的成功部分。另外,如果我想对$ url变量执行一些其他操作,该怎么做?如何退货?:/ 问题答案: 您只需打印/回显您的“返回”值即可。 file

  • 问题内容: 我努力理解之间的区别和… 我一直习惯于执行服务器端命令,何时使用? 是否只是一个速记?较少的参数似乎是同一件事。 问题答案: 以字符串形式返回所有输出流。默认情况下返回输出的最后一行,但是可以将所有输出作为指定为第二个参数的数组提供。

  • 问题内容: 访问REST API时,这两段代码有何不同? 和 从以下两个方面判断,它们都产生相同的结果 问题答案: 是一个简单的螺丝刀。非常适合简单的GET请求,其中标头,HTTP请求方法,超时,cookiejar,重定向和其他重要内容无关紧要。 带有流上下文或带有setopt的cURL 的Powerdrill带有您可以想到的每一个细节。

  • 本文向大家介绍PHP readfile与file_get_contents,包括了PHP readfile与file_get_contents的使用技巧和注意事项,需要的朋友参考一下 “ readfile”函数是PHP中的内置函数,可将文件直接读取到输出缓冲区中。文件名作为参数传递给函数。它返回在成功读取数据的情况下读取的字节数。否则返回FALSE- 示例 输出结果 这将产生以下输出- “ fil