Domanda

Ho un'applicazione PHP che deve prendere i contenuti da un'altra pagina web e la pagina web che sto leggendo ha bisogno di un cookie.

Ho trovato informazioni su come effettuare questa chiamata una volta che ho il cookie ( http://groups.google.com/group/comp.lang.php/msg/4f618114ab15ae2a ), tuttavia non ho idea di come generare il cookie o come / dove sia il cookie salvato.

Ad esempio, per leggere questa pagina Web tramite wget, faccio quanto segue:

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

... la mia domanda è come posso fare il bit "--save-cookies" in PHP in modo da poter usare il cookie nel follow-up blocco stream_context_create / file_get_contents di 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);
È stato utile?

Soluzione

Probabilmente staresti meglio usando cURL . Usa curl_setopt per impostare le opzioni di gestione dei cookie.

Se questa è solo una cosa una tantum, potresti usare Firefox con Header HTTP in diretta per ottenere intestazione, quindi incollalo nel tuo codice PHP.

Altri suggerimenti

Shazam - ha funzionato! Grazie mille! Nel caso in cui qualcun altro si imbattesse in questa pagina, ecco cosa era necessario in dettaglio:

  1. installa cURL (per me è stato come semplice come 'sudo apt-get install php5-curl 'in ubuntu)
  2. cambia il PHP precedentemente elencato a quanto segue:

    <?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);
    
    ?>
    

Lo snippet di codice sopra riportato è fortemente influenzato da http://www.weberdev.com/get_example-4555. html .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top