2012-05-13 40 views
16

Tôi đã tìm kiếm một cách, để chỉ định dữ liệu cookie cho CURL. Tôi đã tìm thấy một số giải pháp về cách lưu cookie từ trang được truy cập, nhưng đó không phải là những gì tôi cần. Điều tôi muốn là, để tự ghi dữ liệu cho cookie, vì vậy CURL sử dụng nó.Có thể đặt nội dung cookie bằng CURL không?

Trả lời

20

Bạn thực sự nên read the documentation - nó được liệt kê chính xác với các từ khóa bạn mong muốn và chứa rất nhiều thông tin hữu ích:

-b, --cookie

(HTTP) Vượt qua các dữ liệu vào máy chủ HTTP dưới dạng cookie. Nó được cho là dữ liệu được nhận trước đó từ máy chủ trong dòng "Set-Cookie:". Dữ liệu phải ở định dạng "NAME1 = VALUE1; NAME2 = VALUE2".

Nếu không có biểu tượng '=' được sử dụng trong dòng, nó được coi là tên tệp thành sử dụng để đọc các dòng cookie được lưu trữ trước đó, nên sử dụng trong phiên này nếu chúng khớp nhau. Sử dụng phương pháp này cũng kích hoạt trình phân tích cú pháp cookie "cũng sẽ làm cho các tệp đến ghi lại curl quá, có thể hữu ích nếu bạn đang sử dụng kết hợp với tùy chọn -L, --location. Định dạng tệp của tệp để đọc cookie từ phải là tiêu đề HTTP đơn giản hoặc định dạng tệp Netscape/Mozilla .

LƯU Ý rằng tệp được chỉ định bằng -b, --cookie chỉ được sử dụng làm đầu vào. Không có cookie nào được lưu trữ trong tệp. Để lưu trữ cookie, hãy sử dụng tùy chọn -c, --cookie-jar hoặc thậm chí bạn có thể lưu tiêu đề HTTP vào tệp bằng cách sử dụng -D, --dump-header!

Nếu tùy chọn này được đặt nhiều lần, tùy chọn cuối cùng sẽ là được sử dụng.

+0

Great câu trả lời 1 – gahooa

+0

Cảm ơn. Dường như tôi không phải là người duy nhất :) –

+0

Làm việc như một sự quyến rũ! – PierreF

2

cURL có thể sử dụng tệp cookie trong Netscape format. Chỉ cần tạo một tệp như vậy và sử dụng làm tùy chọn CURLOPT_COOKIEFILE.

22

Bạn có thể sử dụng curl_etopt với hằng số CURLOPT_COOKIE:

<?php 
// create a new cURL resource 
$ch = curl_init(); 

// cookies to be sent 
curl_setopt($ch, CURLOPT_COOKIE, "fruit=apple; colour=red"); 

khác ở các PHP docs

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