PHP
Variables superglobales PHP
Recherche…
Introduction
Les superglobales sont des variables intégrées qui sont toujours disponibles dans tous les domaines.
Plusieurs variables prédéfinies en PHP sont des "superglobales", ce qui signifie qu'elles sont disponibles dans toutes les portées d'un script. Il n'y a pas besoin de faire de global $variable;
pour y accéder au sein de fonctions ou de méthodes.
PHP5 SuperGlobals
Voici les PHP5 SuperGlobals
- $ GLOBALS
- $ _REQUEST
- $ _GET
- $ _POST
- $ _FILES
- $ _SERVER
- $ _ENV
- $ _COOKIE
- $ _SESSION
$ GLOBALS : Cette variable SuperGlobal est utilisée pour accéder aux variables globales.
<?php
$a = 10;
function foo(){
echo $GLOBALS['a'];
}
//Which will print 10 Global Variable a
?>
$ _REQUEST : Cette variable SuperGlobal est utilisée pour collecter les données soumises par un formulaire HTML.
<?php
if(isset($_REQUEST['user'])){
echo $_REQUEST['user'];
}
//This will print value of HTML Field with name=user submitted using POST and/or GET MEthod
?>
$ _GET : cette variable SuperGlobal est utilisée pour collecter les données soumises par HTML Form avec la méthode get
.
<?php
if(isset($_GET['username'])){
echo $_GET['username'];
}
//This will print value of HTML field with name username submitted using GET Method
?>
$ _POST : Cette variable SuperGlobal est utilisée pour collecter les données soumises par HTML Form avec la méthode post
.
<?php
if(isset($_POST['username'])){
echo $_POST['username'];
}
//This will print value of HTML field with name username submitted using POST Method
?>
$ _FILES : Cette variable SuperGlobal contient les informations des fichiers téléchargés via la méthode HTTP Post.
<?php
if($_FILES['picture']){
echo "<pre>";
print_r($_FILES['picture']);
echo "</pre>";
}
/**
This will print details of the File with name picture uploaded via a form with method='post and with enctype='multipart/form-data'
Details includes Name of file, Type of File, temporary file location, error code(if any error occured while uploading the file) and size of file in Bytes.
Eg.
Array
(
[picture] => Array
(
[0] => Array
(
[name] => 400.png
[type] => image/png
[tmp_name] => /tmp/php5Wx0aJ
[error] => 0
[size] => 15726
)
)
)
*/
?>
$ _SERVER : cette variable SuperGlobal contient des informations sur les scripts, les en-têtes HTTP et les chemins de serveur.
<?php
echo "<pre>";
print_r($_SERVER);
echo "</pre>";
/**
Will print the following details
on my local XAMPP
Array
(
[MIBDIRS] => C:/xampp/php/extras/mibs
[MYSQL_HOME] => \xampp\mysql\bin
[OPENSSL_CONF] => C:/xampp/apache/bin/openssl.cnf
[PHP_PEAR_SYSCONF_DIR] => \xampp\php
[PHPRC] => \xampp\php
[TMP] => \xampp\tmp
[HTTP_HOST] => localhost
[HTTP_CONNECTION] => keep-alive
[HTTP_CACHE_CONTROL] => max-age=0
[HTTP_UPGRADE_INSECURE_REQUESTS] => 1
[HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36
[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*;q=0.8
[HTTP_ACCEPT_ENCODING] => gzip, deflate, sdch
[HTTP_ACCEPT_LANGUAGE] => en-US,en;q=0.8
[PATH] => C:\xampp\php;C:\ProgramData\ComposerSetup\bin;
[SystemRoot] => C:\Windows
[COMSPEC] => C:\Windows\system32\cmd.exe
[PATHEXT] => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
[WINDIR] => C:\Windows
[SERVER_SIGNATURE] => Apache/2.4.16 (Win32) OpenSSL/1.0.1p PHP/5.6.12 Server at localhost Port 80
[SERVER_SOFTWARE] => Apache/2.4.16 (Win32) OpenSSL/1.0.1p PHP/5.6.12
[SERVER_NAME] => localhost
[SERVER_ADDR] => ::1
[SERVER_PORT] => 80
[REMOTE_ADDR] => ::1
[DOCUMENT_ROOT] => C:/xampp/htdocs
[REQUEST_SCHEME] => http
[CONTEXT_PREFIX] =>
[CONTEXT_DOCUMENT_ROOT] => C:/xampp/htdocs
[SERVER_ADMIN] => postmaster@localhost
[SCRIPT_FILENAME] => C:/xampp/htdocs/abcd.php
[REMOTE_PORT] => 63822
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => GET
[QUERY_STRING] =>
[REQUEST_URI] => /abcd.php
[SCRIPT_NAME] => /abcd.php
[PHP_SELF] => /abcd.php
[REQUEST_TIME_FLOAT] => 1469374173.88
[REQUEST_TIME] => 1469374173
)
*/
?>
$ _ENV : Cet environnement de variable variable SuperGlobal Détails de la variable sous laquelle PHP est exécuté.
$ _COOKIE : Cette variable SuperGlobal est utilisée pour récupérer la valeur du cookie avec la clé donnée.
<?php
$cookie_name = "data";
$cookie_value = "Foo Bar";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 day
if(!isset($_COOKIE[$cookie_name])) {
echo "Cookie named '" . $cookie_name . "' is not set!";
}
else {
echo "Cookie '" . $cookie_name . "' is set!<br>";
echo "Value is: " . $_COOKIE[$cookie_name];
}
/**
Output
Cookie 'data' is set!
Value is: Foo Bar
*/
?>
$ _SESSION : cette variable SuperGlobal est utilisée pour définir et récupérer la valeur de session stockée sur le serveur.
<?php
//Start the session
session_start();
/**
Setting the Session Variables
that can be accessed on different
pages on save server.
*/
$_SESSION["username"] = "John Doe";
$_SESSION["user_token"] = "d5f1df5b4dfb8b8d5f";
echo "Session is saved successfully";
/**
Output
Session is saved successfully
*/
?>
Suberglobals expliqué
introduction
En d'autres termes, ce sont des variables qui sont disponibles dans tous les domaines de vos scripts.
Cela signifie qu'il n'est pas nécessaire de les transmettre en tant que paramètres dans vos fonctions ou de les stocker en dehors d'un bloc de code pour les rendre disponibles dans différentes portées.
Qu'est-ce qu'un superglobal?
Si vous pensez que ce sont des super-héros, ils ne le sont pas.
Depuis PHP version 7.1.3, il y a 9 variables super globales. Ils sont comme suit:
-
$GLOBALS
-$GLOBALS
référence à toutes les variables disponibles dans la portée globale -
$_SERVER
-$_SERVER
serveur et l'environnement d'exécution -
$_GET
-$_GET
HTTP GET -
$_POST
- Variables HTTP POST -
$_FILES
- Variables de téléchargement de fichier HTTP -
$_COOKIE
- Cookies HTTP -
$_SESSION
- Variables de session -
$_REQUEST
- Variables de requête HTTP -
$_ENV
- Variables d'environnement
Voir la documentation .
Dis m'en plus, dis moi plus
Je suis désolé pour la référence Grease! Lien
Temps pour quelques explications sur ces globaux de super- héros .
$GLOBALS
Un tableau associatif contenant des références à toutes les variables actuellement définies dans la portée globale du script. Les noms de variable sont les clés du tableau.
Code
$myGlobal = "global"; // declare variable outside of scope
function test()
{
$myLocal = "local"; // declare variable inside of scope
// both variables are printed
var_dump($myLocal);
var_dump($GLOBALS["myGlobal"]);
}
test(); // run function
// only $myGlobal is printed since $myLocal is not globally scoped
var_dump($myLocal);
var_dump($myGlobal);
Sortie
string 'local' (length=5)
string 'global' (length=6)
null
string 'global' (length=6)
Dans l'exemple ci-dessus, $myLocal
n'est pas affiché la deuxième fois car il est déclaré dans la fonction test()
, puis détruit après la fermeture de la fonction.
Devenir global
Pour remédier à cela, il existe deux options.
Option 1: mot clé global
function test()
{
global $myLocal;
$myLocal = "local";
var_dump($myLocal);
var_dump($GLOBALS["myGlobal"]);
}
Le mot clé global
est un préfixe sur une variable qui le force à faire partie de la portée globale.
Notez que vous ne pouvez pas affecter une valeur à une variable dans la même instruction que le mot clé global. Par conséquent, pourquoi j'ai dû attribuer une valeur en dessous. (C'est possible si vous supprimez de nouvelles lignes et espaces, mais je ne pense pas que ce soit bien. global $myLocal; $myLocal = "local"
).
Option deux: tableau $GLOBALS
function test()
{
$GLOBALS["myLocal"] = "local";
$myLocal = $GLOBALS["myLocal"];
var_dump($myLocal);
var_dump($GLOBALS["myGlobal"]);
}
Dans cet exemple, j'ai réaffecté $myLocal
la valeur de $GLOBAL["myLocal"]
car je trouve plus facile d'écrire un nom de variable plutôt que le tableau associatif.
$_SERVER
$ _SERVER est un tableau contenant des informations telles que les en-têtes, les chemins et les emplacements de script. Les entrées de ce tableau sont créées par le serveur Web. Il n'y a aucune garantie que chaque serveur Web fournira l'un d'entre eux; les serveurs peuvent en omettre ou en fournir d’autres non répertoriés ici. Cela dit, un grand nombre de ces variables sont prises en compte dans la spécification CGI / 1.1 , vous devriez donc pouvoir les attendre.
Un exemple de sortie de ceci pourrait être comme suit (exécuté sur mon PC Windows en utilisant WAMP)
C:\wamp64\www\test.php:2:
array (size=36)
'HTTP_HOST' => string 'localhost' (length=9)
'HTTP_CONNECTION' => string 'keep-alive' (length=10)
'HTTP_CACHE_CONTROL' => string 'max-age=0' (length=9)
'HTTP_UPGRADE_INSECURE_REQUESTS' => string '1' (length=1)
'HTTP_USER_AGENT' => string 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36' (length=110)
'HTTP_ACCEPT' => string 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' (length=74)
'HTTP_ACCEPT_ENCODING' => string 'gzip, deflate, sdch, br' (length=23)
'HTTP_ACCEPT_LANGUAGE' => string 'en-US,en;q=0.8,en-GB;q=0.6' (length=26)
'HTTP_COOKIE' => string 'PHPSESSID=0gslnvgsci371ete9hg7k9ivc6' (length=36)
'PATH' => string 'C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\ProgramData\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;E:\Program Files\ATI Technologies\ATI.ACE\Core-Static;E:\Program Files\AMD\ATI.ACE\Core-Static;C:\Program Files (x86)\AMD\ATI.ACE\Core-Static;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files\Intel\Intel(R) Managemen'... (length=1169)
'SystemRoot' => string 'C:\WINDOWS' (length=10)
'COMSPEC' => string 'C:\WINDOWS\system32\cmd.exe' (length=27)
'PATHEXT' => string '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY' (length=57)
'WINDIR' => string 'C:\WINDOWS' (length=10)
'SERVER_SIGNATURE' => string '<address>Apache/2.4.23 (Win64) PHP/7.0.10 Server at localhost Port 80</address>' (length=80)
'SERVER_SOFTWARE' => string 'Apache/2.4.23 (Win64) PHP/7.0.10' (length=32)
'SERVER_NAME' => string 'localhost' (length=9)
'SERVER_ADDR' => string '::1' (length=3)
'SERVER_PORT' => string '80' (length=2)
'REMOTE_ADDR' => string '::1' (length=3)
'DOCUMENT_ROOT' => string 'C:/wamp64/www' (length=13)
'REQUEST_SCHEME' => string 'http' (length=4)
'CONTEXT_PREFIX' => string '' (length=0)
'CONTEXT_DOCUMENT_ROOT' => string 'C:/wamp64/www' (length=13)
'SERVER_ADMIN' => string '[email protected]' (length=29)
'SCRIPT_FILENAME' => string 'C:/wamp64/www/test.php' (length=26)
'REMOTE_PORT' => string '5359' (length=4)
'GATEWAY_INTERFACE' => string 'CGI/1.1' (length=7)
'SERVER_PROTOCOL' => string 'HTTP/1.1' (length=8)
'REQUEST_METHOD' => string 'GET' (length=3)
'QUERY_STRING' => string '' (length=0)
'REQUEST_URI' => string '/test.php' (length=13)
'SCRIPT_NAME' => string '/test.php' (length=13)
'PHP_SELF' => string '/test.php' (length=13)
'REQUEST_TIME_FLOAT' => float 1491068771.413
'REQUEST_TIME' => int 1491068771
Il y a beaucoup de choses à prendre, alors je choisirai quelques-unes importantes ci-dessous. Si vous souhaitez en savoir plus, consultez la section index de la documentation.
Je pourrais les ajouter tous en dessous d'un jour. Ou quelqu'un peut éditer et ajouter une bonne explication ci-dessous? Astuce, indice ;)
Pour toutes les explications ci-dessous, supposez que l'URL est http://www.example.com/index.php
-
HTTP_HOST
- L'adresse de l'hôte.
Cela retourneraitwww.example.com
-
HTTP_USER_AGENT
- Contenu de l'agent utilisateur. Ceci est une chaîne qui contient toutes les informations sur le navigateur du client, y compris le système d'exploitation. -
HTTP_COOKIE
- Tous les cookies dans une chaîne concaténée, avec un délimiteur de point-virgule. -
SERVER_ADDR
- L'adresse IP du serveur dont le script en cours est exécuté.
Cela retournerait93.184.216.34
-
PHP_SELF
- Le nom du fichier actuellement exécuté, relatif à la racine du document.
Ceci retournerait/index.php
-
REQUEST_TIME_FLOAT
- Horodatage du début de la requête, avec une précision de la microseconde. Disponible depuis PHP 5.4.0. -
REQUEST_TIME
- L'horodatage du début de la demande. Disponible depuis PHP 5.1.0.
$_GET
Un tableau associatif de variables passé au script actuel via les paramètres URL.
$_GET
est un tableau qui contient tous les paramètres d'URL; ce sont les quoi après le? dans l'URL.
En utilisant http://www.example.com/index.php?myVar=myVal comme exemple. Cette information à partir de cette URL peut être obtenue en accédant au format $_GET["myVar"]
et le résultat sera myVal
.
Utiliser du code pour ceux qui n'aiment pas la lecture.
// URL = http://www.example.com/index.php?myVar=myVal
echo $_GET["myVar"] == "myVal" ? "true" : "false"; // returns "true"
L'exemple ci-dessus utilise l' opérateur ternaire .
Cela montre comment vous pouvez accéder à la valeur depuis l'URL en utilisant le superglobal $_GET
.
Maintenant un autre exemple! haleter
// URL = http://www.example.com/index.php?myVar=myVal&myVar2=myVal2
echo $_GET["myVar"]; // returns "myVal"
echo $_GET["myVar2"]; // returns "myVal2"
Il est possible d'envoyer plusieurs variables via l'URL en les séparant par un caractère esperluette ( &
).
Risque de sécurité
Il est très important de ne pas envoyer d'informations sensibles via l'URL, car celles-ci resteront dans l'historique de l'ordinateur et seront visibles par toute personne pouvant accéder à ce navigateur.
$_POST
Un tableau associatif de variables transmis au script en cours via la méthode HTTP POST lors de l'utilisation de l'application / x-www-form-urlencoded ou de multipart / form-data en tant que HTTP Content-Type dans la requête.
Très similaire à $_GET
cette donnée est envoyée d'un endroit à un autre.
Je vais commencer par aller directement dans un exemple. (J'ai omis l'attribut action car cela enverra les informations à la page dans laquelle se trouve le formulaire).
<form method="POST">
<input type="text" name="myVar" value="myVal" />
<input type="submit" name="submit" value="Submit" />
</form>
Ci-dessus se trouve un formulaire de base pour lequel des données peuvent être envoyées. Dans un environnement réel, l'attribut value
ne serait pas défini, ce qui signifie que le formulaire serait vide. Cela enverrait alors les informations saisies par l'utilisateur.
echo $_POST["myVar"]); // returns "myVal"
Risque de sécurité
L'envoi de données via POST n'est pas non plus sécurisé. L'utilisation de HTTPS garantira la sécurité des données.
$_FILES
Un tableau associatif d'éléments téléchargés dans le script en cours via la méthode HTTP POST. La structure de ce tableau est décrite dans la section de téléchargement de la méthode POST .
Commençons par une forme de base.
<form method="POST" enctype="multipart/form-data">
<input type="file" name="myVar" />
<input type="submit" name="Submit" />
</form>
Notez que j'ai omis l'attribut d' action
(encore une fois!). En outre, j'ai ajouté enctype="multipart/form-data"
, ce qui est important pour tout formulaire traitant des téléchargements de fichiers.
// ensure there isn't an error
if ($_FILES["myVar"]["error"] == UPLOAD_ERR_OK)
{
$folderLocation = "myFiles"; // a relative path. (could be "path/to/file" for example)
// if the folder doesn't exist then make it
if (!file_exists($folderLocation)) mkdir($folderLocation);
// move the file into the folder
move_uploaded_file($_FILES["myVar"]["tmp_name"], "$folderLocation/" . basename($_FILES["myVar"]["name"]));
}
Ceci est utilisé pour télécharger un fichier. Parfois, vous souhaiterez peut-être télécharger plusieurs fichiers. Un attribut existe pour cela, il s'appelle multiple
.
Il y a un attribut pour à peu près tout . Je suis désolé
Vous trouverez ci-dessous un exemple de formulaire contenant plusieurs fichiers.
<form method="POST" enctype="multipart/form-data">
<input type="file" name="myVar[]" multiple="multiple" />
<input type="submit" name="Submit" />
</form>
Notez les modifications apportées ici; il n'y en a que quelques-uns.
- Le nom d'
input
a des crochets. C'est parce que c'est maintenant un tableau de fichiers et nous disons donc au formulaire de faire un tableau des fichiers sélectionnés. En omettant les crochets, le dernier fichier sera défini sur$_FILES["myVar"]
. - L'attribut
multiple="multiple"
. Cela indique simplement au navigateur que les utilisateurs peuvent sélectionner plusieurs fichiers.
$total = isset($_FILES["myVar"]) ? count($_FILES["myVar"]["name"]) : 0; // count how many files were sent
// iterate over each of the files
for ($i = 0; $i < $total; $i++)
{
// there isn't an error
if ($_FILES["myVar"]["error"][$i] == UPLOAD_ERR_OK)
{
$folderLocation = "myFiles"; // a relative path. (could be "path/to/file" for example)
// if the folder doesn't exist then make it
if (!file_exists($folderLocation)) mkdir($folderLocation);
// move the file into the folder
move_uploaded_file($_FILES["myVar"]["tmp_name"][$i], "$folderLocation/" . basename($_FILES["myVar"]["name"][$i]));
}
// else report the error
else switch ($_FILES["myVar"]["error"][$i])
{
case UPLOAD_ERR_INI_SIZE:
echo "Value: 1; The uploaded file exceeds the upload_max_filesize directive in php.ini.";
break;
case UPLOAD_ERR_FORM_SIZE:
echo "Value: 2; The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.";
break;
case UPLOAD_ERR_PARTIAL:
echo "Value: 3; The uploaded file was only partially uploaded.";
break;
case UPLOAD_ERR_NO_FILE:
echo "Value: 4; No file was uploaded.";
break;
case UPLOAD_ERR_NO_TMP_DIR:
echo "Value: 6; Missing a temporary folder. Introduced in PHP 5.0.3.";
break;
case UPLOAD_ERR_CANT_WRITE:
echo "Value: 7; Failed to write file to disk. Introduced in PHP 5.1.0.";
break;
case UPLOAD_ERR_EXTENSION:
echo "Value: 8; A PHP extension stopped the file upload. PHP does not provide a way to ascertain which extension caused the file upload to stop; examining the list of loaded extensions with phpinfo() may help. Introduced in PHP 5.2.0.";
break;
default:
echo "An unknown error has occured.";
break;
}
}
Ceci est un exemple très simple et ne gère pas les problèmes tels que les extensions de fichiers qui ne sont pas autorisés ou les fichiers nommés avec du code PHP (comme un équivalent PHP d'une injection SQL). Voir la documentation .
Le premier processus vérifie s'il existe des fichiers et, si tel est le cas, définissez leur nombre total sur $total
.
L'utilisation de la boucle for permet une itération du tableau $_FILES
et l'accès à chaque élément un par un. Si ce fichier ne rencontre pas de problème, l'instruction if est vraie et le code du téléchargement du fichier unique est exécuté.
Si un problème est rencontré, le bloc de commutation est exécuté et une erreur est présentée conformément à l'erreur pour ce téléchargement particulier.
$_COOKIE
Un tableau associatif de variables transmis au script actuel via les cookies HTTP.
Les cookies sont des variables qui contiennent des données et sont stockées sur l'ordinateur du client.
Contrairement aux superglobales mentionnées ci-dessus, les cookies doivent être créés avec une fonction (et ne pas affecter de valeur). La convention est ci-dessous.
setcookie("myVar", "myVal", time() + 3600);
Dans cet exemple, un nom est spécifié pour le cookie (dans cet exemple, il s'agit de "myVar"), une valeur est donnée (dans cet exemple, il s'agit de "myVal", mais une variable peut être transmise pour affecter sa valeur au cookie), et puis une heure d'expiration est donnée (dans cet exemple, il est une heure car 3600 secondes est une minute).
Bien que la convention de création d'un cookie soit différente, on y accède de la même manière que les autres.
echo $_COOKIE["myVar"]; // returns "myVal"
Pour détruire un cookie, setcookie
doit être appelé à nouveau, mais le délai d'expiration est défini à tout moment dans le passé. Voir ci-dessous.
setcookie("myVar", "", time() - 1);
var_dump($_COOKIE["myVar"]); // returns null
Cela supprimera les cookies et les supprimera de l'ordinateur du client.
$_SESSION
Un tableau associatif contenant les variables de session disponibles pour le script en cours. Consultez la documentation sur les fonctions de session pour plus d'informations sur son utilisation.
Les sessions ressemblent beaucoup aux cookies, sauf qu'elles sont côté serveur.
Pour utiliser des sessions, vous devez inclure session_start()
en haut de vos scripts pour permettre aux sessions d'être utilisées.
Définir une variable de session est la même chose que définir une autre variable. Voir exemple ci-dessous.
$_SESSION["myVar"] = "myVal";
Lors du démarrage d'une session, un identifiant aléatoire est défini comme cookie et appelé "PHPSESSID" et contiendra l'ID de session pour cette session en cours. Vous pouvez y accéder en appelant la fonction session_id()
.
Il est possible de détruire les variables de session en utilisant la fonction unset
(telle que unset($_SESSION["myVar"])
détruirait cette variable).
L'alternative est d'appeler session_destory()
. Cela détruira toute la session, ce qui signifie que toutes les variables de session n'existeront plus.
$_REQUEST
Un tableau associatif qui contient par défaut le contenu de
$_GET
,$_POST
et$_COOKIE
.
Comme l'indique la documentation de PHP, il ne s'agit que d'une compilation de $_GET
, $_POST
et $_COOKIE
en une seule variable.
Comme il est possible que ces trois tableaux aient un index du même nom, il existe un paramètre dans le fichier php.ini
appelé request_order
qui peut spécifier lequel des trois a la priorité.
Par exemple, si elle était définie sur "GPC"
, la valeur de $_COOKIE
sera utilisée, car elle est lue de gauche à droite, ce qui signifie que $_REQUEST
définira sa valeur sur $_GET
, puis sur $_POST
, puis sur $_COOKIE
et depuis que $_COOKIE
est la dernière c'est la valeur qui est dans $_REQUEST
.
Voir cette question .
$_ENV
Un tableau associatif de variables passé au script en cours via la méthode environment.
Ces variables sont importées dans l'espace de noms global de PHP à partir de l'environnement sous lequel l'analyseur PHP est exécuté. Beaucoup sont fournis par le shell sous lequel PHP est exécuté et différents systèmes exécutent probablement différents types de shells, une liste définitive est impossible. Veuillez consulter la documentation de votre shell pour obtenir une liste des variables d'environnement définies.
Les autres variables d'environnement incluent les variables CGI, placées là même si PHP est exécuté en tant que module serveur ou processeur CGI.
Tout ce qui est stocké dans $_ENV
provient de l'environnement dans lequel PHP est exécuté.
$_ENV
n'est $_ENV
que si php.ini
permet.
Voir cette réponse pour plus d'informations sur la raison $_ENV
laquelle $_ENV
n'est pas renseigné.