用php访问json post数据

Posted

技术标签:

【中文标题】用php访问json post数据【英文标题】:Access json post data with php 【发布时间】:2016-01-14 06:07:19 【问题描述】:

我正在编写一个小型 php 应用程序,它将从 Send Grids Webhook API 获取发布数据,但看起来它正在发送 json 作为发布数据。我不确定如何访问该数据。我之前使用过发布数据,但我使用 $_POST 访问它我从未收到过 json 发布数据。

这是我的代码,如果我朝着正确的方向前进,请告诉我

include 'send_grid_conn.php';
$dealer = (isset($_GET['dealer']) && !empty($_GET['dealer']))?$_GET['dealer']:"N/A";
echo $dealer;

$postData = json_decode($HTTP_RAW_POST_DATA,true);

$email = (isset($postData['email']))?$postData['email']:"nothing";

    $stmt = $connection->prepare("INSERT INTO `send_grid`(`email`, `dealer`) VALUES (?,?)");
    $stmt->execute(array($email, $dealer));

插入部分有效,但我无法访问 POST 数据。

顺便说一句,我将清理代码。现在我正处于测试模式,试图访问该 json 数据。

【问题讨论】:

试试var_dump($postData)看看数组包含什么。 【参考方案1】:

$HTTP_RAW_POST_DATA 自 php 5.6 起已弃用,自 php 7 起已删除,您应该使用 php://input,因为它不依赖于任何 php.ini 配置,并且您是否尝试解码 $_POST?在请求中,json 只是一个字符串,所以你应该没有任何问题。

php://input:

json_decode(php://input, true);

$_POST:

json_decode($_POST, true);

【讨论】:

以上是关于用php访问json post数据的主要内容,如果未能解决你的问题,请参考以下文章

php模拟post方式访问网页,显示盗用页面无法访问

如何让网页php同时支持get和post访问

springMVC访问静态文件如json文件,只能以get方法访问吗?为啥我前台ajax访问用的是post都被拒绝了?

用php访问json api

python用post访问restful服务接口

在 PHP 中访问 JSON 元素