2016-04-15 41 views
0

对于使用GET请求,我们可以查询字符串转换成串串,

parse_str($_SERVER['QUERY_STRING']); 

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

+2

POST数据在'$ _POST'中。 – paskl

+1

'json_encode($ _ REQUEST)'会让你获得json序列化的get,post和cookie参数。 –

+0

@vp_arth http://stackoverflow.com/a/2143042/208809 – Gordon

回答

1

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

使用application/x-www-form-urlencodedmultipart/form-data或作为在请求中的HTTP内容类型时引用传递给经由HTTP POST方法的当前脚本变量的PHP Manual for $_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"