This page has been robot translated, sorry for typos if any. Original content here.

Superglobales Array $ _SERVER

Eines der wichtigsten vordefinierten Arrays ist das $ _SERVER-Array - der PHP-Interpreter setzt die vom Server empfangenen Variablen hinein. Ohne diese Variablen ist es schwierig, vollständige Unterstützung für Webanwendungen zu organisieren. Die folgenden Elemente sind die wichtigsten Elemente des superglobalen Arrays $ _SERVER.

Hinweis:

Sie können die vollständige Liste der Elemente des $ _SERVER-Arrays entweder mit der Funktion print_r () anzeigen, die den Dump des Arrays ausgibt, oder mit der Funktion phpinfo (), die Informationen über den PHP-Interpreter anzeigt.

$ _SERVER ['DOCUMENT_ROOT']

Das Element $ _SERVER ['DOCUMENT_ROOT'] enthält den Pfad zum Stammverzeichnis des Servers. Wenn das Skript im virtuellen Host ausgeführt wird, gibt dieses Element den Pfad zum Stammverzeichnis des virtuellen Hosts an. Ie. In der Konfigurationsdatei httpd.conf verfügt der virtuelle Host über eine DocumentRoot-Direktive, die auf "D: / main" gesetzt ist, das Element $ _SERVER ['DOCUMENT_ROOT'] enthält den Wert von "D: main".

Element $ _SERVER ['HTTP_ACCEPT']

Das Element $ _SERVER ['HTTP_ACCEPT'] beschreibt die Voreinstellungen des Clients für den Dokumenttyp. Der Inhalt dieses Elements wird aus dem HTTP Accept-Header abgerufen, den der Client an den Server sendet. Der Inhalt dieses Headers könnte so aussehen

image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, */*

Mit der Accept-Kopfzeile können Sie den Medientyp angeben, den der Client als Antwort auf seine Anfrage erhalten möchte. Dieser Header ermöglicht dem Server, darüber informiert zu werden, dass die Antwort auf eine kleine Anzahl bevorzugter Typen beschränkt ist.

Das Zeichen * wird verwendet, um Typen in einer Medienserie zu gruppieren. Beispielsweise gibt das Zeichen * / * die Verwendung aller Typen an, und Typ / * kennzeichnet die Verwendung aller Untertypen des ausgewählten Typtyps.

Hinweis:

Medientypen sind durch Kommas voneinander getrennt.

Jede Medienserie zeichnet sich zusätzlich durch einen zusätzlichen Parametersatz aus. Einer davon ist der sogenannte relative Präferenzfaktor q, der Werte von 0 bis 1 von den weniger bevorzugten zu den bevorzugteren Typen annimmt. Mithilfe mehrerer q-Parameter kann der Client dem Server den relativen Grad der Präferenz für einen bestimmten Medientyp mitteilen.

Hinweis:

Standardmäßig ist der Parameter q auf 1 eingestellt. Außerdem ist er durch ein Semikolon vom Medientyp getrennt.

Beispiel für einen Accept-Header:

Accept: audio/*; q=0.2, audio/basic

In dieser Kopfzeile ist der erste Typ audio / * einschließlich aller Musikdokumente und gekennzeichnet durch einen Präferenzfaktor von 0,2. Der Typ von audio / basic wird über ein Komma angegeben, für das der Präferenzfaktor nicht angegeben ist und einen Standardwert von eins annimmt. RFC2616 zitiert, kann diese Kopfzeile wie folgt interpretiert werden: "Ich bevorzuge die Art von Audio / Basic, aber ich kann auch Dokumente von jedem anderen Audio-Typ senden, wenn sie verfügbar sind, nach dem Präferenzfaktor um mehr als 80% reduziert."

Das Beispiel kann komplizierter sein.

Accept: text/plain; q=0.5, text/html,
text/x-dvi; q=0.8, text/xc

Hinweis:

Beachten Sie, dass das Element $ _SERVER ['HTTP_ACCEPT'] genau dieselben Informationen enthält, jedoch ohne den anfänglichen Accept-Header.

Dieser Header wird wie folgt interpretiert: Die Dokumenttypen text / html und text / xc werden bevorzugt, aber wenn sie nicht verfügbar sind, bevorzugt der Client, der diese Anfrage sendet, text / x-dvi. Ist dies nicht der Fall, kann der Typ text / einfach.

Element $ _SERVER ['HTTP_ACCEPT_LANGUAGE']

Das $ _SERVER ['HTTP_ACCEPT_LANGUAGE'] Element beschreibt die Präferenzen des Clients für die Sprache. Diese Informationen werden aus dem Accept-Language-HTTP-Header extrahiert, den der Client an den Server sendet. Wir können das folgende Beispiel geben:

Accept-Language: ru, en; q=0.7

Das kann wie folgt interpretiert werden: Der Kunde bevorzugt die russische Sprache, akzeptiert aber im Falle seiner Abwesenheit die Dokumente in englischer Sprache. Das $ _SERVER ['HTTP_ACCEPT_LANGUAGE'] Element enthält genau dieselben Informationen, aber ohne den Accept-Language Header:

ru, en; q=0.7

Der Inhalt des Elements $ _SERVER ['HTTP_ACCEPT_LANGUAGE'] kann verwendet werden, um die Nationalität der Besucher zu bestimmen. Die Ergebnisse sind jedoch ungefähre Werte, da viele Benutzer englische Browseroptionen verwenden, die den Server darüber informieren, dass der Besucher nur eine Sprache - Englisch - bevorzugt.

Element $ _SERVER ['HTTP_HOST']

Das Element $ _SERVER ['HTTP_HOST'] enthält den Namen des Servers, der in der Regel mit dem Domainnamen der auf dem Server befindlichen Site übereinstimmt. Normalerweise ist der in diesem Parameter angegebene Name identisch mit $ _SERVER ['SERVER_NAME']. Der Parameter enthält nur den Domänennamen ohne den Protokollnamen (http: //), d.h.

www.sofftime.ru

Element $ _SERVER ['HTTP_REFERER']

Das Element $ _SERVER ['HTTP_REFERER'] enthält die Adresse der Seite, von der der Besucher auf diese Seite gekommen ist. Der Übergang muss durch Bezugnahme erfolgen. Erstellen Sie zwei Seiten index.php und page.php.

Index.php Seite

<?php
echo "<a href=page.php>Ссылка на страницу PHP</a><br />" ;
echo
"Содержимое $_SERVER['HTTP_REFERER'] - " .
$_SERVER [ 'HTTP_REFERER' ]
?>

Page page.php wird einen ähnlichen Inhalt haben, aber der Link wird auf die Seite index.php zeigen.

Seite Seite.php

<?php
echo "<a href=index.php>Ссылка на страницу PHP</a><br />" ;
echo
"Содержимое $_SERVER['HTTP_REFERER'] - " .
$_SERVER [ 'HTTP_REFERER' ]
?>

Wenn Sie von einer Seite zu einer anderen wechseln, zeigt die Verknüpfung die Adresse der Seite an, von der die Überleitung ausgeführt wurde.

Element $ _SERVER ['HTTP_USER_AGENT']

Das $ _SERVER ['HTTP_USER_AGENT'] Element enthält Informationen über den Typ und die Version des Browsers und des Betriebssystems des Besuchers.

Hier ist der typische Inhalt dieser Zeile: "Mozilla / 4.0 (kompatibel; MSIE 6.0; Windows NT 5.1)". Das Vorhandensein der Teilzeichenfolge "MSIE 6.0" zeigt an, dass der Besucher die Seite mit Internet Explorer Version 6.0 durchsucht. Die Zeile "Windows NT 5.1" zeigt an, dass Windows XP als Betriebssystem verwendet wird.

Hinweis:

Für Windows 2000 sieht das Element $ _SERVER ['HTTP_USER_AGENT'] folgendermaßen aus: "Mozilla / 4.0 (kompatibel; MSIE 5.01; Windows NT 5.0) ')", während für Windows XP - "Mozilla / 4.0 (kompatibel; MSIE 6.0 ; Windows NT 5.1) ".

Wenn der Besucher den Opera-Browser verwendet, kann der Inhalt von $ _SERVER ['HTTP_USER_AGENT'] folgendermaßen aussehen: "Mozilla / 4.0 (kompatibel; MSIE 5.0; Windows 98). Opera 6.04 [ru]". Der Teilstring "MSIE 6.0" ist auch hier vorhanden und informiert darüber, dass der Opera-Browser mit dem Internet Explorer-Browser kompatibel ist und dieselben dynamischen Windows-Bibliotheken verwendet. Daher sollte bei der Analyse der vom Browser zurückgegebenen Zeichenfolge berücksichtigt werden, dass der Internet Explorer eine Zeichenfolge enthält, die die Teilzeichenfolge "MSIE 6.0" enthält und die Teilzeichenfolge "Opera" nicht enthält. Außerdem können Sie aus dieser Zeile schließen, dass der Benutzer das Betriebssystem Windows 98 verwendet.

Hinweis:

Der Firefox-Benutzeragent könnte wie Mozilla / 5.0 aussehen (Windows; U; Windows NT 5.1; en-US; rv: 1.8) .Gecko / 20051111 Firefox / 1.5.

Bei Verwendung des Netscape-Browsers könnte der Inhalt des Elements $ _SERVER ['HTTP_USER_AGENT'] folgendermaßen aussehen: "Mozilla / 5.0 (X11; U; Linux i686; de-DE; rv: 1.4); Gecko / 20030624 Netscape / 7.1." Der Zugriff auf diesen Browser kann durch das Vorhandensein der Teilzeichenfolge "Netscape" bestimmt werden. Darüber hinaus können Sie herausfinden, dass der Besucher mit einer Betriebsversion von Linux ins Internet geht, mit einem für Pentium IV optimierten Kernel, der sich in der grafischen X-Window-Umgebung befindet. Dieser Mechanismus ist praktisch, um statistische Informationen zu sammeln, mit denen Designer die Seiten für die gängigsten Browser optimieren können.

Element $ _SERVER ['REMOTE_ADDR']

Das $ _SERVER ['REMOTE_ADDR'] Element enthält die IP-Adresse des Clients. Beim Testen auf dem lokalen Rechner - diese Adresse ist gleich 127.0.0.1. Beim Testen im Netzwerk gibt die Variable jedoch die IP-Adresse des Clients oder des letzten Proxyservers zurück, über den der Client zum Server gekommen ist. Wenn der Client einen Proxy-Server verwendet, können Sie seine IP-Adresse mithilfe der Umgebungsvariablen HTTP_X_FORWARDED_FOR ermitteln, die mit der Funktion getenv () abgerufen werden kann.

Hinweis:

Proxy-Server sind spezielle Zwischenserver, die eine spezielle Art von Diensten bereitstellen: Verkehrskomprimierung, Datencodierung, Anpassung für mobile Geräte und dergleichen. Zu den vielen Proxy-Servern gehören die so genannten anonymen Proxy-Server, mit denen Sie die echte IP-Adresse des Clients verbergen können. Solche Server geben die Umgebungsvariable HTTP_X_FORWARDED_FOR nicht zurück.

Extrahieren der Umgebungsvariablen HTTP_X_FORWARDED_FOR

<?php
echo getenv ( HTTP_X_FORWARDED_FOR );
?>

Element $ _SERVER ['SCRIPT_FILENAME']

Das Element $ _SERVER ['SCRIPT_FILENAME'] platziert den absoluten Pfad zur Datei vom Stammverzeichnis der Festplatte. Wenn der Server also ein Windows-Betriebssystem ausführt, sieht dieser Pfad möglicherweise wie "d: main estindex.php" aus, d. H. der Pfad wird von der Festplatte angegeben, im UNIX-ähnlichen Betriebssystem wird der Pfad vom Stammverzeichnis / angegeben, zum Beispiel "/var/share/www/test/index.php".

Element $ _SERVER ['SERVER_NAME']

Das $ _SERVER ['SERVER_NAME'] -Element enthält den Servernamen, normalerweise identisch mit dem Domänennamen der Site, die sich auf dem Server befindet. Zum Beispiel

www.softtime.ru

Der Inhalt des Elements $ _SERVER ['SERVER_NAME'] stimmt häufig mit dem Inhalt des Elements $ _SERVER ['HTTP_HOST'] überein. Zusätzlich zum Servernamen können Sie mit dem superglobalen Array $ _SERVER eine Reihe von Serverparametern ermitteln, z. B. die IP-Adresse des Servers, den Listening-Port, den installierten Webserver und die Version des HTTP-Protokolls. Diese Information wird in den Elementen $ _SERVER ['SERVER_ADDR'], $ _SERVER ['SERVER_PORT'], $ _SERVER ['SERVER_SOFTWARE'] bzw. $ _SERVER ['SERVER_PROTOCOL'] platziert. Das Folgende ist ein Beispiel, das diese Elemente verwendet.

Verwenden von Array-Elementen $ _SERVER

<?php
echo "Имя сервера - " . $_SERVER [ 'SERVER_NAME' ]. "<br />" ;
echo
"IP-адрес сервера - " . $_SERVER [ 'SERVER_ADDR' ]. "<br />" ;
echo
"Порт сервера - " . $_SERVER [ 'SERVER_PORT' ]. "<br />" ;
echo
"Web-сервер - " . $_SERVER [ 'SERVER_SOFTWARE' ]. "<br />" ;
echo
"Версия HTTP-протокола - " . $_SERVER [ 'SERVER_PROTOCOL' ]. "<br />" ;
?>

Element $ _SERVER ['REQUEST_METHOD']

Das $ _SERVER ['REQUEST_METHOD'] Element enthält die Request-Methode, mit der das Skript aufgerufen wird: GET oder POST.

<?php
echo $_SERVER [ 'REQUEST_METHOD' ]; // GET
?>

Element $ _SERVER ['QUERY_STRING']

Das Element $ _SERVER ['QUERY_STRING'] ist ein Parameter, der an das Skript übergeben wird, wenn der Query-String eine Adresse ist

http://www.mysite.ru/test/index.php?id=1&test=wet&id_theme=512

dann erhält das Element $ _SERVER ['QUERY_STRING'] den gesamten Text nach dem "?" Zeichen. Wenn Sie z. B. auf das unten dargestellte Skript zugreifen, geben Sie in der Abfragezeichenfolge einen beliebigen Text nach dem "?" Wir bekommen eine Seite mit dem eingegebenen Text.

<?php
echo $_SERVER [ 'QUERY_STRING' ]; // id=1&test=wet&id_theme=512
?>

Element $ _SERVER ['PHP_SELF']

Das Element $ _SERVER ['PHP_SELF'] enthält den Namen des Skripts, beginnend mit dem Wurzelverzeichnis des virtuellen Hosts, d.h. wenn die Abfragezeichenfolge eine Adresse ist

http://www.mysite.ru/test/index.php?id=1&test=wet&id_theme=512

dann enthält das Element $ _SERVER ['PHP_SELF'] das Fragment "/test/index.php". In der Regel wird dasselbe Fragment im Element $ _SERVER ['SCRIPT_NAME'] platziert.

Element $ _SERVER ['REQUEST_URI']

Das Element $ _SERVER ['REQUEST_URI'] enthält den Namen des Skripts beginnend mit dem Stammverzeichnis des virtuellen Hosts und Parametern, d. Wenn die Abfragezeichenfolge eine Adresse ist:

http://www.mysite.ru/test/index.php?id=1&test=wet&id_theme=512

dann enthält das Element $ _SERVER ['REQUEST_URI'] das Fragment "/test/index.php?id=1&test=wet&id_theme=512". Um die vollständige Adresse im Skript wiederherzustellen, das in die Abfragezeichenfolge eingefügt wird, ist es ausreichend, die Kombination von Elementen des Arrays $ _SERVER zu verwenden, das unten dargestellt wird

Vollständige Adresse des Skripts

<?php
echo "http://" . $_SERVER [ 'SERVER_NAME' ]. $_SERVER [ 'REQUEST_URI' ];
?>


1
178.20.157.4, 178.20.157.4, 66.102.9.150www.shram.kiev.uawww.shram.kiev.uahttp: //www.shram.kiev.ua/site/server.shtml
array (36) {["" REDIRECT_gzip-only-text / html "] => Zeichenfolge (1)" 1 "[" REDIRECT_RF "] => Zeichenfolge (42)" / var / www / admin / data / www / shram. kiev.ua/site "[" REDIRECT_STATUS "] => Zeichenkette (3)" 200 "[" gzip-only-text / html "] => Zeichenkette (1)" 1 "[" HTTP_HOST "] => Zeichenkette (17 ) "www.shram.kiev.ua" ["HTTP_X_FORWARDED_FOR"] => string (40) "178.20.157.4, 178.20.157.4, 66.102.9.150" ["HTTP_X_FORWARDED_PROTO"] => string (4) "http" [" HTTP_X_REAL_IP "] => string (12)" 66.102.9.150 "[" HTTP_CONNECTION "] => string (5)" schließen "[" HTTP_ACCEPT "] => string (3)" * / * "[" HTTP_ACCEPT_CHARSET "] = > string (7) "utf-8, *" ["HTTP_VIA"] => Zeichenfolge (34) "1.0 translate.google.com TWSFE / 0.9" ["HTTP_USER_AGENT"] => Zeichenfolge (60) "Mozilla / 4.0 ( kompatibel; MSIE 6.0; Windows NT 5.1); gzip (gfe) "[" HTTP_ACCEPT_ENCODING "] => Zeichenfolge (15)" gzip, deflate, br "[" PFAD "] => string (28)" / usr / local / bin: / usr / bin: / bin "[" SERVER_SIGNATURE "] => Zeichenfolge (78)"
Apache / 2.2.22 (Debian) Server unter www.shram.kiev.ua Port 80
"[" SERVER_SOFTWARE "] => string (22)" Apache / 2.2.22 (Debian) "[" SERVER_NAME "] => string (17)" www.shram.kiev.ua "[" SERVER_ADDR "] => string (12) "178.20.157.4" ["SERVER_PORT"] => string (2) "80" ["REMOTE_ADDR"] => string (12) "66.102.9.150" ["DOCUMENT_ROOT"] => string (37) " /var/www/admin/data/www/shram.kiev.ua "[" SERVER_ADMIN "] => string (23)" webmaster@shram.kiev.ua "[" SCRIPT_FILENAME "] => string (47)" / var / www / admin / data / www / shram.kiev.ua/index.php "[" REMOTE_PORT "] => Zeichenfolge (5)" 45603 "[" REDIRECT_QUERY_STRING "] => string (34)" & MY_REQUEST_URI = / site /server.shtml "[" REDIRECT_URL "] => Zeichenfolge (18)" /site/server.shtml "[" GATEWAY_INTERFACE "] => Zeichenfolge (7)" CGI / 1.1 "[" SERVER_PROTOCOL "] => Zeichenfolge (8 ) "HTTP / 1.0" ["REQUEST_METHOD"] => Zeichenkette (3) "GET" ["QUERY_STRING"] => Zeichenkette (34) "& MY_REQUEST_URI = / site / server.shtml" ["REQUEST_URI"] => string ( 18) "/site/server.shtml" ["SCRIPT_NAME"] => string (10) "/index.php" ["PHP_SELF"] => string (10) "/index.php" ["REQUEST_TIME_FLOAT"] = > float (1529388855.626) ["REQUEST_TIME"] => int (15293 88855)}
1.0 translate.google.com TWSFE / 0.9


NEIN