1. Задавайте здесь вопросы о коде, которые не подходят в другие разделы, такие как:
    Дизайн > Верстка
    PHP > Как сделать на PHP
    Скрыть объявление

Помогите разобраться с curl

Тема в разделе "Web Coding", создана пользователем muzshura, 3 мар 2008.

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

    muzshura Постоялец

    Регистр.:
    27 фев 2008
    Сообщения:
    74
    Симпатии:
    3
    Задача - войти на форум.

    Реализация в 2х файлах

    php.php
    PHP:
    <?php
    // получаю страничку авторизации
    $ch curl_init(); 
    $url "http://altforum.bks-tv.ru/login.php"
    curl_setopt($chCURLOPT_URL$url); // set url to post to 
    curl_setopt($chCURLOPT_USERAGENT'Opera/9.26 (Windows NT 5.1; U; ru)');
    curl_setopt($chCURLOPT_REFERER'http://metabot.ru');
    curl_setopt($chCURLOPT_FAILONERROR1); 
    curl_setopt($chCURLOPT_RETURNTRANSFER,1); // return into a variable 
    // сохраняю кукисы по инструкции с нулледа
    $path_ pathinfo($_SERVER[SCRIPT_FILENAME]);
    $ScriptDir=$path_['dirname'];
    $CookieFile=$ScriptDir."/tmp/cookie.txt";
    curl_setopt($chCURLOPT_COOKIEFILE$CookieFile);
    curl_setopt($chCURLOPT_COOKIEJAR$CookieFile);
    curl_setopt($chCURLOPT_TIMEOUT10); // times out after 4s 
    $result curl_exec($ch); // run the whole process 
    // сохраняю идентификатор сессии
    $filename "zzz.txt";
    $fh fopen($filename"w");
    $pattern '/phpbb2mysql_data=(.*?);/is';
    preg_match($pattern$subject$matches);
    fwrite($fh$matches[1]);
    fclose($fh);
    curl_close($ch); 
    print 
    $result;
    ?>
    // запускаю следующий запрос
    <script>window.location='php1.php';</script>

    php1.php
    PHP:
    <?php
    $ch 
    curl_init(); 
    // читаю сохраненный идентификатор сессии
    $filename "zzz.txt";
    $fh fopen($filename"r");
    $url "http://altforum.bks-tv.ru/login.php?sid=".fread($fhfilesize($filename)); 
    fclose($fh);
    curl_setopt($chCURLOPT_URL$url); // set url to post to 
    curl_setopt($chCURLOPT_USERAGENT'Opera/9.26 (Windows NT 5.1; U; ru)');
    // делаю реферер с предыдующей страницы
    curl_setopt($chCURLOPT_REFERER"http://altforum.bks-tv.ru/login.php");
    curl_setopt($chCURLOPT_FAILONERROR1); 
    curl_setopt($chCURLOPT_FOLLOWLOCATION1);// allow redirects 
    curl_setopt($chCURLOPT_RETURNTRANSFER,1); // return into a variable 
    // отсылаю кукисы 
    $path_ pathinfo($_SERVER[SCRIPT_FILENAME]);
    $ScriptDir=$path_['dirname'];
    $CookieFile=$ScriptDir."/tmp/cookie.txt";
    curl_setopt($chCURLOPT_COOKIEFILE$CookieFile);
    curl_setopt($chCURLOPT_COOKIEJAR$CookieFile);
    curl_setopt($chCURLOPT_TIMEOUT15); // times out after 4s 
    curl_setopt($chCURLOPT_POST1); // set POST method 
    // отсылаю логин, пароль, имя кнопки "Войти" 
    curl_setopt($chCURLOPT_POSTFIELDS"nusername=***&password=***&redirect=&login=%C2%F5%EE%E4"); // add POST fields 
    $result curl_exec($ch); // run the whole process 
    curl_close($ch); 
    print 
    $result;
    ?>
    В итоге получаю сообщение "Вы неверно ввели логин/пароль". Где я туплю?
     
  2. StDutch

    StDutch

    Регистр.:
    18 дек 2007
    Сообщения:
    337
    Симпатии:
    116
    Во-первых, убедись, что файл с cookies создается (есть ли каталог tmp и что там с правами на запись). Посмотри содержимое файла после запуска.

    Во-вторых, проверь, правильно ли вырезается sid (добавь echo во втором скрипте, чтобы увидеть url).

    В-третьих, посмотри сниффером, что отсылается броузером при сабмите формы логина. Возможно ты упустил какой-то параметр.
     
  3. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    1) зачем 2 файла ?
    2) дай логин и пароль, а то регится не охота что бы посмотреть скрипт
     
  4. Zerrikanez

    Zerrikanez Прохожие


    $subject
    откуда? ;)

    Вроде как в $result все данные:
     
Статус темы:
Закрыта.