【问题标题】:php - How to access post variables ($_POST is empty)php - 如何访问 post 变量($_POST 为空)
【发布时间】:2012-11-11 06:09:29
【问题描述】:

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

在发帖时查看firebug,我可以看到贴出的数据,看起来像这样:

或(url解码)

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

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

我在这里错过了什么?
我不知道是否需要响应/请求标头才能从中获得一些东西,我在这里展示它们以防万一

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

<?php
    var_dump($_POST);
?>

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

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

【问题讨论】:

  • 请向我们展示这个发布到的 PHP 脚本。
  • @MichaelBerkowski 感谢您的回复。我只是在做var_dump($_REQUEST);echo file_get_contents("php://input");。只需一行代码。
  • 创建请求的代码是什么?内容类型应该是标题,而不是帖子数据的一部分。
  • @Arjan 我无法访问或控制创建请求的代码。它只是向我发送了一个名为 Content-type 的参数,我需要存储它

标签: php json post


【解决方案1】:

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

缺少一个细节:

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

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

提示:

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

【讨论】:

    【解决方案2】:

    让我们看看 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

    【讨论】:

    • any CHAR except CTLs 对我来说意味着任何不在 CTL 中的字符都是允许的,所以 - 也应该没问题。
    • @Ziumin 非常感谢您回答我的问题。你是绝对正确的,但这只是一个错字,因为我只是编辑了图像中的帖子参数,只留下了 2-3 个,所以你更清楚发生了什么(实际上有超过 10 个参数,它不容易阅读)。您可以检查更新的问题:)
    【解决方案3】:

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

    echo $HTTP_RAW_POST_DATA;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-09
      • 1970-01-01
      • 1970-01-01
      • 2016-10-07
      • 2013-04-27
      • 2011-10-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多