7.PHP pour le web

7.2.Les variables prédéfinies

7.2.1.Introduction

Nous avons vu, dans le chapitre sur l'environnement d'exécution d'un script PHP, qu'il est possible de récupérer quelques informations sur cet environnement via des variables dites prédéfinies[où?].
Dans le chapitre cité, nous ne nous sommes intéressés qu'aux données communes avec celles récupérées dans le cadre d'un script exécuté en ligne de commande. Cette fois-ci, nous nous intéresserons plus spécifiquement aux données liées à un environnement web.
Même si les informations disponibles dépendent totalement du serveur web utilisé on peut dire que ces données sont nombreuses. Et nous nous intéresserons plus particulièrement aux informations disponibles dans un environnement Apache.

7.2.2.$_SERVER

7.2.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

7.2.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
rem
  • Pour avoir un aperçu plus complet des informations qu'il est ainsi possible de récupérer, jetez un oeil au resultat retourné par la fonction phpinfo().
  • Pour PHP<4.1 remplacez par exemple $_SERVER["REMOTE_ADDR"] par $REMOTE_ADDR.

7.2.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).
<?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]";
?>
Qui donne dans votre cas:
Vous acceptez les langues suivantes: fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
mais votre langue principale est: fr-FR