使用$ _SERVER将许多POST请求转换为字符串

时间:2016-04-15 05:40:20

标签: php

对于get请求,我们可以使用

将查询字符串转换为字符串
parse_str($_SERVER['QUERY_STRING']);

但是对于post方法,上面的方法不起作用。是否有另一种方法可以对字符串进行查询。

1 个答案:

答案 0 :(得分:1)

除非您从命令行运行PHP,否则PHP将使用已解析的查询值和相应的帖子正文值填充superglobal arrays $_GET$_POST(以及其他)。它会自动执行此操作,因此没有理由为parse_str显示查询字符串。

引用PHP Manual for $_POST

  

在请求中使用application/x-www-form-urlencodedmultipart/form-data作为HTTP Content-Type时,通过HTTP POST方法传递给当前脚本的关联变量数组。

这是访问POST数据的首选方式。但是,您也可以访问原始帖子正文via the php://input stream or $HTTP_RAW_POST_DATA(后者在PHP 5.6.0中已弃用,从PHP 7.0.0起已被删除)。

引用PHP Manual on input streams

  

php://input是一个只读流,允许您从请求正文中读取原始数据。对于POST请求,最好使用php://input而不是$HTTP_RAW_POST_DATA,因为它不依赖于特殊的php.ini指令。此外,对于默认情况下未填充$HTTP_RAW_POST_DATA的情况,它可能是激活always_populate_raw_post_data的内存密集型替代方案。 php://input无法使用enctype="multipart/form-data"