2012-01-15 34 views
6

Tôi đang sử dụng này ....PHP cURL dường như bị bỏ qua Cookie jar/nộp

function cURL($url, $header=NULL, $p=NULL) 
    { 

     $ch = curl_init(); 

     curl_setopt($ch, CURLOPT_HEADER, true); 
     curl_setopt($ch, CURLOPT_NOBODY, true); 
     curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
     curl_setopt($ch, CURLOPT_URL, $url); 
     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
     curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1"); 
     curl_setopt($ch, CURLOPT_COOKIEFILE, "/tmp/TestCookies"); 


     if ($p) { 
      curl_setopt($ch, CURLOPT_POST, 1); 
      curl_setopt($ch, CURLOPT_POSTFIELDS, $p); 
     } 
     $result = curl_exec($ch); 

     if ($result) { 
      return $result; 
     } else { 
      return curl_error($ch); 
     } 
     curl_close($ch); 
    } 

Và tôi thực hiện cuộc gọi như thế này ...

 $Headers = array(
       "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*\/*;q=0.5", 
       "Accept-Language: en-gb,en;q=0.5", 
       "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7"); 


     $a = $this->cURL("https://www.mysite.com/",$Headers, null); 

tôi d mong đợi điều này để nhận được một cookie và ghi nó vào tập tin /tmp/TestCookies.

Trang web chắc chắn trả về Set-Cookie tiêu đề - Tôi có thể thấy chúng nếu tôi bỏ $a, tuy nhiên, tệp được đề cập sẽ không bao giờ được tạo.

Trong trường hợp đó là vấn đề quyền, tôi đã tạo nó với touchchmod 777 'd - Tệp hiện đã tồn tại nhưng tệp trống.

Tôi đang làm gì sai?

+2

'_COOKIEFILE' được đọc từ và chỉ ghi' _COOKIEJAR'. – mario

+0

loại được đề cập ở đây: http://stackoverflow.com/a/1861824/345031 – mario

+0

Cảm ơn thông tin - nếu bạn muốn đăng câu trả lời, tôi sẽ chấp nhận. – Basic

Trả lời

11

Các curl constants được chia thành

  • CURL_COOKIEFILE là nguồn cookies.txt đó là đọc từ
  • CURL_COOKIEJAR như kho dữ liệu đó là viết trở lại

Bạn phải cung cấp _COOKIEFILE với một chuỗi rỗng để kích hoạt nó IIRC, nhưng _COOKIEJAR nếu bạn muốn chúng được lưu trữ. Thông thường, đặt cả hai tùy chọn cho cùng một tên.

+0

Cảm ơn Mario - Trong trường hợp của tôi, tôi đã cố gắng cung cấp một hoặc khác, nhưng không bao giờ cả hai. – Basic

+3

Nó đã được chuyển thành 'CURLOPT_COOKIEFILE' và' CURLOPT_COOKIEJAR' kể từ đó. –

Các vấn đề liên quan