如何在curl发送的php文件中处理POST
I have created a file on bluehost server test.php and used this file send curl request from another server ( godaddy ).
$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);
How to capture posted data on test.php and process it ? I am trying with $_POST but its showing blank.
我在bluehost服务器test.php上创建了一个文件并使用此文件从另一台服务器发送curl请求(godaddy) 。 p>
$ 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);
code> pre>
如何捕获test.php上发布的数据并对其进行处理?
我正在尝试使用$ _POST但它的 显示空白。 p>
div>
Try to replace this, direct send array
not json
curl_setopt($curl, CURLOPT_POSTFIELDS,$data_string );
With
curl_setopt($curl, CURLOPT_POSTFIELDS,$fields );
Check this : http://php.net/manual/en/function.curl-setopt.php
The question is close to this one How to send raw POST data with cURL? (PHP)
I've slightly modified your client code to follow recommendations:
<?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;
I do urlencode
for the sent data and set headers.
The logic how to read data is explained in the question How to get body of a POST in php? I made a simple test.php
file with the following code
<?php
$body = file_get_contents('php://input');
if (!empty($body)) {
$data = json_decode(urldecode($body), true);
var_export($data);
}
We read the data, decode it and parse JSON.
As one might expect the test output from the client script is the following
$ php client.php
Response: array (
'a' => 'aaaa',
'b' => 'bbbb',
)