Итак, у меня есть скрипт, который передает URL как параметр get и, следовательно, пытается записать содержимое этой страницы в файл. На неаутентифицированных страницах он работает нормально, но ломается, когда я пытаюсь использовать его на страницах, требующих аутентификации.
В частности, это страницы, на которые я уже вошел в систему , поэтому я предположил, что стандартный запрос cURL со всеми моими установленными в данный момент файлами cookie будет работать, но это не так. Первоначально я получаю ответ 302, но если установить для параметра «FOLLOWLOCATION» значение true, я окажусь на странице входа в систему сайта, а не на той странице, которую я хотел.
$client = curl_init();
//curl_setopt($client, CURLOPT_HEADER, true);
curl_setopt($client, CURLOPT_RETURNTRANSFER, true);
curl_setopt($client, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($client, CURLOPT_URL, $pageToLoad);
/* Supposedly libcurl loads all cookies auto-magically if you don't set CURL_COOKIESESSION
if (isset($_SERVER['HTTP_COOKIE'])) {
curl_setopt($client, CURLOPT_COOKIE, $_SERVER['HTTP_COOKIE']);
}
*/
$response = curl_exec($client);
curl_close($client);
У меня такое чувство, что мне нужно установить файл cookiejar, чтобы это работало («тонет», потому что у моего сценария нет прав на запись на сервере dev), но что вы думаете?
EDIT:
Так что, будучи своего рода идиотом, оказалось, что у меня есть некоторые права на запись ... в любом случае, я сделал временную папку в моем домашнем каталоге, где я убедился, что мой скрипт может написать:
$fname = '/home/temp/cookies.txt';
if( $save = fopen($fname, 'w') ) {
fwrite($save, 'testing');
}
Запустите скрипт, и вот, в первом тесте появится «тестирование».
Я добавил следующие 2 строки в мой запрос cURL:
curl_setopt($ch, CURLOPT_COOKIEJAR, '/home/temp/cookies.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, '/home/temp/cookies.txt');
И ничего не изменилось в моем сценарии. Файл cookies.txt по-прежнему просто говорит «тестирование» и в нем не хранятся файлы cookie, а также не изменяется время «последнего доступа», что для меня означает, что эти строки ничего не делают.
Есть еще мысли? Я немного озадачен: \