2011-10-27 817 views
11

Im utilizando curl a través de php para buscar una url. Con éxito puedo descargar la página, los encabezados y todo. Sin embargo, las cookies devueltas por cualquier página no se guardan en el archivo especificado. He revisado permisos, etc., y nada parece fuera de lo común. Estoy empezando a pensar que algo no funciona en mi código.¿Cómo guardo las cookies de una respuesta a una solicitud de cURL utilizando 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; 
} 

Cualquier ayuda apreciada.

+0

Su código se ve bien - ¿está seguro al 1000% de que hay algunas cookies para guardar? – DaveRandom

+0

Curl no escribirá las cookies de sesión en el archivo, solo las permanentes. –

+0

@DaveRandom: Sí, hay cookies para guardar. –

Respuesta

19

Gracias a todos por la ayuda. Sin embargo, el problema era algo completamente diferente. Probablemente debería haber mencionado que estoy trabajando en un servidor de Windows y cURL no pudo leer la ruta al cookie.txt.

Usando:

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

en lugar de:

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

resuelto el problema.

+0

Reemplaza 'FILE' con' __FILE__'. Gracias por responder, realmente útil. –

+0

@Andrew He solucionado la respuesta original. Gracias por captar el error. –

4

Utilice una ruta de acceso absoluta al archivo cookie jar para asegurarse de dónde está guardado y, de este modo, sabrá que tiene el permiso correcto para escribir allí.

enrollamiento almacena todas las galletas que sabe de al archivo, incluyendo los llamados cookies de sesión (que son sin un tiempo de caducidad)

Cuestiones relacionadas