Я использую cUrl для POST на веб-странице (не локальной), а затем возвращаю HTML.
Мне нужно сделать это несколько раз, поэтому код cUrl находится в цикле while. Вот странная вещь: в первый раз она работает как положено, но, похоже, не очищает буфер POST каждый раз после этого. (Я делаю close_curl ($ ch). И все данные, прошедшие через POST, верны.)
Например, одно из текстовых полей должно быть (и, в первый раз, это) передать "ЛЮБОЙ". Но второй раз это проход "ЛЮБОЙ, ЛЮБОЙ".
Правильно ли я понимаю, что эта проблема лежит в не очищенном буфере POST? Как я могу это исправить?
К сожалению: вот сокращенная версия кода ...
$someResults = mysql_query($someSQL);
while($record = mysql_fetch_array($alertResults)){
$url = "http://something.com/searchResults.asp";
$someV = "Hi";
$fields = array(
//date to post.
);
foreach($fields as $key=>$value){
$fields_string .= $key .'='. $value . '&';
}
rtrim($fields_string,'&');
$ch = curl_init();
$userAgent = 'Googlebot/2.1 (http://www.googlebot.com/bot.html)';
curl_setopt($ch,CURLOPT_USERAGENT, $userAgent);
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_FORBID_REUSE, true);
ob_start();
$html = curl_exec($ch);
curl_close($ch);
$dom = new DOMDocument();
@$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$resultTable = $xpath->evaluate("/html/body//table");
}
И, когда я делаю это, первый раз в цикле $ resultTable содержит 60 элементов. Но каждый раз после (с использованием того же URL-адреса) он имеет 0 элементов. И я почти уверен, что это потому, что буфер POST не очищен и что-то опубликовано поверх предыдущих данных POST.
Как я могу очищать данные POST каждый раз через цикл?