Добрый день!
Задача: через php скрипт получить страницу с удаленного сервера. Для входа на удаленный сервер требуется регистрация.
Решаю задачу с помощью curl
1. выполняю первый запрос, чтобы залогиниться
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $q);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $p);
curl_setopt($ch, CURLOPT_COOKIEFILE, $_SERVER["DOCUMENT_ROOT"]."/cookies1.txt");
curl_setopt($ch, CURLOPT_COOKIEJAR, $_SERVER["DOCUMENT_ROOT"]."/cookies1.txt");
$content = curl_exec ($ch);
Запрос выполняется верно, в $content находится нужная мне страница после входа на удаленный сервер
Проблема в следующем: мне нужно выполнить следующий post запрос, но в этой же сессии (т.к. я уже залогинился). Т.е. мне нужно передать куки в следующий запрос.
В первом запросе, файл cookies1.txt сформировался, и там находится значение сессии.
Мне нужно добавить к этому значению еще 3 параметра, и затем их передать в новый запрос. Для начала хочу передать хотя бы то значение сессии, которое получил из первого запроса.
Выполняю точно такой же запрос, но с другим значением полей post запроса
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $q);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $p);
curl_setopt($ch, CURLOPT_COOKIEFILE, $_SERVER["DOCUMENT_ROOT"]."/cookies1.txt");
curl_setopt($ch, CURLOPT_COOKIEJAR, $_SERVER["DOCUMENT_ROOT"]."/cookies1.txt");
$content = curl_exec ($ch);
Смотрю в firebug, что передается, и вижу, что никаких кук не передавалось во второй запрос.
если пользуюсь оператором setcookie - то все работает.
Вопрос:
1. Почему не передаются куки во второй запрос?
2. Есть ли какая-то функция, чтобы прочитать значения кук из файла, и затем их установить (не хочется изобретать велосипед, я понимаю, что могу прочитать cookies1.txt распарсить его и установить через setcookie)?