![]() |
|
6.Le langage PHP
6.10.Les variables prédéfinies
6.10.1.Introduction
Lorsqu'un script PHP est exécuté suite à une requête HTTP, le "moteur" PHP rempli un certain nombre de variables avec des valeurs récupérées des données fournies dans la requête HTTP (la demande client, le type de navigateur), des valeurs liées au serveur web, voire d'autres informations (comme les variables d'environnement du serveur).
Ces variables sont en fait plus exactement une variable $_SERVER[] (depuis PHP 4.1) de type tableau contenant autant d'entrées qu'il y a de valeurs récupérées. Ces variables, dites pré-définies, vous pouvez les utiliser n'importe où dans vos scripts PHP.
6.10.2.Les principales variables
6.10.2.1.Données du serveur (Apache)
| $_SERVER["DOCUMENT_ROOT"] | L'espace où sont stockées les pages webs |
| $_SERVER["PHP_SELF"] | Le chemin du script par rapport à DOCUMENT_ROOT |
6.10.2.2.Données du navigateur (et requête HTTP)
| $_SERVER["REMOTE_ADDR"] | L'IP du visiteur |
| $_SERVER["HTTP_USER_AGENT"] | L'identifiant du navigateur |
| $_SERVER["HTTP_REFERER"] | L'url du site d'où vient le visiteur de la page (pas toujours renseigné ou exact) |
| $_SERVER["HTTP_ACCEPT_LANGUAGE"] | Les langues préférées du visiteur |
![]() |
|
6.10.3.Détection de la langue du visiteur (Accept-Language)
Le navigateur émêt un en-tete Accept-Language (disponible via la variable $_SERVER["HTTP_ACCEPT_LANGUAGE"]) qui contient la liste des langues que l'utilisateur a indiqué comme étant les langues qu'il accepte, classés par ordre de préférence. Fouillez un petit peu dans les options de votre navigateur vous trouverez où cela se configure.
Il suffit alors de prendre la première langue trouvée (ou eventuellement, de rechercher parmi ces langues la première pour laquelle il y a une traduction de votre site).
Qui donne dans votre cas:
<?php echo "Vous acceptez les langues suivantes: ". htmlEntities($_SERVER["HTTP_ACCEPT_LANGUAGE"])."<br/>"; $langs=explode(",",$_SERVER["HTTP_ACCEPT_LANGUAGE"]); echo "mais votre langue principale est: $langs[0]"; ?> |
|
6.10.4.User-Agent
6.10.4.1.Présentation
La variable $_SERVER["HTTP_USER_AGENT"] peut être mise à profit pour aider à la détection du navigateur et du système d'exploitation utilisé par votre visiteur.
Par exemple:
comme l'indique le code suivant:
|
<?php echo "Votre navigateur a pour \"signature\":<br />". htmlEntities($_SERVER["HTTP_USER_AGENT"]); ?> |
D'autres navigateurs peuvent retourner des chaînes du genre:
|
![]() |
|
Malheureusement, le format de cette chaîne de caractères n'est pas normalisé, pour l'exploiter, il faut donc s'adapter.
6.10.4.2.Détection du navigateur utilisé
De l'échantillon précédent, on peut "deviner" que le navigateur est:
|
On peut donc se risquer déterminer le type de navigateur utilisé avec un code du genre:
Qui donne dans votre cas:
<?php echo 'Vous utilisez un navigateur de type: '; if (ereg("MSIE", $_SERVER["HTTP_USER_AGENT"])) { echo "Internet explorer"; } else if (ereg("^Mozilla/", $_SERVER["HTTP_USER_AGENT"])) { echo "Netscape"; } else if (ereg("^Opera/", $_SERVER["HTTP_USER_AGENT"])) { echo "Opera"; } else { echo "inconnu"; } ?> |
|
6.10.4.3.Détection du système d'exploitation
La chaîne User-Agent contient généralement cette information mais pour l'extraire le plus simple est encore de prendre la liste des systèmes d'exploitation possibles et voir s'il est dans la chaîne User-Agent (puisqu'il est difficile, à priori, de savoir à quel endroit de la chaîne se trouve cette information). C'est ce qui est fait dans le script suivant:
Qui donne dans votre cas:
<?php echo "Vous utilisez un systeme d'exploitation de type: "; if (ereg("Linux", $_SERVER["HTTP_USER_AGENT"])) { echo "linux (un excellent choix)"; } else if (ereg("WinNT", $_SERVER["HTTP_USER_AGENT"])||ereg("Windows NT", $_SERVER["HTTP_USER_AGENT"])) { echo "Windows NT"; } else if (ereg("Windows 98", $_SERVER["HTTP_USER_AGENT"])||ereg("Win98", $_SERVER["HTTP_USER_AGENT"])) { echo "Windows 98"; } else if (ereg("Windows 95", $_SERVER["HTTP_USER_AGENT"])||ereg("Win95", $_SERVER["HTTP_USER_AGENT"])) { echo "Windows 95"; } else if (ereg("Macintosh", $_SERVER["HTTP_USER_AGENT"])||ereg("Mac_PowerPC", $_SERVER["HTTP_USER_AGENT"])) { echo "un OS pour Mac (avec un peu de chance il s'agit de Mac OS X)"; } else { echo "Pas Glop, je ne connais pas cet OS"; } ?> |
|




