tableau $ _SERVER superglobales

L'un de la matrice prédéfinie la plus importante est un tableau $ _SERVER - il interprète PHP place les variables obtenues à partir du serveur. Sans ces variables est difficile à mettre en œuvre un support complet pour les applications basées sur le Web. Voici une description des éléments les plus importants de la superglobal tableau $ _SERVER.

remarque

Voir la liste complète des éléments de $ _SERVER est possible, soit en utilisant la fonction print_r () qui imprime une décharge de la matrice ou en utilisant la fonction phpinfo (), qui affiche des informations à propos de PHP-interprète.

L'élément $ _SERVER [ 'DOCUMENT_ROOT']

L'élément $ _SERVER [ 'DOCUMENT_ROOT'] contient le chemin vers le répertoire racine du serveur, si le script est en cours d'exécution dans un hôte virtuel, cet élément indique le chemin vers le répertoire racine de l'hôte virtuel. Ie dans le fichier de configuration httpd.conf hôte virtuel a une directive DocumentRoot, qui est réglé sur "D: / main", un élément de $ _SERVER [ 'DOCUMENT_ROOT'] contiendra la valeur "D: principale".

L'élément $ _SERVER [ 'HTTP_ACCEPT']

L'élément de $ _SERVER [ 'HTTP_ACCEPT'] décrit les préférences du client pour le type de document. Le contenu de cet élément est extraite de l'en-tête HTTP Veuillez agréer, qui envoie le client au serveur. Le contenu de cet en-tête pourrait ressembler à ceci

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

Acceptez-tête vous permet de spécifier le type de support qui préfère obtenir le client en réponse à votre demande. Cet en-tête vous permet de dire au serveur que la réponse est limitée à une petite pluralité de types préférés.

Le symbole * est utilisé pour les types de médias de groupe dans un certain nombre. Par exemple, le symbole * / * est donné par l'utilisation de tous types, ainsi que la désignation du type / * définit l'utilisation de tous les sous-types du type type sélectionné.

remarque

Types de supports séparés par des virgules.

Chacun se caractérise par un certain nombre de médias comme un ensemble supplémentaire de paramètres. L'un est le soi-disant facteur q de préférence relative, qui varie entre 0 et 1, respectivement, de moins préférés aux types plus préférés. Utilisation de plusieurs paramètres q, il permet au client de demander au serveur le degré relatif de préférence pour un type de support particulier.

remarque

Par défaut, q est 1. En outre, selon le type de média, il est séparé par un point-virgule.

Un exemple du type d'en-tête Accept:

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

Ce titre vient en premier type d'audio / * comprend tous les instruments de musique et se caractérise par la préférence rapport 0,2. Une virgule indique le type d'audio / de base, pour laquelle le coefficient de préférence est pas spécifié et est réglé sur la valeur par défaut d'un. Citant RFS2616 ce titre peut être interprété comme suit: «Je préfère le type d'audio / de base, mais je peux aussi envoyer des documents de tout autre type audio, si elles sont disponibles, après une baisse de facteur de préférence de plus de 80%."

Un exemple peut être plus difficile.

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

remarque

Notez que l'élément $ _SERVER [ 'HTTP_ACCEPT'] contient exactement les mêmes informations, mais sans l'en-tête initial Accepter.

Cet en-tête est interprété comme suit: Les types de documents text / html et text / xc sont préférés, mais si elles ne sont pas disponibles, alors le code client donnant cette demande, préfère text / x-dvi, et, sinon, il peut prendre le type de texte / plaine.

L'élément $ _SERVER [ 'HTTP_ACCEPT_LANGUAGE']

L'élément de $ _SERVER [ 'HTTP_ACCEPT_LANGUAGE'] décrit les préférences du client en matière de langue. Cette information est extraite du HTTP-tête Accept-Language, qui envoie le client vers le serveur. On peut citer l'exemple suivant:

Accept-Language: ru, en; q=0.7

Cela peut être interprété comme suit: le client préfère la langue russe, mais en son absence, a convenu d'accepter des documents en anglais. L'élément $ _SERVER [ 'HTTP_ACCEPT_LANGUAGE'] contiendra exactement la même information, mais sans l'en-tête Accept-Language:

ru, en; q=0.7

Le contenu de l'élément $ _SERVER [ 'HTTP_ACCEPT_LANGUAGE'] peut être utilisée pour déterminer la nationalité des visiteurs. Cependant, les résultats sont approximatifs, car de nombreux utilisateurs utilisent la version anglaise du navigateur, qui informera le serveur que le visiteur préfère une seule langue - anglais.

L'élément $ _SERVER [ 'HTTP_HOST']

L'élément de $ _SERVER [ 'HTTP_HOST'] contient le nom du serveur, ce qui est généralement le même que le nom de domaine du site, situé sur le serveur. En règle générale, le nom spécifié dans ce paramètre coïncide avec le nom de la variable $ _SERVER [ 'SERVER_NAME']. Le paramètre est seulement le nom de domaine sans le nom de protocole (http: //), à savoir

www.sofftime.ru

L'élément $ _SERVER [ 'HTTP_REFERER']

L'élément de $ _SERVER [ 'HTTP_REFERER'] est l'adresse de la page à partir de laquelle un visiteur est venu sur cette page. La destination doit être le lien. Créer un index.php deux pages et page.php.

page index.php

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

la page page.php est le même contenu, mais serait un lien vers la page index.php.

page page.php

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

Dans le passage d'une page à l'autre, une référence sera affichée l'adresse de la page, qui a été réalisée transition.

L'élément $ _SERVER [ 'HTTP_USER_AGENT']

L'élément $ _SERVER [ 'HTTP_USER_AGENT'] contient des informations sur le type et la version du navigateur et du système d'exploitation du visiteur.

Voici un contenu typique de cette chaîne: "Mozilla / 4.0 (compatible; MSIE 6.0; Windows NT 5.1)". La présence de la sous-chaîne "MSIE 6.0" indique que le visiteur consulte la page en utilisant Internet Explorer 6.0. La chaîne «Windows NT 5.1» informe que du système d'exploitation utilisé par Windows XP.

remarque

Pour Windows 2000, un _SERVER élément de $ [ 'HTTP_USER_AGENT'] comme suit: "Mozilla / 4.0 (compatible; MSIE 5.01; Windows NT 5.0) ')", tandis que pour Windows XP - "Mozilla / 4.0 (compatible; MSIE 6.0 ; Windows NT 5.1) ".

Si le visiteur va utiliser le navigateur Opera, le contenu de $ _SERVER [ 'HTTP_USER_AGENT'] peut se présenter comme suit: "Mozilla / 4.0 (compatible; MSIE 5.0; Windows 98) Opera 6.04 [ru]". Substring "MSIE 6.0" est également présent, indiquant que le navigateur Opera est compatible avec Internet Explorer et utilise la même bibliothèque dynamique Windows. Par conséquent, l'analyse de la chaîne renvoyée par le navigateur, il convient de garder à l'esprit que Internet Explorer se réfère à une chaîne qui contient la sous-chaîne "MSIE 6.0" et ne contient pas la sous-chaîne "Opera". En outre, à partir de cette ligne peut être conclu que l'utilisateur utilise le système d'exploitation Windows 98.

remarque

L'agent utilisateur de Firefox pourrait ressembler à Mozilla / 5.0 (Windows; U; Windows NT 5.1; fr; rv: 1.8) Gecko / 20051111 Firefox / 1.5.

Si vous utilisez le navigateur Netscape, le contenu de l'élément $ _SERVER [ 'HTTP_USER_AGENT'] peut se présenter comme suit: "Mozilla / 5.0 (X11; i686 Linux;; U en-US; rv: 1.4) Gecko / 20030624 Netscape / 7.1". Appartenir à ce navigateur peut être identifié par la chaîne "Netscape". En outre, vous pouvez voir que le visiteur vient à l'Internet, en utilisant la version d'exploitation Linux avec un noyau optimisé pour Pentium IV, étant dans l'environnement graphique X-Window. Ce mécanisme est utile pour la collecte d'informations statistiques, ce qui permet aux concepteurs d'optimiser la page pour les navigateurs les plus courants.

L'élément $ _SERVER [ 'REMOTE_ADDR']

L'élément de $ _SERVER [ 'REMOTE_ADDR'] est de mettre le client adresse IP. Lors d'un essai sur la machine locale - cette adresse sera égale à 127.0.0.1. Toutefois, lors du test de la variable de réseau client renvoie l'adresse IP ou le dernier proxy à travers laquelle un client a le serveur. Si le client utilise un serveur proxy pour savoir l'adresse IP, il est possible par le biais de l'environnement de HTTP_X_FORWARDED_FOR variables, dont la valeur peut être obtenue en utilisant la fonction getenv ().

remarque

Les serveurs proxy sont des serveurs intermédiaires spéciaux qui fournissent un type particulier de services: la compression du trafic, le cryptage des données, l'adaptation pour les appareils mobiles, etc. Parmi les nombreux proxies distinguer les serveurs proxy anonymes soi-disant qui vous permettent de masquer le vrai-client adresse IP d'un tel serveur ne renvoie pas un environnement de HTTP_X_FORWARDED_FOR variable.

Retrait de l'environnement HTTP_X_FORWARDED_FOR variables

<?php
echo getenv ( HTTP_X_FORWARDED_FOR );
?>

L'élément $ _SERVER [ 'SCRIPT_FILENAME']

L'élément de $ _SERVER [ 'SCRIPT_FILENAME'] mettre le chemin absolu vers le fichier sur le disque racine. Par exemple, si le serveur est en cours d'exécution du système d'exploitation Windows, un tel chemin pourrait ressembler à "d: estindex.php principale", à savoir chemin est sur le disque, dans le chemin du système d'exploitation UNIX est du répertoire racine /, par exemple "/var/share/www/test/index.php".

L'élément $ _SERVER [ 'SERVER_NAME']

L'élément de $ _SERVER [ 'SERVER_NAME'] placé le nom du serveur, qui coïncide généralement avec le nom de domaine du site, qui est situé sur elle. Par exemple,

www.softtime.ru

Le contenu de l'élément $ _SERVER [ 'SERVER_NAME'] est souvent le même que le contenu de l'élément $ _SERVER [ 'HTTP_HOST']. Outre le nom du serveur superglobal $ _SERVER permet d'en savoir plus nombre de paramètres de serveur, tels que le serveur l'adresse IP, le port d'écoute, un serveur Web est installé et la version du protocole HTTP. Ces informations sont placées dans les éléments de $ _SERVER [ 'SERVER_ADDR'], $ _SERVER [ 'SERVER_PORT'], $ _SERVER [ 'SERVER_SOFTWARE'] et $ _SERVER [ 'SERVER_PROTOCOL'], respectivement. Voici un exemple d'utilisation d'éléments de données.

L'utilisation d'éléments dans $ _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 />" ;
?>

L'élément $ _SERVER [ 'REQUEST_METHOD']

L'élément de $ _SERVER [ 'REQUEST_METHOD'] placé la méthode de requête utilisé pour appeler le script: GET ou POST.

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

L'élément $ _SERVER [ 'QUERY_STRING']

L'élément de $ _SERVER [ 'QUERY_STRING'] est entré dans les paramètres passés au script, si la chaîne de requête est l'adresse

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

alors l'élément $ _SERVER [ 'QUERY_STRING'] obtient tout le texte après le "?". Par exemple, en se référant au script, présenté ci-dessous, est placé dans la chaîne de requête de texte après le "?" Nous obtenons une page avec le texte saisi.

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

L'élément $ _SERVER [ 'PHP_SELF']

L'élément de $ _SERVER [ 'PHP_SELF'] placé le nom du script, à partir du répertoire racine de l'hôte virtuel, à savoir, si la chaîne de requête est l'adresse

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

l'élément de $ _SERVER [ 'PHP_SELF'] contiendra un fragment de "/test/index.php". En règle générale, le même fragment est placé dans un élément de $ _SERVER [ 'SCRIPT_NAME'].

L'élément $ _SERVER [ 'REQUEST_URI']

L'élément de $ _SERVER [ 'REQUEST_URI'] contient le nom du script à partir du répertoire racine de l'hôte et les paramètres virtuels, à savoir, si la chaîne de requête est l'adresse:

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

l'élément de $ _SERVER [ 'REQUEST_URI'] contiendra un fragment de "/test/index.php?id=1&test=wet&id_theme=512". Afin de rétablir l'adresse complète dans le script, qui est placé dans la chaîne de requête, il suffit d'utiliser une combinaison d'éléments dans le tableau $ _SERVER, ci-dessous

Adresse complète du script

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


1
178.20.156.230, 178.20.156.230, 66.102.9.136www.shram.kiev.uawww.shram.kiev.uahttp: //www.shram.kiev.ua/site/server.shtml
array (36) {[ "REDIRECT_gzip-only-text / html"] => string (1) "1" [ "REDIRECT_RF"] => string (39) "/home/admin/data/www/shram.kiev. ua / site "[" REDIRECT_STATUS "] => string (3)" "[" gzip-only-text / html "] => string (1)" 1 "[" HTTP_HOST "] => string (17)" 200 www.shram.kiev.ua "[" HTTP_X_FORWARDED_FOR "] => string (44)" 178.20.156.230, 178.20.156.230, 66.102.9.136 "[" HTTP_X_FORWARDED_PROTO "] => string (4)" http "[" HTTP_X_REAL_IP " ] => string (12) "66.102.9.136" [ "HTTP_CONNECTION"] => string (5) "close" [ "HTTP_ACCEPT"] => string (3) "* / *" [ "HTTP_ACCEPT_CHARSET"] => string (7) "utf-8, *" [ "HTTP_VIA"] => string (34) "1.0 translate.google.com TWSFE / 0.9" [ "HTTP_USER_AGENT"] => string (70) "Mozilla / 4.0 (compatible; MSIE 6.0; Windows NT 5.1), gzip (GFE), gzip (GFE) "[" HTTP_ACCEPT_ENCODING "] => string (15)" gzip, dégonflez, br "[" PATH "] => string (29)" / sbin : / bin: / usr / sbin: / usr / bin "[" SERVER_SIGNATURE "] => string (120)"
Apache / 2.2.24 (FreeBSD) mod_python / 3.3.1 Python / 2.7.5 PHP / 5.4.15 Server at www.shram.kiev.ua Port 80
"[" SERVER_SOFTWARE "] => string (64)" / 2.2.24 (FreeBSD) mod_python Apache / 3.3.1 Python / 2.7.5 PHP / 5.4.15 "[" SERVER_NAME "] => string (17)" www .shram.kiev.ua "[" SERVER_ADDR "] => string (14)" 178.20.156.230 "[" SERVER_PORT "] => string (2)" 80 "[" REMOTE_ADDR "] => string (12)" 66102 .9.136 "[" DOCUMENT_ROOT "] => string (34)" /home/admin/data/www/shram.kiev.ua "[" SERVER_ADMIN "] => string (23)" [email protected] " [ "SCRIPT_FILENAME"] => string (44) "/home/admin/data/www/shram.kiev.ua/index.php" [ "REMOTE_PORT"] => string (5) "59712" [ "REDIRECT_QUERY_STRING"] => string (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 "] => string (3)" GET "[" QUERY_STRING "] => string (34)" & MY_REQUEST_URI = / site / serveur. shtml "[" REQUEST_URI "] => string (18)" /site/server.shtml "[" SCRIPT_NAME "] => string (10)" index.php "[" PHP_SELF "] => string (10)" /index.php "[" REQUEST_TIME_FLOAT "] => float (1489113849.691) [" REQUEST_TIME "] => int (1489113849)}
1.0 translate.google.com TWSFE / 0,9


NO