Пример авторизации Zend_Http_Client cURL - PullRequest
3 голосов
/ 30 января 2012

Мне нужно создать скрипт авторизации. Куки должны быть сохранены и использованы позже для доступа к странице без авторизации. Кто-нибудь может дать мне пример работы?

1 Ответ

5 голосов
/ 18 марта 2012

Во-первых, вы должны сделать первоначальный запрос, чтобы получить куки с сервера.В ответе вы сохраните куки, которые сервер отправляет в заголовке ответа Set-Cookie.Где вы храните их, зависит от вас.Я только что добавил их в сеанс.

    $uri    = 'http://example.com';
    $client = new Zend_Http_Client();
    $client->setUri($uri);
    $client->setAdapter('Zend_Http_Client_Adapter_Curl');
    $adapter = $client->getAdapter();
    $adapter->setCurlOption(CURLOPT_SSL_VERIFYPEER, false);

    /** First Request to get required cookies **/
    $response = $client->request();

    /** Get response cookie strings and store them (session, db, file, etc) **/
    $cookies  = (array) $response->getHeader('Set-cookie');
    $session  = new Zend_Session_Namespace();
    $session->storedCookies = $cookies;

Теперь, когда у вас есть файлы cookie, вы можете добавить их к вашему запросу при следующем запросе.

    /** Start new Zend_Http_Client instance **/
    $uri      = 'http://example.com';
    $client   = new Zend_Http_Client();
    $client->setUri($uri);
    $client->setAdapter('Zend_Http_Client_Adapter_Curl');
    $adapter  = $client->getAdapter();
    /** This setCurlOption is optional **/
    $adapter->setCurlOption(CURLOPT_SSL_VERIFYPEER, false);


    $session = new Zend_Session_Namespace();
    $cookies = $session->storedCookies;
    /** Add Stored Cookie strings to Zend_Http_Client instance **/ 
    foreach ($cookies as $cookieStr) {
        $client->setCookie(Zend_Http_Cookie::fromString($cookieStr, $uri));
    }

    /** Perform request using stored cookies **/
    $response = $client->request();

Если у вас есть вопросы или мне нужно что-нибудь уточнить, просто дайте мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...