ФорумПрограммированиеPHP для идиотов → Авто авторизация

Авто авторизация

  • phpdude

    Сообщения: 26631 Репутация: N Группа: в ухо

    Spritz 14 января 2009 г. 17:06, спустя 17 минут 24 секунды

    Felicitto, нажми кнопку. он тебя предупреждает просто)
    Сапожник без сапог
  • Felicitto

    Сообщения: 24 Репутация: N Группа: Кто попало

    Spritz 16 января 2009 г. 12:26, спустя 1 день 19 часов 19 минут

    да, всё работает. Та ссылка подходит, то глюки у меня какие-то были.
    Но есть еще вопросик :) после скачки каждой страницы, приходиться отправлять заново пост-запрос с логином и паролем… мне то не сложно, но всё же как делается правильно?
  • phpdude

    Сообщения: 26631 Репутация: N Группа: в ухо

    Spritz 16 января 2009 г. 12:29, спустя 2 минуты 39 секунд


    да, всё работает. Та ссылка подходит, то глюки у меня какие-то были.
    Но есть еще вопросик :) после скачки каждой страницы, приходиться отправлять заново пост-запрос с логином и паролем… мне то не сложно, но всё же как делается правильно?
    так ты используй одну копию объекта да и все. не пересоздавай его
    типа так

    $curl = new Curl …$curl->post() // авторизовались
    foreach($pages as $pageurl)
    {
    $content = $curl->init($pageurl)->exec();
    }

    и все :)
    Сапожник без сапог
  • Felicitto

    Сообщения: 24 Репутация: N Группа: Кто попало

    Spritz 16 января 2009 г. 13:29, спустя 1 час 37 секунд

    serverfriendly() писать только один раз?

       
    $curl = new Curl();
        $curl->init("http://example.com/login/")->serverfriendly()->setopt("post",array("login"=>"qwe","password"=>"qwe"))->exec();

        $html = $curl->init("http://example.com/home/list/")->exec();
        //обрабатываю $html. Потом хочу еще какую-то страницу

        echo $curl->init("http://example.com/home/profile/")->exec(); //ничего не выводит
  • phpdude

    Сообщения: 26631 Репутация: N Группа: в ухо

    Spritz 16 января 2009 г. 13:49, спустя 19 минут 46 секунд

    нет, смотри как работает.

    опции и настройки курла ресурса после каждого инита сбрасываются. так задумано :) потому что в исходной задаче где этот класс был написан, сквозные настройки ненужны были. вот :)

    писать каждый раз. объект после отработки какого то запроса сохраняет в своих свойствах информацию о кукисах и все. чтобы дальше с этой информацией работать :)
    Сапожник без сапог
  • Felicitto

    Сообщения: 24 Репутация: N Группа: Кто попало

    Spritz 16 января 2009 г. 15:34, спустя 1 час 44 минуты 48 секунд

         $html = $curl->serverfriendly()->setopt("url","http://example.com/home/list/")->exec();

    по идее так, но не работает :(


    Warning: curl_setopt(): 3 is not a valid cURL handle resource in Z:\home\localhost\www\class.curl.php on line 217
  • phpdude

    Сообщения: 26631 Репутация: N Группа: в ухо

    Spritz 17 января 2009 г. 1:06, спустя 9 часов 32 минуты 14 секунд


         $html = $curl->serverfriendly()->setopt("url","http://example.com/home/list/")->exec();

    по идее так, но не работает :(


    Warning: curl_setopt(): 3 is not a valid cURL handle resource in Z:\home\localhost\www\class.curl.php on line 217

    $html = $curl->init($url)->serverfriendly()->exec();

    init надо не забывать :)… ээх документацию бы накидать, да времени нема. сори :(
    Сапожник без сапог
  • Felicitto

    Сообщения: 24 Репутация: N Группа: Кто попало

    Spritz 17 января 2009 г. 4:19, спустя 3 часа 13 минут 16 секунд

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


    а как я понял, мне не надо, чтоб не сбрасывались. Думал, что можно в setopt установить url и init не вызывать (при логине же вызывалраз), но выводит ошибку. А ты говоришь, что вообще инит надо обязательно всегда писать.

    То есть мне надо править сам класс, чтоб достичь своей цели?
    (еще раз проблема: после авторизации могу скачать лишь одну страницу, потом приходится логиниться заново.)
  • phpdude

    Сообщения: 26631 Репутация: N Группа: в ухо

    Spritz 17 января 2009 г. 4:24, спустя 4 минуты 19 секунд


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


    а как я понял, мне не надо, чтоб не сбрасывались. Думал, что можно в setopt установить url и init не вызывать (при логине же вызывалраз), но выводит ошибку. А ты говоришь, что вообще инит надо обязательно всегда писать.

    То есть мне надо править сам класс, чтоб достичь своей цели?
    (еще раз проблема: после авторизации могу скачать лишь одну страницу, потом приходится логиниться заново.)
    нет, править то ничего не надо … я кажется написал же что надо просто инит каждый раз вызывать + опции прописывать необходимые тебе :)

    можешь и править конечно, твое дело :)

    тут вот статья у меня была, может она разъяснит тебе ситуацию :)

    http://phpdude.ru/archives/470
    Сапожник без сапог
  • Felicitto

    Сообщения: 24 Репутация: N Группа: Кто попало

    Spritz 17 января 2009 г. 8:18, спустя 3 часа 54 минуты 3 секунды

    Еще раз: мне надо получить две закрытые страницы:
    Вторая не получается:

    $curl = new Curl();
    $curl->init("http://example.com/login/")->serverfriendly()->setopt("post",array("login"=>"qwe","password"=>"qwe"))->exec();

    echo $curl->init("http://example.com/list/")->serverfriendly()->exec(); //выводит то, что надо
    echo $curl->init("http://example.com/profile/")->serverfriendly()->exec(); //ничего не выводит


    Если логиниться перед каждым запросом страницы, то работает:
         $curl = new Curl();
    $curl->init("http://example.com/login/")->serverfriendly()->setopt("post",array("login"=>"qwe","password"=>"qwe"))->exec();

    echo $curl->init("http://example.com/list/")->serverfriendly()->exec(); //выводит то, что надо

    $curl->init("http://example.com/login/")->serverfriendly()->setopt("post",array("login"=>"qwe","password"=>"qwe"))->exec();
    echo $curl->init("http://example.com/profile/")->serverfriendly()->exec(); //теперь выводит



    Только что попробовал тоже самое для вконтакта….работает без повторного логина. В чём же дело? Какая-то защита?
  • phpdude

    Сообщения: 26631 Репутация: N Группа: в ухо

    Spritz 17 января 2009 г. 8:29, спустя 10 минут 53 секунды

    $curl = new Curl();
    $curl->init("http://example.com/login/")->serverfriendly()->setopt("post",array("login"=>"qwe","password"=>"qwe"))->exec();

    echo $curl->init("http://example.com/list/")->serverfriendly()->exec(); //выводит то, что надо
    echo $curl->init("http://example.com/profile/")->serverfriendly()->exec(); //ничего не выводит


    вот так вот должно работать … странно что не работает ….

    честно говоря сейчас посмотрел в класс и не должно быть так …. должно все работать. ну юзай авторизацию дважды :) трижды и тп) можешь еще один раз авторизоваться и создать копию курл объекта, использовать копию для скачивания и снова копировать, использовать :))

    вот так

    $curl->init("http://example.com/login/")->serverfriendly()->setopt("post",array("login"=>"qwe","password"=>"qwe"))->exec();
    $c = clone $curl;

    echo $c->init("http://example.com/list/")->serverfriendly()->exec(); //выводит то, что надо
    echo $c->init("http://example.com/profile/")->serverfriendly()->exec(); //ничего не выводит


    думаю должно сработать, но костыль конечно :)
    Сапожник без сапог
  • Felicitto

    Сообщения: 24 Репутация: N Группа: Кто попало

    Spritz 17 января 2009 г. 12:44, спустя 4 часа 15 минут 15 секунд

    вариант с копированием объекта так же не работает.
    Ладно, буду каждый раз отсылать пост-запрос, это мне ж не вручную это делать)правда как сервер отнесется к ~1000 таких запросов :)
    Спасибо за помощь

Пожалуйста, авторизуйтесь, чтобы написать комментарий!