симуляция захода на сайт

DS
На сайте с 05.08.2014
Offline
51
1036

Есть определенный алгоритм действий в php файле, в определенном моменте нужно сделать подключение к другому сайту и выполнению на нем пару действий

К примеру зайти на http://yandex.ru ,написать в поиске какое-то слово и нажать поиск

Через curl не получилось т.к. на сайте отсутствует итоговый запрос в адресной строке

В моем случае мне нужно заполнить форму и нажать добавить

Вот код формы на сайте, которую нужно заполнить и отослать через другой php файл:


<form id='form' class='blocks' method='post' action='/index.php'>

<input type='text' autocomplete='off' name='tok' placeholder='tok' />
<input type='submit' name='submit' value='Добавить' />
</form>
siv1987
На сайте с 02.04.2009
Offline
427
#1
DoubleSH:
Через curl не получилось т.к. на сайте отсутствует итоговый запрос в адресной строке

Что отсутствует?

DS
На сайте с 05.08.2014
Offline
51
#2
siv1987:
Что отсутствует?

к примеру чтобы залогиниьбся на dle,я могу сделать так

сайту.ру/index.php?login_name="логин"&login_password="пасс"&login=submit

У меня же не получается данные формы занести в такую строку

Тоесит если я сделаю так

сайту.ру/index.php?tok="123"&submit=Добавить

ничего не произойдет

siv1987
На сайте с 02.04.2009
Offline
427
#3

Ну так же в форме указано - method='post'

CURLOPT_POST, 1

CURLOPT_POSTFIELDS, array('field' => 'val', 'field2' => 'var2')

DS
На сайте с 05.08.2014
Offline
51
#4
siv1987:
Ну так же в форме указано - method='post'

CURLOPT_POST, 1
CURLOPT_POSTFIELDS, array('field' => 'val', 'field2' => 'var2')

а нажатие на кнопку отправить как сделать

siv1987
На сайте с 02.04.2009
Offline
427
#5

Это и есть аналог нажатия кнопки отправить. Вы же не заполняете в самом деле курлом форму на сайте, вы создаете пакет данных и отправляете запрос на адрес обработчика этой формы (action='/index.php'), аналогично как бы если вы нажали "отправить" в самой форме.

DS
На сайте с 05.08.2014
Offline
51
#6
siv1987:
Это и есть аналог нажатия кнопки отправить. Вы же не заполняете в самом деле курлом форму на сайте, вы создаете пакет данных и отправляете запрос на адрес обработчика этой формы (action='/index.php'), аналогично как бы если вы нажали "отправить" в самой форме.

тоесть для моего варианта это будет выглядеть так

//url сайта, куда будет отправлен запрос

$url = "http://сайт.ру/index.php";
//значение
$tok = "123";

// Инициализируем сеанс CURL (впишите сюда полный адрес страницы с формой)
$cin = curl_init($url);

// Указываем, что запрос делаем через POST
curl_setopt($cin, CURLOPT_POST, 1);

curl_setopt($cin, CURLOPT_POSTFIELDS, array('tok' => $tok));

// Выполняем CURL запрос
curl_exec($cin);

// Закрываем работу с CURL
curl_close($cin);
siv1987
На сайте с 02.04.2009
Offline
427
#7

Да. Можно еще и поле submit добавить, на случай если отправка формы на сервере проверяется наличием этого поле.

array('tok' => $tok, 'submit' => 'Добавить')

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий