我一直在研究使用POST请求发送到我的PHP Web服务的数据的问题,并且有时在中间某处截断了。我发现它是由于未转义的&符号(&)在中间切割数据。例如,如果在POST中,数据为:
data=foobar&morethings
然后我只会有“数据”=>我的$ _POST数组中的“foobar”和“morethings”部分丢失了。
显而易见的解决方案是修复将POST请求发送到我的web服务的软件,以便它逃脱&符号,但现在这实际上是不可能的(我们不能让我们的用户如此轻松地更新软件)。因此,我必须找到一个临时的解决方法。
是否有可能从PHP检索原始数据,因为它被发送到Web服务之前,它被解析后的POST数据被解析了?
答案 0 :(得分:4)
file_get_contents('php://input');
答案 1 :(得分:2)
是的,有两种选择。
使用$xml = file_get_contents('php://input');
阅读原始发布数据。
使用$HTTP_RAW_POST_DATA
。这不太可靠,因为根据PHP ini设置,并不总是填充该变量。