CURL不发布数据PHP

时间:2012-12-07 08:05:31

标签: php curl

我正在使用PHP进行卷曲以在网站上发布数据并回显结果,但它不会发布数据 这是我的代码:

<?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

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

提前致谢

更新:在网站的orgignal html中,它的名字=“imei”而不是id =“imei”

1 个答案:

答案 0 :(得分:0)

您尚未设置选项CURLOPT_RETURNTRANSFER。如果未将此选项设置为true,则cURL不会返回响应。

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)');

来自Manual

  

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