2016-05-04 37 views
0

我在bluehost服務器test.php上創建了一個文件,並使用此文件從另一個服務器(godaddy)發送curl請求。如何在curl發送的php文件中處理POST

$url = 'http://dev.testserver.com/test.php'; 
     $data_string = json_encode($fields); 
     $curl = curl_init($url); 
     curl_setopt($curl, CURLOPT_POST, 1); 
     curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");                  
     curl_setopt($curl, CURLOPT_POSTFIELDS,$data_string);                 
     curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);                  
     $curl_response = curl_exec($curl); 

如何捕獲在test.php上張貼的數據並處理它? 我想用$ _POST,但它顯示空白。

+2

可能的複製[如何獲得PHP中的POST的身體?](http://stackoverflow.com/questions/ 8945879/how-to-get-body-of-post-in-php) –

+0

@VictorSmirnov我沒有看到這兩個問題之間有任何相似之處。其他問題只是爲$ _POST,我提到了特定的捲曲,但不是POST。但是,感謝這個鏈接,這個答案非常有用。 –

+0

我認爲這個問題是'如何捕獲test.php上發佈的數據並處理它?'您發送JSON數據,但不發送'application/x-www-form-urlencoded'數據,這就是爲什麼你不能用'$ _POST'讀取它。另一個答案是這個問題 - 如何使用POST發送日期以確保它可以使用'$ _POST'。可能這是你需要的,但是你已經提出了另外一個問題。 –

回答

2

的問題是接近這個How to send raw POST data with cURL? (PHP)

我稍微修改客戶端代碼遵循建議:

<?php 

$fields = ['a' => 'aaaa', 'b' => 'bbbb']; 

$url = 'http://localhost/test.php'; 
$data_string = json_encode($fields); 

$curl = curl_init($url); 
curl_setopt($curl, CURLOPT_POST, 1); 
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST'); 
curl_setopt($curl, CURLOPT_POSTFIELDS, urlencode($data_string)); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); 
$curl_response = curl_exec($curl); 

echo 'Response: '.$curl_response.PHP_EOL; 

我做urlencode用於發送數據和設置頭。

如何讀取數據的邏輯問題How to get body of a POST in php?解釋我做了一個簡單的test.php文件用下面的代碼

<?php 

$body = file_get_contents('php://input'); 
if (!empty($body)) { 
    $data = json_decode(urldecode($body), true); 
    var_export($data); 
} 

我們讀取數據,解碼並解析JSON。

正如人們所期望從客戶端腳本輸出的測試是以下

$ php client.php 
Response: array (
    'a' => 'aaaa', 
    'b' => 'bbbb', 
) 
相關問題