curlopt_cookiejar - curl cookie jar php
Guarde las cookies para páginas web remotas (2)
Tengo una aplicación PHP que necesita tomar los contenidos de otra página web, y la página web que estoy leyendo necesita una cookie.
He encontrado información sobre cómo hacer esta llamada una vez que tengo la cookie ( http://groups.google.com/group/comp.lang.php/msg/4f618114ab15ae2a ), sin embargo, no tengo idea de cómo generar el cookie, o cómo / dónde se guarda la cookie.
Por ejemplo, para leer esta página web a través de wget, hago lo siguiente:
wget --quiet --save-cookies cookie.file --output-document=who.cares /
http://remoteServer/login.php?user=xxx&pass=yyy
wget --quiet --load-cookies cookie.file --output-document=documentiwant.html /
http://remoteServer/pageicareabout.html
... mi pregunta es cómo hago el bit ''--save-cookies'' en PHP para poder usar la cookie en el siguiente bloque PHP stream_context_create / file_get_contents:
$opts = array(http''=> array(
''method''=> "GET",
''header''=>
"Accept-language: en/r/n" .
"Cookie: **NoClueAtAll**/r/n"
)
);
$context = stream_context_create($opts);
$documentiwant = file_get_contents("http://remoteServer/pageicareabout.html",
0, $context);
Probablemente sería mejor usar cURL . Use curl_setopt para configurar las opciones de manejo de cookies.
Si esto es algo único, puede usar Firefox con Live HTTP Headers para obtener el encabezado y luego pegarlo en su código PHP.
Shazam - ¡eso funcionó! ¡Mucho tanto! En caso de que alguien más tropiece con esta página, esto es lo que se necesitaba en detalle:
- install cURL (para mí fue tan simple como ''sudo apt-get install php5-curl'' en ubuntu)
cambie el PHP mencionado anteriormente a lo siguiente:
<?php $cr = curl_init(''http://remoteServer/login.php?user=xxx&pass=yyy''); curl_setopt($cr, CURLOPT_RETURNTRANSFER, true); curl_setopt($cr, CURLOPT_COOKIEJAR, ''cookie.txt''); $whoCares = curl_exec($cr); curl_close($cr); $cr = curl_init(''http://remoteServer/pageicareabout.html''); curl_setopt($cr, CURLOPT_RETURNTRANSFER, true); curl_setopt($cr, CURLOPT_COOKIEFILE, ''cookie.txt''); $documentiwant = curl_exec($cr); curl_close($cr); ?>
El fragmento de código anterior está muy influenciado por http://www.weberdev.com/get_example-4555.html .