Nous avons déjà vu comment déclarer et modifier une variable ainsi que leurs types.
Pour ce tutoriel, concentrons-nous sur leur portée ainsi que sur les variables globales.
Sommaire :
Il est important de savoir que nativement dans PHP, vous avez huit (8) variables dites « superglobales ».
Toutes les variables superglobales ont les mêmes propriétés :
$_SERVER
.La variable la plus utilisée est $_SERVER
. Elle contient les informations sur :
En bref, vous l’aurez compris, une véritable mine d’informations.
// IP
if( ! empty( $_SERVER['HTTP_CLIENT_IP'] ) ) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
}
elseif ( ! empty($_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
else {
$ip = $_SERVER['REMOTE_ADDR'];
}
// Navigateur
$userAgent = $_SERVER['HTTP_USER_AGENT'];
if( strpos($userAgent, 'Opera') || strpos($userAgent, 'OPR/') ) {
$browser = 'Opera';
}
elseif( strpos($userAgent, 'Edge') ) {
$browser = 'Edge';
}
elseif( strpos($userAgent, 'Chrome') ) {
$browser = 'Chrome';
}
elseif( strpos($userAgent, 'Safari') ) {
$browser = 'Safari';
}
elseif( strpos($userAgent, 'Firefox') ) {
$browser = 'Firefox';
}
elseif( strpos($userAgent, 'MSIE') || strpos($userAgent, 'Trident/7') ) {
$browser = 'Internet Explorer';
}
else {
$browser = 'inconnu';
}
// URL
$url = $_SERVER['REQUEST_URI'];
// Résultat
echo "L'utilisateur {$ip} a demandé la page {$url} depuis le navigateur {$browser}";
// ==> L'utilisateur ::1 a demandé la page /tuto-codeur/03.php depuis le navigateur Chrome
Nous avons juste au-dessus la variable $_SERVER
. Il en existe d’autres.
Tout d’abord, nous avons les variables qui servent à enregistrer des informations sur l’utilisateur. L’une d’entre elles, $_SESSION
sont les données qui ne vont durer que le temps de la visite de l’utilisateur sur le site. Par exemple son panier sur un site e-commence ou les données RGPD validées. Pour une durée déterminée, c’est-à-dire les cookies, il y a la variable $_COOKIE
. Ces deux variables ont un fonctionnement un particulier, nous reviendrons dessus dans un prochain tutoriel.
Après cela, nous avons les variables avec les données de la requête en cours, à commencer par $_GET
qui contient les données « query string », ou « données get ». Il s’agit des données passées via l’url après le point d’interrogation. De la même façon, pour les données de type « post », envoyées depuis les formulaires, il y a la variable $_POST
. Et pour les fichiers uploadés, il reste encore $_FILES
.
Il y a également la variable $_REQUEST
, qui est la fusion de $_GET
, $_POST
et $_COOKIE
.
Enfin, il reste la variable $_ENV
dans laquelle vous pouvez renseigner les variables d’environnement du serveur et de l’utilisateur. Par exemple, le timezone (fuseau horaire).
Une variable n’est utilisable que dans le « bloc » où est définie et ne peut pas être utilisée ailleurs. Par « bloc » on entend : le fichier, une fonction, une classe.
function afficherTest() {
echo $test; // ==> Génère une erreur
}
$test = 'ok';
echo $test; // ==> Affiche "ok"
afficherTest();
function afficherTest() {
$test = 'ok';
echo $test; // ==> Affiche "ok"
}
afficherTest();
echo $test; // ==> Génère une erreur
function creerTest() {
$test = 'ok';
}
function afficherTest() {
echo $test; // ==> Génère une erreur
}
creerTest();
afficherTest();
echo $test; // ==> Génère une erreur
Pour que les exemples ci-dessous ne génèrent plus d’erreur et affichent le contenu de la variable $test
, on peut soit utiliser la variable superglobale $_ENV['test']
, soit créer une variable globale personnalisée. Pour ce dernier point, rien de plus simple ! Après avoir créé une variable, on utilise global $maVariable;
et pour l’appeler depuis un autre blog, on fait de même.
Attention, cela ne fonctionne que pour les variables créées hors d’une fonctione.
Voilà ce que ça donne avec les deux premiers exemples précédents.
function afficherTest() {
global $test; // +
echo $test; // ==> Affiche "ok"
}
$test = 'ok';
global $test; // +
echo $test; // ==> Affiche "ok"
afficherTest();
function afficherTest() {
$test = 'ok';
global $test;
echo $test; // ==> Affiche "ok"
}
afficherTest();
global $test;
echo $test; // ==> Génère une erreur
Vous savez maintenant comment utiliser les différentes variables superglobales pré-définies avec PHP et créer vous-même votre propre variable globale.
Sachez qu’il est possible de voir toutes les variables existantes (pré-définies et créées) avec le variable $GLOBALS
.
Pour tout problème rencontré avec vos variables, vous pouvez demander l’intervention d’un freelance spécialisé pour vous aider à débloquer la situation. Trouvez un développeur PHP freelance sur Codeur.com !