2012-01-30 7 views
3

Мне нужно создать скрипт авторизации. Файлы cookie должны быть сохранены и использованы позже для доступа к странице без разрешения. Может ли кто-нибудь дать мне пример работы?Zend_Http_Client Пример авторизации cURL

ответ

5

Во-первых, вы должны сделать первоначальный запрос на получение файлов cookie с сервера. В ответ вы сохраните файлы cookie, отправленные сервером в заголовке ответа 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(); 

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

+0

спасибо. Это то, что я ищу. Как я знаю, завиток может содержать постоянное соединение и использовать его для нескольких запросов в очереди. Как это можно сделать с Zend? – Crusader

 Смежные вопросы

  • Нет связанных вопросов^_^