2012-05-13 2 views
16

Я искал способ указать данные cookie для CURL. Я нашел несколько решений о том, как сохранить файлы cookie с посещенной страницы, но это не то, что мне нужно. Я хочу, чтобы написать данные для файла cookie самостоятельно, поэтому CURL использует его.Можно ли установить содержимое файла cookie с помощью CURL?

ответ

20

Вы действительно должны read the documentation - это перечислено именно с ключевыми словами, которые Вы ожидали бы и содержит много полезной информации:

-b, --cookie

(HTTP) передают данные HTTP-сервер в качестве файла cookie. Предполагается, что данные, ранее полученные от сервера, в строке «Set-Cookie:». Данные должны быть в формате «NAME1 = VALUE1; NAME2 = VALUE2».

Если символ нет «=» используется в строке, оно рассматривается как имя файла, чтобы использовать для чтения ранее сохраненные строки печенья из, которые должны быть использованы в этой сессии, если они совпадают. С помощью этого метода также активируется «парсер для cookie» , который также сделает завиток записи поступающих файлов cookie, , что может быть удобно, если вы используете это в сочетании с -L, . Формат файла для чтения файлов cookie должен быть простым заголовком HTTP или файлом cookie Netscape/Mozilla .

УКАЗАНИЕ, что файл, указанный с помощью -b, --cookie, используется только как вход. В файле не будут сохранены файлы cookie. Чтобы сохранить файлы cookie, используйте параметр -c, --cookie-jar или вы даже можете сохранить заголовки HTTP в файл с помощью -D, --dump-header!

Если этот параметр установлен более одного раза, последний будет использоваться с использованием .

+0

Великий ответ +1 – gahooa

+0

Спасибо. Кажется, я был не единственным :) –

+0

Работает как шарм! – PierreF

2

cURL может использовать файл cookie в Netscape format. Просто создайте такой файл самостоятельно и используйте его как опцию CURLOPT_COOKIEFILE.

22

Вы можете использовать curl_etopt с постоянной CURLOPT_COOKIE:

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

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

Больше в PHP docs

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