http://

https://

http:// -- https://Zugriff auf HTTP(s)-URLs

Beschreibung

Ermöglicht den rein lesenden Zugriff auf Dateien/Ressourcen über HTTP. Standardmäßig wird HTTP 1.0 GET verwendet. Um namensbasierte virtuelle Hosts verwalten zu können, wird zusammen mit der Anfrage ein Host:-Header gesendet. Wenn in der Datei php.ini oder im Stream-Kontext die Direktive user_agent konfiguriert wurde, wird diese ebenfalls in die Anfrage aufgenommen.

Der Stream ermöglicht den Zugriff auf den Inhalt (body) der Ressource; die Header werden in der Variablen $http_response_header gespeichert.

Wenn es wichtig ist, die URL der Ressource zu kennen, von der das Dokument stammt (nachdem alle Weiterleitungen verarbeitet wurden), muss die Reihe der vom Stream zurückgegebenen Antwort-Header verarbeitet werden.

Ist die Direktive from gesetzt ist und wird nicht durch die Kontextoptionen und -parameter überschrieben, wird sie für den From:-Header verwendet.

Verwendung

  • http://example.com
  • http://example.com/file.php?var1=val1&var2=val2
  • http://user:password@example.com
  • https://example.com
  • https://example.com/file.php?var1=val1&var2=val2
  • https://user:password@example.com

Optionen

Zusammenfassung des Wrappers
Eigenschaft wird unterstützt
Eingeschränkt durch allow_url_fopen Ja
Erlaubt Lesen Ja
Erlaubt Schreiben Nein
Erlaubt Anfügen Nein
Erlaubt gleichzeitiges Lesen und Schreiben N/A
Unterstützt stat() Nein
Unterstützt unlink() Nein
Unterstützt rename() Nein
Unterstützt mkdir() Nein
Unterstützt rmdir() Nein

Beispiele

Beispiel #1 Ermitteln der letzten URL nach Weiterleitungen

<?php
$url
= 'http://www.example.com/redirecting_page.php';

$fp = fopen($url, 'r');

$meta_data = stream_get_meta_data($fp);
foreach (
$meta_data['wrapper_data'] as $response) {

/* Wurden wir weitergeleitet? */
if (strtolower(substr($response, 0, 10)) == 'location: ') {

/* $url mit dem Ziel der Weiterleitung aktualisieren */
$url = substr($response, 10);
}

}

?>

Anmerkungen

Hinweis: HTTPS wird nur unterstützt, wenn die Erweiterung openssl aktiviert ist.

HTTP-Verbindungen sind schreibgeschützt; in eine HTTP-Ressource können weder Daten geschrieben noch Dateien kopiert werden.

POST- und PUT-Anfragen können zum Beispiel mit Hilfe von HTTP-Kontexten gesendet werden.

Siehe auch

add a note

User Contributed Notes 3 notes

up
7
Rainer Perske
9 years ago
Passing authentication information in the URL as in "https://user:password@example.com" works for HTTP "Basic" access authentication but not for HTTP "Digest" access authentication. You can use the cURL functions for servers requesting HTTP "Digest" access authentication.
up
7
dwalton at acm dot org
18 years ago
As it says on this page:"The stream allows access to the body of the resource; the headers are stored in the $http_response_header variable. Since PHP 4.3.0, the headers are available using stream_get_meta_data()."This one sentence is the only documentation I have found on the mysterious $http_response_header variable, and I'm afraid it's misleading.  It implies that from 4.3.0 onward, stream_get_meta_data() ought to be used in favor of $http_response_header.  Don't be fooled!  stream_get_meta_data() requires a stream reference, which makes it ONLY useful with fopen() and related functions.  However, $http_response_header can be used to get the headers from the much simpler file_get_contents() and related functions, which makes it still very useful in 5.x.Also note that even when file_get_contents() and friends fail due to a 4xx or 5xx error and return false, the headers are still available in $http_response_header.
up
0
NEA at AraTaraBul dot com
18 years ago
HTTP post function;<?phpfunction post_it($datastream, $url) { $url = preg_replace("@^http://@i", "", $url);$host = substr($url, 0, strpos($url, "/"));$uri = strstr($url, "/");       $reqbody = "";      foreach($datastream as $key=>$val) {          if (!empty($reqbody)) $reqbody.= "&";      $reqbody.= $key."=".urlencode($val);      } $contentlength = strlen($reqbody);     $reqheader =  "POST $uri HTTP/1.1\r\n".                   "Host: $host\n". "User-Agent: PostIt\r\n".     "Content-Type: application/x-www-form-urlencoded\r\n".     "Content-Length: $contentlength\r\n\r\n".     "$reqbody\r\n"; $socket = fsockopen($host, 80, $errno, $errstr);if (!$socket) {   $result["errno"] = $errno;   $result["errstr"] = $errstr;   return $result;}fputs($socket, $reqheader);while (!feof($socket)) {   $result[] = fgets($socket, 4096);}fclose($socket);return $result;}?>
To Top