如何在请求格式错误时获取原始请求数据?

时间:2011-11-03 15:32:08

标签: php http post

我一直在研究使用POST请求发送到我的PHP Web服务的数据的问题,并且有时在中间某处截断了。我发现它是由于未转义的&符号(&)在中间切割数据。例如,如果在POST中,数据为:

data=foobar&morethings

然后我只会有“数据”=>我的$ _POST数组中的“foobar”和“morethings”部分丢失了。

显而易见的解决方案是修复将POST请求发送到我的web服务的软件,以便它逃脱&符号,但现在这实际上是不可能的(我们不能让我们的用户如此轻松地更新软件)。因此,我必须找到一个临时的解决方法。

是否有可能从PHP检索原始数据,因为它被发送到Web服务之前,它被解析后的POST数据被解析了?

2 个答案:

答案 0 :(得分:4)

file_get_contents('php://input');

http://php.net/manual/en/wrappers.php.php

答案 1 :(得分:2)

是的,有两种选择。

  1. 使用$xml = file_get_contents('php://input');阅读原始发布数据。

  2. 使用$HTTP_RAW_POST_DATA。这不太可靠,因为根据PHP ini设置,并不总是填充该变量。