curl авторизация для блогов на liveinternet.ru

Тема в разделе "PHP", создана пользователем Vladimir1997, 9 апр 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Vladimir1997

    Vladimir1997 Постоялец

    Регистр.:
    6 дек 2007
    Сообщения:
    107
    Симпатии:
    18
    Помогите разобраться с хитрой авторизацией на liveinternet.ru курлом на php. Бьюсь уже 3 дня. Перечитал кучу советов и мануалов. Раз каким-то чудом удалось залогинится и все пошло отлично. После перезагрузки компа снова началась маета. Ничего не менял в скрипте, но не проходит авторизация и все тут. Кука получается, пишется в файл, но liveinternet.ru все равно пишет что проблемы с куками. Уже и денвером и xampp пользовался. Бесполезно. Другие сайты с авторизацией, да та же статистика в liveinternet.ru, открывается без проблем. А тут ничего поделать не могу. Может кто поможет разобраться.

    Далее мой код:
    Код:
    // авторизуемся и получаем куку	
    function post($url,$post,$refer)
    {
    	$ch = curl_init();
    	curl_setopt($ch, CURLOPT_URL, $url); /* Переходим на страницу, на которой нужно пройти процедуру авторизации */
    	curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    	curl_setopt($ch, CURLOPT_POST, 1);
    	curl_setopt($ch, CURLOPT_POSTFIELDS, $post); /* передаём параметры. параметры разделяются знаком & */
    	curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/' . basename(__FILE__) . '.cookies');
    	$result = curl_exec($ch);
    	curl_close($ch);
    	return $result;
    }
    
    // открываем страницу используя уже куки
    function post2($url,$post,$refer)
    {
    	$ch = curl_init();
    	curl_setopt($ch, CURLOPT_URL, $url); /* Теперь заходим на сайт как авторизованный пользователь – указаваем URL страницы, на которую может попасть только авторизованный пользователь */
    	curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // отображать или нет страницу
    	curl_setopt($ch, CURLOPT_POST, 0); /* Также необязательное действие, но я указал этот параметр – устанавливаю CURLOPT_POST в нуль, ведь теперь мне не нужно передавать данные методом POST */
    	curl_setopt($ch, CURLOPT_COOKIEFILE, CURLOPT_COOKIEJAR,dirname(__FILE__) . '/' . basename(__FILE__) . '.cookies'); 
    	$result = curl_exec($ch);
    	curl_close($ch);
        return $result;
    }
    
    
    
     // Авторизация 
    $result = post("http://www.liveinternet.ru/member.php?rndm=1270796326","url=&url1=&action=login&username= [ логин ]&password= [ пароль ]&Submit.x=42&Submit.y=12&Submit=%C2%EE%E9%F2%E8",'http://www.liveinternet.ru/');
     // Авторизация
    
    // 
    $note_url_m = 'http://blog.kp.ru/users/1101065/'; // любой блог
    post2($note_url_m,null,$note_url_m); // грузит страницу
    
     echo $result; // смотрим чего получилось
    
     
  2. Vladimir1997

    Vladimir1997 Постоялец

    Регистр.:
    6 дек 2007
    Сообщения:
    107
    Симпатии:
    18
    Все разобрался. Проблема была с файлами с куками. Почему не читает файл будем разбираться. Если прописать строчку
    curl_setopt($ch, CURLOPT_COOKIE, "тут строка с куками");
    и убрать 2 строки:
    curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/' . basename(__FILE__) . '.cookies');

    и
    curl_setopt($ch, CURLOPT_COOKIEFILE, CURLOPT_COOKIEJAR,dirname(__FILE__) . '/' . basename(__FILE__) . '.cookies');
    то все работает. Кому надо пользуйте. Рабочее.
     
  3. venetu

    venetu

    Регистр.:
    28 мар 2007
    Сообщения:
    735
    Симпатии:
    261
    Потому что слеши в "нормальную" сторону, а запускал небось под виндой. Curl, в отличие от самого PHP, под виндой прямые слеши не понимает. Поэтому и не работало с COOKIEJAR.
     
Статус темы:
Закрыта.