2013-02-23 76 views
1

出於安全原因,我必須將JSON對象從JQuery腳本轉發到PHP腳本。如果我登錄了$內容我會在我張貼在JSON對象,但該頁面($網址),以越來越空的對象PHP轉發JSON對象

<?php 
header('Access-Control-Allow-Origin: *'); 

$input = @file_get_contents('php://input'); 
$content = json_encode($input); 

$url = $_GET["trakt_url"]."KEY"; 

$ch = curl_init($url);                 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                  
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);                 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                  
curl_setopt($ch, CURLOPT_HTTPHEADER, array(                   
    'Content-Type: application/json')                  
);                             

$result = curl_exec($ch); 
echo $result; 
?> 

:這裏是我做了什麼呢。有人知道我做錯了什麼嗎?

解決(有人回答正確,但答案被刪除?)

curl_setopt($ CH,CURLOPT_POSTFIELDS, 「JSON = $內容」);

+0

設置內容的長度。 – PeeHaa 2013-02-23 13:32:32

回答

1

嘗試設置在請求報頭中的內容長度:

curl_setopt($ch, CURLOPT_HTTPHEADER, array(                   
    'Content-Type: application/json',                     
    'Content-Length: ' . strlen($content))                  
);                             

您還需要確保POSTFIELDS被定義爲urlencoded的字符串,因爲它設置爲陣列將覆蓋內容類型到multipart/form-data。這將工作:

curl_setopt($ch, CURLOPT_POSTFIELDS, "json=$content"); 
+0

我加了這個,但沒有解決問題。 – 2013-02-23 13:37:40

+1

@SimonSchubert另請嘗試[此方法](http://stackoverflow.com/a/9062145/427992) – hohner 2013-02-23 13:44:38