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 では、id="imei" ではなく name="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 に答える