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

$ _SERVER superglobales Array

Eines der wichtigsten vordefinierten Arrays ist das $ _SERVER-Array - der PHP-Interpreter platziert die vom Server empfangenen Variablen darin. Ohne diese Variablen ist es schwierig, vollständige Unterstützung für Webanwendungen zu organisieren. Nachfolgend finden Sie eine Beschreibung der wichtigsten Elemente des $ _SERVER-Superglobal-Arrays.

Hinweis

Sie können die vollständige Liste der $ _SERVER-Arrayelemente anzeigen, indem Sie entweder die Funktion print_r () verwenden, die den Array-Dump druckt, oder die Funktion phpinfo (), die Informationen zum PHP-Interpreter anzeigt.

Element $ _SERVER ['DOCUMENT_ROOT']

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

Element $ _SERVER ['HTTP_ACCEPT']

Das Element $ _SERVER ['HTTP_ACCEPT'] beschreibt die Clientvoreinstellungen hinsichtlich des Dokumenttyps. Der Inhalt dieses Elements wird aus dem Accept-HTTP-Header abgerufen, der den Client an den Server sendet. Der Inhalt dieses Titels kann so aussehen.

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

Mit dem Accept-Header können Sie den Medientyp angeben, den der Client als Antwort auf seine Anfrage erhalten möchte. Mit diesem Header kann der Server informiert werden, dass die Antwort auf eine kleine Anzahl von bevorzugten Typen beschränkt ist.

Das Symbol * wird verwendet, um Typen in einer Medienzeile zu gruppieren. Das Symbol * / * gibt beispielsweise die Verwendung aller Typen an, und die Bezeichnung Typ / * definiert die Verwendung aller Untertypen des ausgewählten Typs.

Hinweis

Medientypen werden durch Kommas voneinander getrennt.

Jede Medienzeile ist außerdem durch einen zusätzlichen Parametersatz gekennzeichnet. Einer von ihnen ist der sogenannte relative Präferenzkoeffizient q, der Werte von 0 bis 1 von weniger bevorzugten Typen zu bevorzugteren Werten annimmt. Durch die Verwendung mehrerer q-Parameter kann der Client den Server über den Präferenzgrad für einen bestimmten Medientyp informieren.

Hinweis

Standardmäßig nimmt der Parameter q den Wert 1 an. Außerdem ist er durch ein Semikolon vom Medientyp getrennt.

Beispiel für einen Accept Type Header:

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

In diesem Titel ist Audio / * der erste Typ, der alle musikalischen Dokumente umfasst und durch ein Präferenzverhältnis von 0,2 gekennzeichnet ist. Ein Komma gibt den Typ von Audio / Basic an, für den der Präferenzkoeffizient nicht angegeben ist, und akzeptiert einen Standardwert von eins. In RFC2616 zitiert, kann dieser Titel wie folgt interpretiert werden: „Ich bevorzuge den Audio- / Basistyp, aber ich kann auch Dokumente eines beliebigen anderen Audiotyps senden, sofern sie verfügbar sind, nachdem das Präferenzverhältnis um mehr als 80% reduziert wurde“.

Ein 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 die gleichen Informationen enthält, jedoch ohne den ursprünglichen Accept-Header.

Dieser Header wird wie folgt interpretiert: Die Dokumenttypen text / html und text / xc werden bevorzugt. Wenn sie jedoch nicht verfügbar sind, bevorzugt der Client, der diese Anforderung sendet, text / x-dvi. Wenn dies nicht der Fall ist, kann der Text / Typ akzeptiert werden. einfach.

Element $ _SERVER ['HTTP_ACCEPT_LANGUAGE']

Das Element $ _SERVER ['HTTP_ACCEPT_LANGUAGE'] beschreibt die Client-Einstellungen in Bezug auf die Sprache. Diese Informationen werden aus dem Accept-Language-HTTP-Header extrahiert, der vom Client an den Server gesendet wird. Sie können folgendes Beispiel geben:

Accept-Language: ru, en; q=0.7

Was folgendermaßen interpretiert werden kann: Der Kunde bevorzugt die russische Sprache, im Falle seiner Abwesenheit willigt er jedoch ein, Dokumente auf Englisch anzunehmen. Das Element $ _SERVER ['HTTP_ACCEPT_LANGUAGE'] enthält genau die gleichen Informationen, jedoch ohne den Accept-Language-Header:

ru, en; q=0.7

Mit dem Inhalt des Elements $ _SERVER ['HTTP_ACCEPT_LANGUAGE'] kann die Nationalität der Besucher bestimmt werden. Die Ergebnisse sind jedoch nur annähernd, da viele Benutzer englische Browser-Versionen verwenden, die den Server darüber informieren, dass der Besucher nur eine Sprache bevorzugt - Englisch.

Element $ _SERVER ['HTTP_HOST']

Das Element $ _SERVER ['HTTP_HOST'] enthält den Servernamen, der normalerweise mit dem Domänennamen der Site übereinstimmt, die sich auf dem Server befindet. In der Regel ist der in diesem Parameter angegebene Name der Name von $ _SERVER ['SERVER_NAME']. Der Parameter enthält nur den Domänennamen ohne Protokollnamen (http: //), d. H.

www.sofftime.ru

Element $ _SERVER ['HTTP_REFERER']

Das Element $ _SERVER ['HTTP_REFERER'] enthält die Adresse der Seite, von der aus der Besucher auf diese Seite gelangt ist. Der Übergang sollte durch Verweis 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' ]
?>

Die page.php-Seite hat einen ähnlichen Inhalt, der Link verweist jedoch auf die index.php-Seite.

Seite.php Seite

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

Wenn Sie von einer Seite zur anderen wechseln, wird unterhalb der Verknüpfung der Link zu der Seite angezeigt, von der aus der Übergang vorgenommen wurde.

Element $ _SERVER ['HTTP_USER_AGENT']

Das Element $ _SERVER ['HTTP_USER_AGENT'] enthält Informationen zu Typ und Version des Browsers und zum Betriebssystem 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" bedeutet, dass der Besucher die Seite mit Internet Explorer Version 6.0 anzeigt. Die Zeile "Windows NT 5.1" meldet, 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, könnte 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 meldet, dass der Browser von Opera mit Internet Explorer kompatibel ist und dieselben dynamischen Windows-Bibliotheken verwendet. Bei der Analyse der vom Browser zurückgegebenen Zeichenfolge ist daher zu beachten, dass Internet Explorer eine Zeichenfolge enthält, die die Teilzeichenfolge "MSIE 6.0" und nicht die Teilzeichenfolge "Opera" enthält. Darüber hinaus können wir aus dieser Zeile schließen, dass der Benutzer das Betriebssystem Windows 98 verwendet.

Hinweis

Der Firefox-Browser-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". Die Zugehörigkeit zu diesem Browser kann am Vorhandensein des Teilstrings "Netscape" erkannt werden. Außerdem können Sie feststellen, dass der Besucher mit der Linux-Betriebsversion auf das Internet zugreift, wobei der für Pentium IV optimierte Kernel in der X-Window-Benutzeroberfläche enthalten ist. Dieser Mechanismus ist praktisch, um statistische Informationen zu sammeln, sodass Designer die Seiten für die gängigsten Browser optimieren können.

Element $ _SERVER ['REMOTE_ADDR']

Das Element $ _SERVER ['REMOTE_ADDR'] enthält die IP-Adresse des Clients. Beim Testen auf einem lokalen Computer lautet diese Adresse 127.0.0.1. Beim Testen in einem Netzwerk gibt die Variable jedoch die IP-Adresse des Clients oder des letzten Proxyservers zurück, über den der Client den Server erreicht hat. Wenn der Client einen Proxyserver verwendet, kann seine IP-Adresse mit der Umgebungsvariablen HTTP_X_FORWARDED_FOR abgerufen werden, deren Wert mit der Funktion getenv () abgerufen werden kann.

Hinweis

Proxy-Server sind spezielle Zwischenserver, die eine besondere Art von Dienst bereitstellen: Verkehrskomprimierung, Datenkodierung, Anpassung für mobile Geräte usw. Unter den vielen Proxy-Servern gibt es sogenannte anonyme Proxy-Server, mit denen Sie die tatsächliche IP-Adresse des Clients ausblenden können. Diese Server geben nicht die Umgebungsvariable HTTP_X_FORWARDED_FOR 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'] enthält den absoluten Pfad zur Datei vom Stamm der Festplatte. Wenn der Server unter dem Windows-Betriebssystem ausgeführt wird, könnte ein solcher Pfad wie "d: main estindex.php" aussehen, d. H. Der Pfad wird von der Festplatte aus angegeben, in einem UNIX-ähnlichen Betriebssystem wird der Pfad aus dem Stammverzeichnis / angegeben, beispielsweise "/var/share/www/test/index.php".

Element $ _SERVER ['SERVER_NAME']

Das Element $ _SERVER ['SERVER_NAME'] enthält den Servernamen, der normalerweise mit dem Domänennamen der Site identisch ist. Zum Beispiel

www.softtime.ru

Der Inhalt des Elements $ _SERVER ['SERVER_NAME'] stimmt häufig mit dem Inhalt des Elements $ _SERVER ['HTTP_HOST'] überein. Neben dem Servernamen können Sie mit dem Superglobal-Array $ _SERVER eine Reihe von Serverparametern ermitteln, z. B. die IP-Adresse des Servers, den empfangenden Port, den installierten Webserver und die HTTP-Protokollversion. Diese Informationen befinden sich in den Elementen $ _SERVER ['SERVER_ADDR'], $ _SERVER ['SERVER_PORT'], $ _SERVER ['SERVER_SOFTWARE'] und $ _SERVER ['SERVER_PROTOCOL']. Das folgende Beispiel zeigt diese Elemente.

Verwendung von Elementen des $ _SERVER-Arrays

<?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 Element $ _SERVER ['REQUEST_METHOD'] enthält die Anforderungsmethode, mit der das Skript aufgerufen wird: GET oder POST.

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

Element $ _SERVER ['QUERY_STRING']

Das Element $ _SERVER ['QUERY_STRING'] enthält die an das Skript übergebenen Parameter, wenn die Abfragezeichenfolge eine Adresse ist

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

Das Element $ _SERVER ['QUERY_STRING'] enthält dann den gesamten Text nach dem "?". Wenn Sie beispielsweise auf das unten abgebildete Skript verweisen, platzieren Sie nach dem "?" Beliebigen Text in der Abfragezeichenfolge. Holen Sie sich die 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 Stammverzeichnis 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 das gleiche Fragment im Element $ _SERVER ['SCRIPT_NAME'] abgelegt.

Element $ _SERVER ['REQUEST_URI']

Das Element $ _SERVER ['REQUEST_URI'] enthält den Namen des Skripts, beginnend mit dem Stammverzeichnis des virtuellen Hosts und den Parametern, d. H. Wenn die Abfragezeichenfolge die 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, die sich in der Abfragezeichenfolge befindet, reicht es aus, die Kombination der Elemente des $ _SERVER-Arrays zu verwenden, die im Folgenden dargestellt wird

Vollständige Adresse zum Skript

<?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 "] => string (3)" 200 "[" gzip-only-text / html "] => string (1)" 1 "[" HTTP_HOST "] => string (17 ) "www.shram.kiev.ua" ["HTTP_X_FORWARDED_FOR"] => Zeichenfolge (40) "178.20.157.4, 178.20.157.4, 66.102.9.150" ["HTTP_X_FORWARDED_PROTO"] => Zeichenfolge (4) "http" [" HTTP_X_REAL_IP "] => Zeichenfolge (12)" 66.102.9.150 "[" HTTP_CONNECTION "] => Zeichenfolge (5)" close "[" HTTP_ACCEPT "] => Zeichenfolge (3)" * / * "[" HTTP_ACCEPT_CHARSET "] = > Zeichenfolge (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 "] => string (15)" gzip, deflate, br "[" PATH "] => 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"] => Zeichenfolge (2) "80" [REMOTE_ADDR "] => Zeichenfolge (12)" 66.102.9.150 "[" DOCUMENT_ROOT "] => Zeichenfolge (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)" 35105 "[" REDIRECT_QUERY_STRING "] => Zeichenfolge (34)" & MY_REQUEST_URI = / site /server.shtml "[" REDIRECT_URL "] => string (18)" /site/server.shtml "[" GATEWAY_INTERFACE "] => string (7)" CGI / 1.1 "[" SERVER_PROTOCOL "] => string (8 ) "HTTP / 1.0" ["REQUEST_METHOD"] => Zeichenfolge (3) "GET" ["QUERY_STRING"] => Zeichenfolge (34) "& MY_REQUEST_URI = / site / server.shtml" ["REQUEST_URI"] => Zeichenfolge ( 18) "/site/server.shtml" ["SCRIPT_NAME"] => Zeichenfolge (10) "/index.php" ["PHP_SELF"] => Zeichenfolge (10) "/index.php" ["REQUEST_TIME_FLOAT"] = > float (1544755790.879) ["REQUEST_TIME"] => int (15447) 55790)}
1.0 translate.google.com TWSFE / 0.9


NEIN