Как отправить Cookie в заголовке запроса

202
27 августа 2018, 16:10

Копаюсь с сайтом фмс - http://services.fms.gov.ru/info-service.htm?sid=2000 Как я понял, сначала заполняется форма POST, сохраняются куки и идёт редирект на страницу - http://services.fms.gov.ru/info-service-result.htm?sid=2000 с GET параметром sid=2000, но в заголовке запроса присутствую куки.

Вот POST запрос, где отлично сохранятся куки рядом с исполнительным файлом

    $connection = curl_init();
    curl_setopt($connection, CURLOPT_URL, "http://services.fms.gov.ru/info-service.htm?sid=2000");
    curl_setopt($connection, CURLOPT_POST, 1);
    curl_setopt($connection, CURLOPT_POSTFIELDS, ['DOC_NUMBER'        => '1111', 
                                                  'DOC_SERIE'            => '123123',
                                                  'form_name'=> 'form',
                                                  'captcha-input' =>$res
                                                ]);
    curl_setopt($connection, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($connection, CURLOPT_COOKIEJAR, __DIR__ . "/cookie.txt");
    curl_setopt($connection, CURLOPT_COOKIEFILE, __DIR__ . "/cookie.txt");
    curl_setopt($connection, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($connection, CURLOPT_SSL_VERIFYPEER, false);
    $res=curl_exec($connection);
    curl_close($connection);

куки:

# Netscape HTTP Cookie File
# https://curl.haxx.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.
#HttpOnly_services.fms.gov.ru   FALSE   /   FALSE   0   JSESSIONID  f5029a49e24c7d0c741d69255161
services.fms.gov.ru FALSE   /   FALSE   0   uid wwg+fltDaHdWFwsCC+8UAg==

Потом обращаюсь к странице - GETом

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://services.fms.gov.ru/info-service-result.htm?sid=2000');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($connection, CURLOPT_COOKIEFILE, __DIR__ . "/cookie.txt");
$out = curl_exec($curl);
curl_close($curl);

но куки не видит.

PS. Возможно я не правильно высказываюсь в плане передачи кук в заголовке запроса. отладчик мне вот что говорит:

Answer 1

Вы инициализируете curl, сохраняя значение в $curl, а затем устанавливаете куки для $connection.

Нужно заменить $connection на $curl вот в этой строке:

curl_setopt($connection, CURLOPT_COOKIEFILE, __DIR__ . "/cookie.txt");
READ ALSO
Вывести текст между тегами <h1> и </h1> [дубликат]

Вывести текст между тегами <h1> и </h1> [дубликат]

На данный вопрос уже ответили:

185
Как привести набор символов 25032018 к виду 25.03.2018?

Как привести набор символов 25032018 к виду 25.03.2018?

Задача в том, что в зависимости от даты нужно показать какой день недели

184
Письмо приходит пустым на почту

Письмо приходит пустым на почту

Письмо приходит пустымJS:

188
Как исправить ошибку Illegal offset type?

Как исправить ошибку Illegal offset type?

( ! ) Warning: Illegal offset type in UserControllerphp on line 56

298