PHP.Curl. Сабмитим форму. Автосабмит
Пример php кода, который при помощи curl, может заполнять форму на удаленном сайте и отправлять ее. Так же скрипт позволяет получить ответ от сервера для дальнейшей обработки.
Постановка задачи
Есть несколько форм (html form) на разных сайтах в которые необходимо внести одинаковую информацию. Мотив нас не интересует — это может быть как банальный спам в гостевухи, так и выполнение рутинных операций по поддержке и обслуживанию сайтов.
Есть готовые решения для этих целей — самые известные это — AIRoboform, AllSubmitter и Xrumer. Но как универсальное решение они не всегда могут подойти под конкретные потребности вполне конкретного разработчика сайта или веб-студии.
На помощь нам приходит php и curl.
Пример сабмита формы при помощи php & curl
Это наш сабмитер. Он передает файлу по адресу http://localhost/curl/1.php параметры в переменной $params. Строка $params — состоит из названий имен полей формы и значений, им задаваемых. В переменную $result попадает результат выполнения файла 1.php. Попросту говоря — ответная страница.
Пример 1.php приведен ниже.
<?
$url = 'http://localhost/curl/1.php';
$params = "keyword=123&zxczxc=333"; //you must know what you want to post
$user_agent = "Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)";
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$params);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$result=curl_exec ($ch);
curl_close ($ch);
echo "Results: <br>".$result;
?>
Пример 1.php для тестирования работы скрипта
<?
print_r($_POST);
?>
Замечание №1. У хостинг провайдера должна быть включена возможность скриптам коннектиться наружу. Как в пхп так и на фаерволе. На платных хостинга — это обычная практика, на бесплатных — обычно отключена. Что бы не спамили.
Замечание №2. Если результат работы скрипта зависит от того, какой value установленно у input type=submit, то мы добавляем в параметры name & value кнопки сабмит.
Замечание №3. Понятно, что пример сырой, но на его основе можно построить годный автоматизатор рутинных задач, которые часто встречаются при обслуживании сайтов, реже — при создании сайтов.