Pregunta

Tengo una aplicación PHP que necesita capturar los contenidos de otra página web, y la página 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 la cookie, o cómo / dónde está la cookie guardado.

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 puedo hacer el bit '--save-cookies' en PHP para poder usar la cookie en el bloque de seguimiento de stream_context_create / file_get_contents de PHP:

$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);
¿Fue útil?

Solución

Probablemente estaría mejor usando cURL . Utilice curl_setopt para configurar las opciones de manejo de cookies.

Si esto es solo una cosa de una sola vez, puede usar Firefox con Encabezados HTTP en vivo para obtener el encabezado, luego péguelo en su código PHP.

Otros consejos

Shazam : ¡eso funcionó! Muchas gracias! En caso de que alguien más se tope con esta página, esto es lo que se necesitaba en detalle:

  1. instala cURL (para mi fue como tan simple como 'sudo apt-get install php5-curl 'en ubuntu)
  2. cambia el PHP de la lista anterior 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 .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top