如何在curl发送的php文件中处理POST

时间:2016-05-04 05:41:16

标签: php curl

我在bluehost服务器test.php上创建了一个文件,并使用此文件从另一台服务器(godaddy)发送curl请求。

"unable to locate element, using {:class=>"bd", :tag_name=>"input", :type=>"hidden"}"

如何捕获test.php上发布的数据并进行处理? 我正在尝试使用$ _POST,但它显示为空白。

2 个答案:

答案 0 :(得分: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',
)

答案 1 :(得分:1)

尝试替换此内容,直接发送array而非json

curl_setopt($curl, CURLOPT_POSTFIELDS,$data_string );

使用

curl_setopt($curl, CURLOPT_POSTFIELDS,$fields );

请检查:http://php.net/manual/en/function.curl-setopt.php