PHP-Programmierung – file_get_contents()
URL mit Cookies abrufen

Office-AnwendungenSoftware

Sie möchten eine Seite abrufen, bei der ein Cookie zusammen mit der Seitenanfrage übersandt werden muss. Lösung: file_get_contents( )

Stream-Kontext ___

Sie möchten eine Seite abrufen, bei der ein Cookie zusammen mit der Seitenanfrage übersandt werden muss. Für diese Lösung verwenden Sie am besten file_get_contents( ) mit einem Stream-Kontext:

$contextOptions = array(“http” => array (“header” => “Cookie: user=ellen;activity=schwimmen\r\n”));
$context =stream_context_create($contextOptions);
$page = file_get_contents(“http://www.example.com/braucht-cookies.php”,false, $context);

Alternativ können Sie die cURL-Erweiterung und die Option CURLOPT_COOKIE verwenden:

$c = curl_init(‘http://www.example.com/braucht-cookies.php’);
curl_setopt($c, CURLOPT_VERBOSE, 1);
curl_setopt($c, CURLOPT_COOKIE,’user=ellen; activity=schwimmen’);
curl_setopt($c, CURLOPT_RETURNTRANSFER,1);
$page = curl_exec($c);
curl_close($c);

Wenn cURL nicht verfügbar ist, können Sie die Methode addHeader( ) der Pear-Klasse HTTP_Request benutzen:

require ‘HTTP/Request.php’;
$r = new HTTP_Request(‘http://www.example.com/braucht-cookies.php’);
$r->addHeader(‘Cookie’,’user=ellen;activity=schwimmen’);
$r->sendRequest();
$page = $r->getResponseBody();

Ein Cookie wird im Request-Header Cookie an den Server übersandt. Bei file_get_contents( ) erfolgt das über eine HTTP-Kontextoption. Die cURL-Erweiterung bietet eine Cookie-spezifische Option, während Sie bei HTTP_\pardRequest den Cookie-Header genau wie jeden anderenRequest-Header hinzufügen müssen.

»Mehrere Cookie-Werte«
Mehrere Cookie-Werte werden in einer durch Semikolons getrennten Liste übersandt. Die Beispiele in der Lösung senden zwei Cookies: eines namens user mit dem Inhalt ellen und eines mit dem Namen activity und dem Inhalt schwimmen. Mit Hilfe der zur cURL-Erweiterung gehörenden Cookie-Jar (»Keksdose«) können Sie eine Seite anfordern,
die Cookies setzt, und nachfolgend Anfragen starten, die diese neu gesetzten Cookies enthalten. Bei der ersten Anfrage setzen Sie CURLOPT_COOKIEJAR auf den Namen einer Datei, in der die Cookies gespeichert werden sollen. Bei den nachfolgenden Anfragen setzen Sie CURLOPT_COOKIEFILE auf denselben Dateinamen; cURL liest dann die Cookies aus der Datei und sendet sie zusammen mit der Anfrage.
Dies ist besonders hilfreich bei einer Abfolge von Anfragen, in der sich die erste Anfrage bei einer Site anmeldet, die Session- oder Authentifizierungs-Cookies setzt, und die übrigen Anfragen diese Cookies enthalten müssen, um gültig zu sein. Überlegen Sie sich gut, wo Sie die Cookie-Jar speichern. Die Datei muss sich an einem Ort befinden, auf den der Webserver schreibend zugreifen kann. Wenn aber andere Benutzer die Datei lesen können, können sie möglicherweise an die in den Cookies gespeicherten Authentifizierungsangaben gelangen.

Autor: swasi
Anklicken um die Biografie des Autors zu lesen  Anklicken um die Biografie des Autors zu verbergen