簡體   English   中英

PHP json_decode錯誤 - Mandrill Webhook

[英]PHP json_decode error - Mandrill Webhook

我試圖處理Mandrills webhook數據。 我將獲得帶有一些Json數據的$ _POST請求,而處理這些數據時我遇到了一個奇怪的問題。

如果我解碼POST給出的數據,我只得到一個空的var :(任何想法為什么?

編輯:

最奇怪的事情......如果我直接使用Json它不起作用,但是如果我將它插入數據庫並從那里拿走它,它完美地工作

$json = $_POST['mandrill_events'];
print_r(json_decode($json,true));
//False

$data['content'] = $_POST['mandrill_events'];
$id = $db->insert('mail', $data);
$get = $db->select('content', 'mail', 'id = "'.(int) $id.'"');  //= mysql_fetch_array($data,MYSQL_ASSOC)
$json = $get['content'];
print_r(json_decode($json,true));
//True

舊代碼

/*
print_r($_POST) 

Array
(
    [mandrill_events] => [{"event":"inbound","ts":1393490345,"msg":{"raw_msg":"Received: from"}}]
    (shortend)
)
*/

$test_var = '[{"event":"inbound","ts":1393490345,"msg":{"raw_msg":"Received: from"}}]';

$getMessage = $_POST['mandrill_events'];
print_r($getMessage);
//Until now everything works fantastic
$getMessage = json_decode($getMessage,true);
print_r($getMessage);
//Nothing - the output is empty ;( 

$getTestMessage = json_decode($test_var,true);
print_r($getTestMessage);
//works fine

使用stripslashes。 在你的情況下:

$json = $_POST['mandrill_events'];
print_r(json_decode(stripslashes($json),true));

我已經這樣實現它可以正常工作plz檢查這一個

      $data = $_POST;

    $restult_data_decode = json_decode($data['mandrill_events']);


   // print_r($restult_data_decode);
    //exit;




    $message_id     =  $restult_data_decode[0]->_id;

    $status         =  $restult_data_decode[0]->msg->state;

    $reject_reason  =  $restult_data_decode[0]->msg->reject;


    echo "message_id............ $message_id  .............status:$status..........reject reason : $reject_reason ";

您可能已在服務器上啟用了magic_quotes。 這應該工作:

 $events = json_decode(stripslashes($_POST['mandrill_events']),1);
 print_r($events);

當您打印POST數據時,它回顯為html。 可能在您的POST數據中有" " 正在進行雙重行情。 檢查一下。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM