5

我正在开发一个系统,目前正在尝试实现另一个(外部)系统可以发布到某些数据的脚本,以便我可以存储它们。
我无法控制外部系统 - 我可以触发它来将数据发布到我的系统,并为其提供我的脚本 url。

在帖子发生时查看萤火虫,我可以看到发布的数据,如下所示:在此处输入图像描述

或(网址解码)

content={"sex":"male","person":{"name":["chris"],"mbox":["mailto:name.lastename@gmail.com"]}}  
&Content-Type=application/json  
&auth=DDE233H76BGN

我的问题是,当试图在我的脚本中获取这些参数时,$_POST(和 $_REQUEST)总是空的!
我试过var_dump($_POST)or echo file_get_contents("php://input");,但我没有看到任何内容。

我在这里想念什么?
我不知道是否需要响应/请求标头才能从中获得一些东西,我在这里展示它们以防万一
在此处输入图像描述

编辑:
我的脚本现在由一行代码组成,例如:

<?php
    var_dump($_POST);
?>

或者

<?php
   echo file_get_contents("php://input");
?>

他们两个都没有给我任何东西:s

4

3 回答 3

1

应该使用$arr= json_decode($_POST['content']);... 访问数据,但这里还有另一个问题。

缺少一个细节:

... firebug 如何向您显示从外部系统发送到您的网站的 $_POST 的内容(又名:请求不通过您的浏览器,但可能通过来自外部服务器的 CURL 请求)。显然,我在这里没有得到任何东西。

我看到的是您的网站发出的从您的浏览器(在 javascript 中)发送的 POST 请求。您的问题错过了一个关键细节,我只是不确定它是什么。

暗示:

尝试echo 'test';在您的 var_dump 之前放置一个,我感觉您可能没有调试我们在 Firebug 中看到的 Ajax POST 请求真正调用的页面。有点路由问题?

于 2013-05-18T04:52:02.327 回答
0

让我们看看 RFC 1945 看看什么是“参数”

parameter      = attribute "=" value
attribute      = token
token          = 1*<any CHAR except CTLs or tspecials>
CTL            = <any US-ASCII control character
                    (octets 0 - 31) and DEL (127)>

所以我想“Content-Type=application/json”不是 POST 的有效部分,因为“-”不是 CTL

于 2012-11-22T20:38:02.903 回答
0

您应该尝试查看原始 POST 数据变量:

echo $HTTP_RAW_POST_DATA;

于 2013-05-18T03:24:36.307 回答