2008-10-29 14 views
9

Mam aplikację PHP, która musi pobrać zawartość z innej strony internetowej, a strona internetowa, którą czytam, potrzebuje pliku cookie.Zapisz pliki cookie dla zdalnych stron internetowych

Znalazłem informacje o tym, jak wykonać to połączenie, gdy już mam plik cookie (http://groups.google.com/group/comp.lang.php/msg/4f618114ab15ae2a), jednak nie mam pojęcia, jak wygenerować plik cookie, ani jak/gdzie plik cookie jest zapisywany.

Na przykład, aby przeczytać tę stronę poprzez wget I wykonaj następujące czynności:

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 

... moje pytanie brzmi jak to zrobić trochę do '--save-cookies' w PHP tak, że ja mogą korzystać z plików cookie w obserwacji PHP stream_context_create/file_get_contents blokować:

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

Odpowiedz

5

można by zapewne lepiej wyłączyć za pomocą cURL. Użyj opcji curl_setopt, aby skonfigurować opcje obsługi plików cookie.

Jeśli jest to coś jednorazowego, możesz użyć przeglądarki Firefox z Live HTTP Headers, aby uzyskać nagłówek, a następnie wkleić go do kodu PHP.

14

Shazam - to działało! Bardzo, bardzo! W przypadku gdy ktoś indziej natyka się na tej stronie, oto co było potrzebne w szczegółach:

  1. zainstalować cURL (dla mnie it'was jak prostego jak 'sudo apt-get install php5-curl ' w ubuntu)
  2. zmiana przed wymienionych PHP do następującego:

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

Powyżej fragment kodu silnym wpływem http://www.weberdev.com/get_example-4555.html.

Powiązane problemy