Manuel PHP
Précédent | Chapitre 7. Les variables | Suivant

# Variables prédéfinies

`PHP` fourni un grand nombre de variables prédéfinies. Cependant, beaucoup de ces variables ne peuvent pas être présentées ici, car elles dépendent du serveur sur lequel elles tournent, de la version du serveur, et de la configuration du serveur, ou encore d'autres facteurs. Certaines de ces variables ne seront pas accessibles lorsque `PHP` fonctionne en exécutable.

Avertissement

Depuis la version `PHP` 4.2.0, la valeur par défaut de la directive `PHP` `register_globals` est off. Ceci est une évolution majeure de `PHP`. Avoir la directive `register_globals` à off affecte les variables prédéfinies du contexte globale. Par exemple, pour lire `DOCUMENT_ROOT` vous devez utiliser `$_SERVER['DOCUMENT_ROOT']` au lieu de `$DOCUMENT_ROOT`, ou bien il faut lire `$_GET['id']` dans l'URL `http://www.example.com/test.php?id=3` au lieu de `$id`, ou encore `$_ENV['HOME']` au lieu de `$HOME`.

Pour des informations liées à cette évolution, lisez la documentation de la directive `register_globals`, le chapitre sur la sécurité, à propos de l'Utilisation des variables superglobales, ainsi que les annonces de `PHP` 4.1.0 et 4.2.0.

L'utilisation des variables prédéfinies de `PHP`, comme les tableaux superglobaux, est recommandé.

Depuis la version 4.1.0, `PHP` fournit un jeu de tableaux prédéfinis, contenant les variables du serveur (si possible), les variables d'environnement et celle d'entrées. Ces nouveaux tableaux sont un peut particuliers, car ils ont automatiquement globaux : ils sont automatiquement disponibles dans tous les environnements d'exécution, sans avoir à utiliser le mot réservé `global`. Pour cette raison, ils sont dits 'auto-globaux' ou bien encore 'superglobaux' (il n'y a pas de mécanisme `PHP` pour créer de telles variables. Les superglobales sont listées ci-dessous. Cependant, pour connaître le détails de leur contenu, et une présentation approfondie sur les variables prédéfinies `PHP`, et leur nature, reportez vous à la section variables prédéfinies. De plus, vous noterez que les anciennes variables prédéfinies (`$HTTP_*_VARS`) existent toujours. Depuis PHP 5.0.0, les tableaux prédéfinis PHP peuvent être désactivés avec l'option de configuration register_long_arrays.

> Variables variables : Les superglobales ne peuvent pas être utilisées comme variable variables.

Si certaines variables de `variables_order` ne sont pas définies, leur tableau prédéfini `PHP` correspondant est laissé vide.

Tableaux superglobaux de `PHP`

`$GLOBALS`

  Contient une référence sur chaque variable qui est actuellement disponible dans l'environnement d'exécution global. Les clés de ce tableau sont les noms des variables globales.

`$_SERVER`

  Les variables fournies par le serveur web, ou bien directement liées à l'environnement d'exécution du script courant. C'est la nouvelle version de l'ancienne variable `$HTTP_SERVER_VARS`, qui est maintenant obsolète, mais toujours là.

`$_GET`

  Les variables fournies par le protocole HTTP en méthode GET. C'est la nouvelle version de l'ancienne variable `$HTTP_GET_VARS` qui est maintenant obsolète, mais toujours là.

`$_POST`

  Les variables fournies par le protocole HTTP en méthode POST. C'est la nouvelle version de l'ancienne variable `$HTTP_POST_VARS` qui est maintenant obsolète, mais toujours là.

`$_COOKIE`

  Les variables fournies par le protocole HTTP, dans les cookies. C'est la nouvelle version de l'ancienne variable `$HTTP_COOKIE_VARS` qui est maintenant obsolète, mais toujours là.

`$_FILES`

  Les variables fournies par le protocole HTTP, suite à un téléchargement de fichier. C'est la nouvelle version de l'ancienne variable `$HTTP_POST_FILES` qui est maintenant obsolète, mais toujours là. Voir Téléchargement par méthode POST, pour plus d'informations.

`$_ENV`

  Les variables fournies par l'environnement. C'est la nouvelle version de l'ancienne variable `$HTTP_ENV_VARS` qui est maintenant obsolète, mais toujours là.

`$_REQUEST`

  Les variables fournies au script par n'importe quel mécanisme d'entrée et qui ne doit recevoir une confiance limitée. Note : lorsque vous exécutez un script en ligne de commande, cette variable ne va pas inclure les variables `argv` et `argc`. Elles seront présentes dans la variable `$_SERVER`. La présence et la valeur des entrées de ce tableau sont réglés par la directive `variables_order`. Ce tableau n'est l'évolution d'aucune variable d'avant `PHP` 4.1.0.

  Attention
  Depuis `PHP` 4.3.0, les informations de la variable `$_FILES` ne sont plus intégrées dans la variable `$_REQUEST`.

  > Note : En ligne de commande, cette variable n'inclut pas les variables `argv` et `argc` : elles sont stockées dans le tableau `$_SERVER`.

`$_SESSION`

  Les variables qui sont actuellement enregistrées dans la session attachée au script. C'est la nouvelle version de l'ancienne variable `$HTTP_SESSION_VARS`. Voir le chapitre gestion des sessions pour plus d'informations.

Précédent | Sommaire | Suivant
Les variables | Niveau supérieur | Portée des variables