авторизация curl и куки

verhmax
На сайте с 01.12.2005
Offline
191
16644

добрый день.

есть потребность произвести авторизацию через curl (это я сделал)

а дальше нужно посетить другую страницу, на которой нет форы авторизации.

как это сделать чтоб после страницы авторизации посетить другую страницу и всё получилось?

N
На сайте с 06.05.2007
Offline
419
#1

смотря как авторизация на сайте сделана. думаю подойдет записывать кукисы в файл.

этого (да и всего остального с curl) можно добиться используя функцию curl_setopt

вот крайне полезное чтиво http://ru2.php.net/manual/ru/function.curl-setopt.php

Кнопка вызова админа ()
LA
На сайте с 03.06.2008
Offline
105
#2


curl_setopt($ch, CURLOPT_COOKIEJAR, '/tmp/cookies.txt'); // вроде куда сохранять
curl_setopt($ch, CURLOPT_COOKIEFILE, '/tmp/cookies.txt'); // вроде откуда брать
// данные опции применяются вместе
verhmax
На сайте с 01.12.2005
Offline
191
#3

сделал так

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt ($ch, CURLOPT_POST, 1);

curl_setopt ($ch, CURLOPT_POSTFIELDS, "username=$login&password=$passwd&login=submit");

curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookies.txt'); // вроде куда сохранять

curl_setopt ($ch, CURLOPT_COOKIEFILE, 'cookies.txt'); // вроде откуда брать

curl_setopt ($ch, CURLOPT_COOKIE, session_name() . '=' . session_id());

по идеи прошла авторизация, куки сохраняются, дальше хочу получить данные с другой страницы

curl_setopt($ch, CURLOPT_URL, "http://www.site.ru");

$result1 = curl_exec($ch);

но данные возвращаются как от страницы без авторизации:(

с чем это может быть связано?

N
На сайте с 06.05.2007
Offline
419
#4

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

парсеры контента за это деньги и берут.

проверьте что файл создается и в него записывается правильная информация

malls
На сайте с 08.08.2005
Offline
255
#5

Я бы сделал так, точнее говоря так и делаю :):

// у нас есть результат обработки файла

$result1 = curl_exec($ch);

// вырезаем со страницы все куки которые пришли
preg_match_all('~Set-Cookie: ([^\r\n]*)[\r\n]~i',$result1,$mass);

// собираем их в строчку для CURL
$all_cookie_string = implode(" ", $mass[1]);

// а потом соответственно
//...

curl_setopt($ch, CURLOPT_COOKIE, $all_cookie_string);

//...

повторяем процедуру для каждой страницы - где бы они не изменились - всегда будем иметь свежий вариант

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