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 .
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 superglobale. (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 superglobales.
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.
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.
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 .
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. 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.
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() .
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.
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
.
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 superglobale. (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 superglobales.
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 superglobale. (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 superglobales.
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 superglobale. (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 superglobales.
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 superglobale. (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 superglobales.
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 superglobale. (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 superglobales.
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 superglobales.
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 supperglobale. (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 superglobales.
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 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).
$HTTP_RAW_POST_DATA contient les données POST brutes. Voir always_populate_raw_post_data
Le tableau $http_response_header est similaire à la fonction get_headers() . Lors de l'utilisation du gestionnaire HTTP , $http_response_header sera peuplé des en-têtes de réponse HTTP.