0

我在 PHP 中进行 curl 以在站点上发布数据并回显结果,但它不发布数据这是我的代码:

<?php
$imei = "imei=XXXXXXXXX";

//set POST variables
$url = 'http://XXX.com/XXX.php';


//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);

curl_setopt ($ch, CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_POSTFIELDS, $imei);
curl_setopt ($ch, CURLOPT_REFERER, 'http://www.XXX.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_STDERR, fopen('php://output', 'w+'));
curl_setopt($ch, CURLOPT_VERBOSE, 1);

//execute post
$result = curl_exec($ch);



//close connection
curl_close($ch);
echo $result;
echo $imei;

?>

当我回显 $imei 时,它会显示完整的字符串但未传递数据:S

请帮忙,代码有什么问题?

提前致谢

更新:在网站的原始 html 中,它是 name="imei" 而不是 id="imei"

4

1 回答 1

0

你还没有设置选项CURLOPT_RETURNTRANSFER。如果您不将此选项设置为 ,则 cURL 不会返回响应true

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

我还建议将您的 POST 数据更改为数组而不是字符串。cURL 选项接受一个数组,它会自动从该数组中构建和编码字符串。如果您自己构建它,则还必须对其进行编码。

$imei = array('imei' => 'XXXXXXXXX');

编辑:根据您的调试数据,我认为您的资源需要 GET 请求而不是发布。您还应该设置一个用户代理,因为站点可能会拒绝没有用户代理的请求:

curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)');

手册

CURLOPT_RETURNTRANSFER
TRUE 将传输作为 curl_exec() 的返回值的字符串返回,而不是直接输出。

于 2012-12-07T09:49:24.760 回答