2011-10-27 43 views
11

Im sử dụng curl qua php để tìm nạp url. Tôi thành công có thể tải xuống trang, tiêu đề và tất cả. Tuy nhiên, các cookie được trả về bởi bất kỳ trang nào không được lưu vào tệp được chỉ định. Tôi đã kiểm tra quyền vv, và không có gì có vẻ ngoài bình thường. Tôi bắt đầu nghĩ rằng một cái gì đó là tắt trong mã của tôi.Làm cách nào để lưu cookie từ phản hồi cho yêu cầu cURL bằng php?

$get_cookie_page = 'http://www.google.ca'; 
echo curl_download($get_cookie_page); 

function curl_download($Url){ 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $Url); 
    curl_setopt($ch, CURLOPT_NOBODY, true); 
    curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); 
    $http_headers = array(
        'Host: www.google.ca', 
        'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0.2) Gecko/20100101 Firefox/6.0.2', 
        'Accept: */*', 
        'Accept-Language: en-us,en;q=0.5', 
        'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7', 
        'Connection: keep-alive' 
       ); 
    curl_setopt($ch, CURLOPT_HEADER, true); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $http_headers); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 10); 
    $output = curl_exec($ch); 
    curl_close($ch); 
    return $output; 
} 

Mọi trợ giúp đều được đánh giá cao.

+0

Mã của bạn có vẻ tốt - bạn có chắc chắn 1000% có một số cookie để lưu không? – DaveRandom

+0

Curl sẽ không ghi cookie phiên ra tệp, chỉ những tệp vĩnh viễn. –

+0

@DaveRandom: Có các cookie được lưu. –

Trả lời

19

Cảm ơn tất cả mọi người cho tất cả sự giúp đỡ. Tuy nhiên, vấn đề là hoàn toàn khác. Tôi có lẽ nên đã đề cập rằng tôi đang làm việc trên một máy chủ Windows và cURL đã không thể đọc đường dẫn đến cookie.txt.

Sử dụng:

curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookie.txt'); 

thay vì:

curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); 

giải quyết vấn đề.

+0

Thay thế 'FILE' bằng '__FILE__'. Cảm ơn câu trả lời, thực sự hữu ích. –

+0

@Andrew Tôi đã sửa câu trả lời gốc. Cảm ơn vì đã bắt lỗi. –

4

Sử dụng đường dẫn tuyệt đối đến tệp jar cookie để bạn chắc chắn nơi tệp được lưu và do đó bạn biết bạn có quyền viết ở đó.

cửa hàng curl tất cả các cookie nó biết của các tập tin, bao gồm cái gọi là cookie phiên (nghĩa là không có thời gian hết hạn)

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