Speichern Sie Cookies für Remote -Webseiten
Frage
Ich habe eine PHP -Anwendung, die den Inhalt von einer anderen Webseite abrufen muss, und die Webseite, die ich lese, benötigt ein Cookie.
Ich habe Informationen gefunden, wie man diesen Anruf tätigt, sobald ich den Cookie habe ( http://groups.google.com/group/comp.lang.php/msg/4f618114ab15ae2a ), Allerdings habe ich keine Ahnung, wie ich das Cookie generieren soll oder wie / wo der Keks gerettet wird.
Zum Beispiel, um diese Webseite über WGet zu lesen, mache ich Folgendes:
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
... Meine Frage ist, wie ich das Bit '-Save-Cookies' in PHP mache, damit ich das Cookie im Follow-up-PHP-Stream_Context_Create / File_Get_Contents Block verwenden kann:
$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);
Lösung
Sie würden wahrscheinlich besser dran sein, wenn Sie es verwenden würden Locken. Verwenden curl_setopt So richten Sie die Cookie -Handhabungsoptionen ein.
Wenn dies nur eine einmalige Sache ist, könnten Sie Firefox mit verwenden Live HTTP -Header Um den Header zu erhalten, fügen Sie ihn dann in Ihren PHP -Code ein.
Andere Tipps
Shazam - das hat funktioniert ! Danke soooo viel! Falls jemand anderes auf diese Seite stolpert, wurde dies im Detail benötigt:
- Installieren Sie Curl (für mich war es so einfach wie "sudo apt-Get-Installieren Sie PHP5-curl" in Ubuntu)
Ändern Sie den vorherigen PHP in Folgendes::
<?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); ?>
Über dem Code -Snippet stark beeinflusst von http://www.weberdev.com/get_example-4555.html.