2011-10-27 17 views
11

Im usando curl tramite php per recuperare un URL. Sono riuscito a scaricare la pagina, le intestazioni e tutto il resto. Tuttavia, i cookie restituiti da qualsiasi pagina non vengono salvati nel file specificato. Ho controllato le autorizzazioni ecc. E nulla sembra fuori dall'ordinario. Sto iniziando a pensare che qualcosa non va nel mio codice.Come posso salvare i cookie da una risposta a una richiesta CURL usando 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; 
} 

Qualsiasi aiuto apprezzato.

+0

Il tuo codice sembra buono: sei sicuro al 1000% che ci siano alcuni cookie da salvare? – DaveRandom

+0

Curl non scrive i cookie di sessione sul file, solo quelli permanenti. –

+0

@DaveRandom: Sì, ci sono i cookie da salvare. –

risposta

19

Grazie a tutti per tutto l'aiuto. Tuttavia, il problema era qualcos'altro. Probabilmente avrei dovuto dire che sto lavorando su un server Windows e cURL non è stato in grado di leggere il percorso a cookie.txt.

Uso:

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

anziché:

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

risolto il problema.

+0

Sostituisci 'FILE' con' __FILE__'. Grazie per la risposta, davvero utile. –

+0

@Andrew Ho risolto la risposta originale. Grazie per aver colto l'errore. –

4

Utilizzare un percorso assoluto per il file jar cookie in modo da essere sicuri di dove è stato salvato e in questo modo si sa che si dispone dell'autorizzazione necessaria per scrivere lì.

negozi ricciolo tutti i cookie che conosce al file, compresi cd cookies di sessione (che sono senza un tempo di scadenza)

Problemi correlati