Depuis PHP 4.1.0, la méthode recommandée pour accéder à des
variables externes est
d'utiliser les super-globales mentionnées ci-dessous. Avant cela,
il fallait utiliser soit l'option de configuration
register_globals,
soit les tableaux prédéfinis $HTTP_*_VARS
.
Depuis PHP 5.0.0, les tableaux prédéfinis PHP peuvent
être désactivés avec l'option de configuration register_long_arrays.
$_SERVER
Note : Introduite en 4.1.0. Dans les versions plus anciennes, elle s'appelait
$HTTP_SERVER_VARS
.
$_SERVER
est un tableau contenant des informations
comme les en-têtes, dossiers et chemins du script. Les entrées de ce
tableau sont créées par le serveur web. Il n'y a aucune garantie que tous
les serveurs les rempliront tous ; certains en oublieront quelques-unes
et en rajouteront de nouvelles non mentionnées ici. Cependant, un grand
nombre de ces variables fait partie des spécifications CGI 1.1, et vous pouvez donc
vous attendre à les retrouver.
Cette variable est une 'superglobal', ou globale automatique.
Cela signifie qu'elle est simplement disponible dans tous les
contextes d'exécution (fonctions ou méthodes). Vous n'avez pas
besoin de faire
global $_SERVER; pour y accéder, comme
vous le faisiez avec $HTTP_SERVER_VARS
.
$HTTP_SERVER_VARS
contient les mêmes
informations, mais n'est pas autoglobale. (Notez que
$HTTP_SERVER_VARS
et $_SERVER
sont des variables différentes et que PHP les traite en tant que telles.)
Si la directive register_globals
est active, alors ces variables seront aussi rendues directement
accessibles dans le contexte d'exécution global. C'est-à-dire séparément
des tableaux $_SERVER
et
$HTTP_SERVER_VARS
.
Pour plus d'informations sur la sécurité de cette configuration, voyez le
chapitre Utiliser la directive Register
Globals. Ces variables globales individuelles ne sont pas des globales.
Vous pouvez éventuellement trouver les éléments suivants
dans la variable $_SERVER
. Notez que certains,
n'auront pas de sens si vous utilisez PHP en ligne
de commande.
PHP_SELF
'
Le nom du fichier du script en cours d'exécution, par
rapport à la racine web.
Par exemple, $_SERVER['PHP_SELF']
dans le script
situé à l'adresse http://www.monsite.com/test.php/foo.bar
sera /test.php/foo.bar.
La constante __FILE__
contient le chemin complet ainsi que le nom du fichier (i.e. inclut) courant.
Si PHP fonctionne en ligne de commande, cette variable contient le nom du script depuis PHP 4.3.0. Dans les versions antérieures, cette variable n'était pas disponible.
argv
'Tableau des arguments passés au script. Lorsque le script est appelé en ligne de commande, cela donne accès aux arguments, comme en langage C. Lorsque le script est appelé avec la méthode GET, ce tableau contiendra la chaîne de requête.
argc
'Contient le nombre de paramètres de la ligne de commande passés au script (si le script fonctionne en ligne de commande).
GATEWAY_INTERFACE
'Numéro de révision de l'interface CGI du serveur : i.e. 'CGI/1.1'.
SERVER_ADDR
'L'adresse IP du serveur sous lequel le script courant est en train d'être exécuté.
SERVER_NAME
'Le nom du serveur hôte qui exécute le script suivant. Si le script est exécuté sur un hôte virtuel, ce sera la valeur définie pour cet hôte virtuel.
SERVER_SOFTWARE
'Chaîne d'identification du serveur, qui est donnée dans les en-têtes lors de la réponse aux requêtes.
SERVER_PROTOCOL
'Nom et révision du protocole de communication : i.e. 'HTTP/1.0';
REQUEST_METHOD
'Méthode de requête utilisée pour accéder à la page; i.e. 'GET', 'HEAD', 'POST', 'PUT'.
Note : Le script PHP se termine après avoir envoyé les en-têtes (après avoir produit n'importe quelle sortie sans avoir affiché le buffer) si la méthode de la requête était HEAD.
REQUEST_TIME
'Le temps Unix depuis le début de la requête. Disponible depuis PHP 5.1.0.
QUERY_STRING
'La chaîne de requête, si elle existe, qui est utilisée pour accéder à la page.
DOCUMENT_ROOT
'La racine sous laquelle le script courant est exécuté, comme défini dans la configuration du serveur.
HTTP_ACCEPT
'Contenu de l'en-tête Accept: de la requête courante, s'il y en a une.
HTTP_ACCEPT_CHARSET
'Contenu de l'en-tête Accept-Charset: de la requête courante, si elle existe. Par exemple : 'iso-8859-1,*,utf-8'.
HTTP_ACCEPT_ENCODING
'Contenu de l'en-tête Accept-Encoding: de la requête courante, si elle existe. Par exemple : 'gzip'.
HTTP_ACCEPT_LANGUAGE
'Contenu de l'en-tête Accept-Language: de la requête courante, si elle existe. Par exemple : 'fr'.
HTTP_CONNECTION
'Contenu de l'en-tête Connection: de la requête courante, si elle existe. Par exemple : 'Keep-Alive'.
HTTP_HOST
'Contenu de l'en-tête Host: de la requête courante, si elle existe.
HTTP_REFERER
'
L'adresse de la page (si elle existe) qui a conduit le
client à la page courante. Cette valeur est
affectée par le client, et tous les clients ne le font pas.
Certains navigateurs permettent même de modifier la valeur de
HTTP_REFERER
, sous forme de fonctionnalité.
En bref, ce n'est pas une valeur de confiance.
HTTP_USER_AGENT
'Contenu de l'en-tête User_Agent: de la requête courante, si elle existe. C'est une chaîne qui décrit le client HTML utilisé pour voir la page courante. Par exemple : Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586). Entre autres choses, vous pouvez utiliser cette valeur avec get_browser() pour optimiser votre page en fonction des capacités du client.
HTTPS
'Définissez à une valeur non-vide si le script nécessite d'utiliser le protocole HTTPS.
Noter que lors de l'utilisation de ISAPI avec IIS, la valeur sera off si la demande n'a pas été faite via le protocole HTTPS.
REMOTE_ADDR
'L'adresse IP du client qui demande la page courante.
REMOTE_HOST
'
Le nom de l'hôte qui lit le script courant. La résolution
DNS inverse est basée sur la valeur de REMOTE_ADDR
.
Note : Votre serveur web doit être configuré pour créer cette variable. Par exemple, pour Apache, vous devez ajouter la directive HostnameLookups On dans le fichier httpd.conf, pour que cette variable existe. Voyez aussi gethostbyaddr().
REMOTE_PORT
'Le port utilisé par la machine cliente pour communiquer avec le serveur web.
SCRIPT_FILENAME
'Le chemin absolu vers le fichier contenant le script en cours d'exécution.
Note : Si un script est exécuté avec le CLI, avec un chemin relatif, comme file.php ou ../file.php,
$_SERVER['SCRIPT_FILENAME']
contiendra le chemin relatif spécifié par l'utilisateur.
SERVER_ADMIN
'La valeur donnée à la directive SERVER_ADMIN (pour Apache), dans le fichier de configuration. Si le script est exécuté par un hôte virtuel, ce sera la valeur définie par l'hôte virtuel.
SERVER_PORT
'Le port de la machine serveur utilisé pour les communications. Par défaut, c'est '80'. En utilisant SSL, par exemple, il sera remplacé par le numéro de port HTTP sécurisé.
SERVER_SIGNATURE
'Chaîne contenant le numéro de version du serveur et le nom d'hôte virtuel, qui sont ajoutés aux pages générées par le serveur, si cette option est activée.
PATH_TRANSLATED
'Chemin dans le système de fichiers (pas le document-root) jusqu'au script courant, une fois que le serveur a fait une traduction chemin virtuel -> réel.
Note : Depuis PHP 4.3.2, la variable
PATH_TRANSLATED
n'est plus seulement définie implicitement sous Apache 2 SAPI contrairement à la situation sous Apache 1 où elle est définie avec la même valeur que la variable serveurSCRIPT_FILENAME
lorsqu'elle n'est pas fournie par Apache. Ce changement a été effectué pour être conforme aux spécifications CGI qui fait que la variablePATH_TRANSLATED
doit exister seulement si la variablePATH_INFO
est définie.Les utilisateurs d'Apache 2 devraient utiliser AcceptPathInfo = On au lieu de httpd.conf pour définir
PATH_INFO
.
SCRIPT_NAME
'Contient le nom du script courant. Cela sert lorsque les pages doivent s'appeler elles-mêmes. La constante __FILE__ contient le chemin complet ainsi que le nom du fichier (i.e. inclut) courant.
REQUEST_URI
'L'URI qui a été fourni pour accéder à cette page. Par exemple : '/index.html'.
PHP_AUTH_DIGEST
'Lorsque vous utilisez PHP avec Apache en tant que module faisant une identification HTTP Digest, cette variable est définie dans l'en-tête 'Authorization' envoyé par le client (que vous devez donc utiliser pour réaliser la validation appropriée).
PHP_AUTH_USER
'Lorsque vous utilisez PHP avec Apache ou IIS (ISAPI en PHP 5) en tant que module faisant une identification HTTP, cette variable est définie à l'utilisateur fourni par l'utilisateur.
PHP_AUTH_PW
'Lorsque vous utilisez PHP avec Apache ou IIS (ISAPI en PHP 5) en tant que module faisant une identification HTTP, cette variable est définie au mot de passe fourni par l'utilisateur.
AUTH_TYPE
'Lorsque vous utilisez PHP avec Apache en tant que module faisant une identification HTTP, cette variable est définie au type d'identification.
$_ENV
Note : Introduite en 4.1.0. Dans les versions plus anciennes, elle s'appelait
$HTTP_ENV_VARS
.
Cette variable est importée dans l'espace de nom global de PHP, depuis l'environnement dans lequel l'exécutable PHP fonctionne. De nombreuses valeurs sont fournies par le shell qui exécute PHP, et différents systèmes pouvant disposer de différents shell, même un début de liste serait ici impossible. Reportez-vous à la documentation de votre shell pour connaître une liste de variables pré-définies.
Les autres variables d'environnement incluent les variables CGI, placées ici, indépendemment du fait que PHP fonctionne en tant que CGI ou bien que module du serveur.
Cette variable est une 'superglobal', ou globale automatique.
Cela signifie qu'elle est simplement disponible dans tous les
contextes d'exécution (fonctions ou méthodes). Vous n'avez pas
besoin de faire
global $_ENV; pour y accéder, comme
vous le faisiez avec $HTTP_ENV_VARS
.
$HTTP_ENV_VARS
contient les mêmes
informations, mais n'est pas autoglobale. (Notez que
$HTTP_ENV_VARS
et $_ENV
sont des variables différentes et que PHP les traite comme telles.)
Si la directive register_globals
est active, alors ces variables seront aussi rendues directement
accessibles dans le contexte d'exécution global. C'est à dire séparément
des tableaux $_ENV
et $HTTP_ENV_VARS
.
Pour plus d'informations sur la sécurité de cette configuration, voyez le
chapitre Utiliser la directive Register
Globals. Ces variables globales individuelles ne sont pas des globales.
$_COOKIE
Note : Introduite en 4.1.0. Dans les versions plus anciennes, elle s'appelait
$HTTP_COOKIE_VARS
.
Un tableau associatif des valeurs passées au script courant via les cookies HTTP. Elle est automatiquement globale dans tous les contextes d'exécution.
Cette variable est une 'superglobal', ou globale automatique.
Cela signifie qu'elle est simplement disponible dans tous les
contextes d'exécution (fonctions ou méthodes). Vous n'avez pas
besoin de faire
global $_COOKIE; pour y accéder, comme
vous le faisiez avec $HTTP_COOKIE_VARS
.
$HTTP_COOKIE_VARS
contient les mêmes
informations, mais n'est pas autoglobale. (Notez que
$HTTP_COOKIE_VARS
et $_COOKIE
sont des variables différentes et que PHP les traite comme telles.)
Si la directive register_globals
est active, alors ces variables seront aussi rendues directement
accessibles dans le contexte d'exécution global. C'est à dire séparément
des tableaux $_COOKIE
et $HTTP_COOKIE_VARS
.
Pour plus d'informations sur la sécurité de cette configuration, voyez le
chapitre Utiliser la directive Register
Globals. Ces variables globales individuelles ne sont pas des globales.
$_GET
Note : Introduite en 4.1.0. Dans les versions plus anciennes, elle s'appelait
$HTTP_GET_VARS
.
Un tableau associatif des valeurs passées au script courant via le protocole HTTP et la méthode GET. Elle est automatiquement globale dans tous les contextes d'exécution.
Cette variable est une 'superglobal', ou globale automatique.
Cela signifie qu'elle est simplement disponible dans tous les
contextes d'exécution (fonctions ou méthodes). Vous n'avez pas
besoin de faire
global $_GET; pour y accéder, comme
vous le faisiez avec $HTTP_GET_VARS
.
$HTTP_GET_VARS
contient les mêmes
informations, mais n'est pas autoglobale. (Notez que
$HTTP_GET_VARS
et $_GET
sont des variables différentes et que PHP les traite comme telles.)
Si la directive register_globals
est active, alors ces variables seront aussi rendues directement
accessibles dans le contexte d'exécution global. C'est à dire séparément
des tableaux $_GET
et $HTTP_GET_VARS
.
Pour plus d'informations sur la sécurité de cette configuration, voyez le
chapitre Utiliser la directive Register
Globals. Ces variables globales individuelles ne sont pas des globales.
$_POST
Note : Introduite en 4.1.0. Dans les versions plus anciennes, elle s'appelait
$HTTP_POST_VARS
.
Un tableau associatif des valeurs passées au script courant via le protocole HTTP et la méthode POST. Elle est automatiquement globale dans tous les contextes d'exécution.
Cette variable est une 'superglobal', ou globale automatique.
Cela signifie qu'elle est simplement disponible dans tous les
contextes d'exécution (fonctions ou méthodes). Vous n'avez pas
besoin de faire
global $_POST; pour y accéder, comme
vous le faisiez avec $HTTP_POST_VARS
.
$HTTP_POST_VARS
contient les mêmes
informations, mais n'est pas autoglobale. (Notez que
$HTTP_POST_VARS
et $_POST
sont des variables différentes et que PHP les traite comme telles.)
Si la directive register_globals
est active, alors ces variables seront aussi rendues directement
accessibles dans le contexte d'exécution global. C'est à dire séparément
des tableaux $_POST
et $HTTP_POST_VARS
.
Pour plus d'informations sur la sécurité de cette configuration, voyez le
chapitre Utiliser la directive Register
Globals. Ces variables globales individuelles ne sont pas des globales.
$_FILES
Note : Introduite en 4.1.0. Dans les versions plus anciennes, elle s'appelait
$HTTP_POST_FILES
.
Un tableau associatif des valeurs téléchargées au script courant via le protocole HTTP et la méthode POST. Elle est automatiquement globale dans tous les contextes d'exécution.
Cette variable est une 'superglobal', ou globale automatique.
Cela signifie qu'elle est simplement disponible dans tous les
contextes d'exécution (fonctions ou méthodes). Vous n'avez pas
besoin de faire
global $_FILES; pour y accéder, comme
vous le faisiez avec $HTTP_POST_FILES
.
$HTTP_POST_FILES
contient les mêmes
informations, mais n'est pas autoglobale. (Notez que
$HTTP_POST_FILES
et $_FILES
sont des variables différentes et que PHP les traite comme telles)
Si la directive register_globals
est active, alors ces variables seront aussi rendues directement
accessibles dans le contexte d'exécution global. C'est à dire séparément
des tableaux $_FILES
et $HTTP_POST_FILES
.
Pour plus d'informations sur la sécurité de cette configuration, voyez le
chapitre Utiliser la directive Register
Globals. Ces variables globales individuelles ne sont pas des globales.
$_REQUEST
Note : Introduite en 4.1.0. Dans les versions plus anciennes, elle n'avait pas d'équivalent.
Note : Dans les versions antérieures à PHP 4.3.0, les informations de
$_FILES
étaient inclues également dans$_REQUEST
.
Un tableau associatif constitué du contenu des
variables $_GET
, $_POST
,
$_COOKIE
.
Cette variable est une 'superglobal', ou globale automatique. Cela signifie qu'elle est simplement disponible dans tous les contextes d'exécution (fonctions ou méthodes). Vous n'avez pas besoin de faire global $_REQUEST; pour y accéder.
Si la directive register_globals
est active, alors ces variables seront aussi rendues directement
accessibles dans le contexte d'exécution global. C'est à dire séparément
des tableaux $_REQUEST
.
Pour plus d'informations sur la sécurité de cette configuration, voyez le
chapitre Utiliser la directive Register
Globals. Ces variables globales individuelles ne sont pas des globales.
$_SESSION
Note : Introduite en 4.1.0. Dans les versions plus anciennes, elle s'appelait
$HTTP_SESSION_VARS
.
Un tableau associatif des valeurs stockées dans les sessions, et accessible au script courant. Elle est automatiquement globale dans tous les contextes d'exécution. Voyez l'extension Sessions pour plus de détails sur comment est utilisée cette variable.
Cette variable est une 'superglobal', ou globale automatique.
Cela signifie qu'elle est simplement disponible dans tous les
contextes d'exécution (fonctions ou méthodes). Vous n'avez pas
besoin de faire
global $_SESSION; pour y accéder, comme vous le
faisiez avec $HTTP_SESSION_VARS
.
$HTTP_SESSION_VARS
contient les mêmes
informations, mais n'est pas autoglobale. (Notez que
$HTTP_SESSION_VARS
et $_SESSION
sont des variables différentes et que PHP les traite comme telles)
Si la directive register_globals
est active, alors ces variables seront aussi rendues directement
accessibles dans le contexte d'exécution global. C'est à dire séparément
des tableaux $_SESSION
et $HTTP_SESSION_VARS
.
Pour plus d'informations sur la sécurité de cette configuration, voyez le
chapitre Utiliser la directive Register
Globals. Ces variables globales individuelles ne sont pas des globales.
$GLOBALS
Note :
$GLOBALS
est disponible depuis PHP 3.0.0.
Un tableau associatif contenant les références sur toutes les variables globales actuellement définies dans le contexte d'exécution global du script. Les noms des variables sont les index du tableau.
Cette variable est une 'superglobal', ou globale automatique. Cela signifie qu'elle est simplement disponible dans tous les contextes d'exécution (fonctions ou méthodes). Vous n'avez pas besoin de faire global $GLOBALS; pour y accéder.
$php_errormsg
$php_errormsg
est une variable qui contient le texte
de la dernière erreur générée par PHP. Cette variable sera uniquement
accessible dans le même contexte d'exécution que celui de la ligne
qui a généré l'erreur, et uniquement si la directive de configuration track_errors est activée (elle est
désactivée par défaut).
Précédent | Sommaire | Suivant |
Mots réservés en PHP | Niveau supérieur | Classes prédéfinies |