2009-11-28 3 views
3

Вот мой код, чтобы использовать завиток:Невозможно включить куки в PHP локон

class cURL { 
    var $headers; 
    var $user_agent; 
    var $compression; 
    var $cookie_file; 
    var $proxy; 
    var $process; 

    function cURL($cookies = TRUE, $cookie = 'cookies.txt', $compression = 'gzip', $proxy = '') { 
     $this->headers [] = 'Connection: Keep-Alive'; 
     $this->headers [] = 'Content-type: application/x-www-form-urlencoded;charset=UTF-8'; 
     $this->user_agent = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)'; 
     $this->compression = $compression; 
     $this->proxy = $proxy;  

     $this->cookies = $cookies; 
     if ($this->cookies == TRUE) 
      $this->cookie ("c:/wamp/www/googlegroups/cookies/".$cookie); 

     $this->process = curl_init(); 
     curl_setopt ($this->process, CURLOPT_HTTPHEADER, $this->headers); 
     curl_setopt ($this->process, CURLOPT_USERAGENT, $this->user_agent); 

     if ($this->cookies == TRUE) 
      curl_setopt ($this->process, CURLOPT_COOKIEFILE, $this->cookie_file); 
     if ($this->cookies == TRUE) 
      curl_setopt ($this->process, CURLOPT_COOKIEJAR, $this->cookie_file); 

     curl_setopt ($this->process, CURLOPT_ENCODING, $this->compression); 
     curl_setopt ($this->process, CURLOPT_TIMEOUT, 30); 
     if ($this->proxy) 
      curl_setopt ($this->process, CURLOPT_PROXY, $this->proxy); 
     curl_setopt ($this->process, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt ($this->process, CURLOPT_FOLLOWLOCATION, 1); 
     curl_setopt ($this->process, CURLOPT_SSL_VERIFYHOST, 0); 
     curl_setopt ($this->process, CURLOPT_SSL_VERIFYPEER, 0); 
    } 

    function __destruct(){ 
     curl_close ($this->process); 
     unlink($this->cookie_file); 
    } 

    function cookie($cookie_file) { 
     if (file_exists ($cookie_file)) { 
      $this->cookie_file = $cookie_file; 
     } else { 
      if($fp = fopen ($cookie_file, 'w')) 
      { 
       fclose($fp); 
      } 
      else $this->error ('The cookie file could not be opened. Make sure this directory has the correct permissions'); 
      $this->cookie_file = $cookie_file; 
     } 
    } 
    function get($url) { 
     curl_setopt ($this->process, CURLOPT_POST, 0); 
     curl_setopt ($this->process, CURLOPT_URL, $url); 
     $return = curl_exec ($this->process); 
     return $return; 
    } 

} 

$cc = new cURL(); 
echo $cc->get("http://127.0.0.1/googlegroups/testcookie.php"); 

Это очень странный тип локон-х неисправно, что я никогда не испытывал раньше. и это выход testcookie.php:

Куки НЕ включен в вашем браузере

Вот забавная вещь, если вы удалите Разорвать связь ($ this-> cookie_file); от функции уничтожения файл куки не будет удален и в следующий раз вы будете запускать этот скрипт, вы получите

Cookies включен в вашем браузере

источник testcookie.php код:

setcookie("test","test"); 
if (isset ($_COOKIE['test'])) 
{ 
    echo "Cookies are enabled on your browser"; 
} 
else 
{ 
    echo "Cookies are <b>NOT</b> enabled on your browser"; 
} 

ответ

5

Я не вижу, где проблема. CURL делает именно то, что он предполагает делать.

setcookie() устанавливает cookie в заголовке ответа клиенту. _COOKIE содержит значение в заголовке запроса. Если вы удалите файл cookie, CURL не сможет сохранить значение cookie, которое вы установили.

+0

ничего себе! setcookie() устанавливает cookie в заголовке ответа клиенту. _COOKIE содержит значение в заголовке запроса.! Отличная точка! Я не видел этого! благодаря – EBAG