Моего кодаPHP + Curl Post. Он заполняет форму, но не отправляет
<?php
$url='Search.jsp';
// disguises the curl using fake headers and a fake user agent.
function disguise_curl($url)
{
$curl = curl_init();
// Setup headers - I used the same headers from Firefox version 2.0.0.6
// below was split up because php.net said the line was too long. :/
$header[0] = "Accept: text/xml,application/xml,application/xhtml+xml,";
$header[0] .= "text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
$header[] = "Cache-Control: max-age=0";
$header[] = "Connection: keep-alive";
$header[] = "Keep-Alive: 300";
$header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
$header[] = "Accept-Language: en-us,en;q=0.5";
$header[] = "Pragma: "; // browsers keep this blank.
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_USERAGENT, 'Googlebot/2.1 (+http://www.google.com/bot.html)');
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_REFERER, 'https://lalpacweb.blackpool.gov.uk/protected/wca/publicRegisterVehicleSearch.jsp');
curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate');
curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_COOKIESESSION, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_COOKIEJAR, "cookies.txt");
curl_setopt($curl, CURLOPT_COOKIEFILE, "cookies.txt");
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt ($curl, CURLOPT_POSTFIELDS, 'search.licenceTypeID=34&search.licenceLinkFileID=2&search.vehicleRegNumber=5&publicRegisterVehicle=Search');
$html = curl_exec($curl); // execute the curl command
echo curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl); // close the connection
return $html; // and finally, return $html
}
// uses the function and displays the text off the website
$text = disguise_curl($url);
echo $text;
?>
Она возвращает страницу с формой заполнения, но не оставлять его. Ответ curl_getinfo я получаю ..
200HTTP/1,1 200 OK Pragma: нет кэша Cache-Control: нет кэша, нет-магазина, нужно обязательно перепроверять Expires: Thu, 01 Jan 1970 00:00 : 00 GMT Content-Type: text/html; charset = ISO-8859-1 Содержимое-язык: ru-RU Контент-длина: 5901 Дата: Вс, 19 фев 2012 12:24:08 GMT Сервер: Apache
Любые идеи?
Спасибо за вашу помощь
Кажется, что ваш код правильно, так что вы должны убедиться, что поля, которые запрашивают правы, реагируют со статусом 200 показывает ваш запрос правильно, но может ваше поле неверно, вы можете написать тестовую страницу на сервере и использовать вышеприведенный код для тестирования. – Sean
Указывает ли код статуса 200, что форма была опубликована? Или он не ответил бы этой информацией? У формы есть две кнопки отправки, и я указал один, говоря «publicRegisterVehicle = Search», правильно ли это? – Tom
На странице есть две скрытые поля формы, которые могут потребоваться установить. _sourcePage и __fp – ben