Заполнение форм
На чужом сайте есть форма (POST) как мне ее заполнить и "нажать на кнопку отправки" программно в PHP. Заранее спасибо.
Открываем код формы, смотрим какие там поля, формируем POST запрос от нашего скрипта к скрипту который принимает данные от формы.
Тем самым мы эмулируем отправку данных с формы.
Можно и без курлы. Берём DOM этой формы, форируем нужный массив и в POST'е отправляем его по адресу, указанному в аттрибуте action узла form
У меня задачка заполнить форму на сайте Киевстара [COLOR=darkred]<CENSORED>[/COLOR] для отправки смс, но там есть подтверждение, так вот его долны ввести в ручную. Если кто может напишите пример кода (или ссылку на пример), я пробовал и курлом, но что то не совсем понял как это нормально сделать. Спасибо
[COLOR=#c0c0c0][/COLOR]
[COLOR=#c0c0c0]----------------------[/COLOR]
[COLOR=#c0c0c0]добавлено всвязи с открытием темы:[/COLOR]
[COLOR=#c0c0c0][/COLOR]
[COLOR=darkred]Ладно, поверим на слово. Тема открыта, темы объединены.[/COLOR]
Приношу извинения, модераторам и другим формучанам, но вопрос не относилься к типу "поиска кряков" и заполнять эту форму нужно не для спамовых рассылок. Есть система в которой нужно отправлять смс с определенной информацией курьерам, причем желательно это делать бесплано (причем их количество не больше 30 в день). Почему то при попытке отправлять email на соответствующий адрес это смс не приходит, в то время как с сайта оператора приходит. Может кто то знает в чем проблема и как вобще можно сделать отправку смс, подскажите пожалуйста. А почему я пробовал заполнять форму на сайте оператора - просто не нашел другого выхода. Еще раз прошу извинения у модераторов.
Люди подскажие решение. Очень нужно. Я на этих смс-ах застрял и уже несколько дней не могу найти решение пролемы. Спасибо.
Цитата: Neutral
Люди подскажие решение. Очень нужно. Я на этих смс-ах застрял и уже несколько дней не могу найти решение пролемы. Спасибо.
Что, опять?! :eek: Уже можно было б найти соответствующее решение...
Пробуй примерно так:
Код:
$host = "........"; // Имя хоста без протокола
$uri = "/......."; // имя скрипта, которому посылаешь
// Допустим, что это массив, который нужно запостить
$_POST['field1'] = "текст поля 1";
$_POST['field2'] = "текст поля 2";
$_POST['field3'] = "текст поля 3";
$_POST['field4'] = "текст поля 4";
$_POST['field5'] = "текст поля 5";
$body = "";
foreach ($_POST as $key=>$value){
$body .= $key. "=" .urlencode($value). "&";
}
$length = strlen($body);
$socket = fsockopen($host, 80);
fwrite($socket, "POST {$uri} HTTP/1.0\r\n");
fwrite($socket, "Host: {$host}\r\n");
fwrite($socket, "User-Agent: POST_PROBE_AGENT\r\n");
fwrite($socket, "Content-Type: application/x-www-form-urlencoded\r\n");
fwrite($socket, "Content-Length: $length\r\n\r\n");
fwrite($socket, "$body\r\n");
echo "<pre>";
while (!feof($socket)) {
echo fread($socket, 4096);
}
echo "</pre>";
fclose($socket);
$uri = "/......."; // имя скрипта, которому посылаешь
// Допустим, что это массив, который нужно запостить
$_POST['field1'] = "текст поля 1";
$_POST['field2'] = "текст поля 2";
$_POST['field3'] = "текст поля 3";
$_POST['field4'] = "текст поля 4";
$_POST['field5'] = "текст поля 5";
$body = "";
foreach ($_POST as $key=>$value){
$body .= $key. "=" .urlencode($value). "&";
}
$length = strlen($body);
$socket = fsockopen($host, 80);
fwrite($socket, "POST {$uri} HTTP/1.0\r\n");
fwrite($socket, "Host: {$host}\r\n");
fwrite($socket, "User-Agent: POST_PROBE_AGENT\r\n");
fwrite($socket, "Content-Type: application/x-www-form-urlencoded\r\n");
fwrite($socket, "Content-Length: $length\r\n\r\n");
fwrite($socket, "$body\r\n");
echo "<pre>";
while (!feof($socket)) {
echo fread($socket, 4096);
}
echo "</pre>";
fclose($socket);
Только стоит заметить, что на хосте должна поддерживаться работа с сокетами. Не все хостинги предоставляют такую возможность.
Цитата: Neutral
На чужом сайте есть форма (POST) как мне ее заполнить и "нажать на кнопку отправки" программно в PHP. Заранее спасибо.
Если программно в пхп, то только имея шелл) через шелл зальешь скрипт и вуаля. Так как метод отправки данных POST, то можно в адреснйо строке поставить значения переменных вручную. Но могу в чем то ошибаться:)
Цитата: Neutral
Почему то при попытке отправлять email на соответствующий адрес это смс не приходит
Это защита от спама. Пусть все курьеры отправлят любое СМС на номер 7021.
Или же пользуйся сервисами типа http://clickatell.com/, но не бесплатно конечно :)
это очень легко сделать на Перле с модулем WWW::Mechanize