Les superglobales

Les superglobales

2 mai 2021

Dans un article, je vous parle des variables PHP, mais savez-vous que PHP possède aussi un système de variables très spéciales nommées les superglobales ? Non ? Je vous explique tout ça !

PHP possède neuf types de superglobales ayant chacune sont utilités.

  • $GLOBALS
  • $_SERVER
  • $_GET
  • $_POST
  • $_FILES
  • $_ENV
  • $_COOKIE
  • $_SESSION

Vous remarquerez que les superglobales sont écrites en majuscule, non pas pour mieux vous les montrer, mais c'est de cette manière qu'elles s'écrivent.
Si jamais vous les écrivez en minuscule, PHP ne comprendra pas que c'est une superglobale, mais une simple variable, donc attention à la casse !

À l'exception de $GLOBALS, on ajoute aussi un underscore "_" avant le nom. Il s'agit d'une convention adoptée pour les différencier des variables classiques.

$GLOBALS

C'est la toute première créée par PHP. Elle permet de stocker toutes les valeurs des variables définies de manières globales dans un tableau.

$marque = 'Fiat';
$modele = 'Multipla';

function maVoiture() {
  global $marque, $modele;
  return "Ma voiture est une $marque $modele";
}

function monGarage {
  return "Dans mon garage, j'ai une {$GLOBALS['marque']} {$GLOBALS['modele']}";
}

$_SERVER

Cette superglobale contient des informations relatives aux scripts et au serveur sir lequel le programme se trouve. Comme toutes les autres superglobales, cette variable est un tableau associatif.

// Nom du serveur qui héberge le script
echo $_SERVER['SERVER_NAME'];

// Adresse IP du visiteur
echo $_SERVER['REMOTE_ADDR'];

D'autres informations sont disponibles, vous pouvez les retrouver sur la documentation officielle :
https://www.php.net/manual/fr/reserved.variables.server.php

$_GET et $_POST

Celles-ci sont utilisées généralement (donc pas toujours, hein ?) dans la manipulation d'informations issues de formulaires.

Elles stockeront les informations renseignées par le visiteur dans le formulaire selon l'envoi du formulaire. Par exemple, si la méthode du formulaire est "GET", les informations seront stockées dans la superglobale $_GET et si la méthode est "POST", elles seront sauvegardées dans $_POST.

// formulaire.php
<form action="ma_page.php" method="POST">
  <label for="prenom">Prénom</label>
  <input type="text" id="prenom" name="prenom">
  <button>Valider</button>
</form>

// ma_page.php
if (isset($_POST['prenom'])) {
  echo "Votre prénom est {$_POST['prenom']}";
}

On réceptionne la valeur du champ grâce au nom choisi dans l'attribut name' du champinput'.

Passage d'information via URL :

// URL contenant des informations
https://mon-domaine.com/mon_fichier.php?nom=Talus&prenom=Jean

// mon_fichier.php
echo "{$_GET['prenom']} {$_GET['nom']}";

$_FILES

Cette superglobale sert lors de téléchargement de fichiers sur le serveur. Elle contient différentes informations sur le fichier comme le type MIME, la taille en octets, le nom du fichier, l'erreur (si erreur bien sûr) et le nom temporaire pour l'upload.

// envoi.php
<form action="upload.php" method="POST" enctype="multipart/form-data">
  <label for="fichier">Choisir un fichier</label>
  <input type="file" id="fichier" name="fichier">
  <button>Envoyer le fichier</button>
</form>

// upload.php
// Traitement de l'upload ici...

// Affiche le nom du fichier envoyé
echo $_FILES['fichier']['name'];

N'oubliez pas l'attribut enctype="multipart/form-data"sur le formulaire, sans quoi le fichier ne pourra être envoyé.

$_COOKIE

Un cookie est un fichier stocké sur votre ordinateur généralement une information comme un pseudonyme, une adresse email, un ID... Cette information sera utilisée lors de votre prochaine visite sur le site Web ayant créé ce cookie ?.

La création d'un cookie utilise une fonction PHP accueillant jusqu'à 7 paramètres dans l'ordre suivant :

  • Le nom du cookie
  • La valeur du cookie
  • Le temps de validité* (Si régler à zéro, est détruit lorsque le navigateur sera fermé)
  • Le chemin vers le serveur*
  • Le domaine accessible*
  • Requiert un HTTPS au domaine*
  • Accessible seulement via HTTP*

Les paramètres comportant une étoile * ne sont pas obligatoires.

// une_page.php
// Création d'un cookie
setcookie('firstname', 'Jane'); // Valable jusqu'à la fermeture du navigateur
setcookie('firstname', 'Jane', time() * 3600 * 24); // Valable 24 heures
setcookie('firstname', 'Jane', time() * 3600 * 24, '/', 'mon-domaine.com', true, true);

// une_autre_page.php
// Lecture d'un cookie
if (isset($_COOKIE['firstname'])) {
  echo $_COOKIE['firstname']; // Jane
}

$_SESSION

Les sessions permettent d’enregistrer diverses informations et de les passer de pages en pages sur votre site Web.

Les sessions ne sont pas stockées sur l’ordinateur du client.
Dès que le visiteur ferme son navigateur, les sessions sont détruites.

Dans la grande majorité des cas, les sessions sont utilisées pour la connexion d’un espace membre.

Avant de définir une variable de session, il va falloir la démarrer.
Pour cela, on utilise la fonction session_start() avant tout autre code PHP !

<?php

session_start();
// Code PHP

?>
// une_page.php
// Déclaration d'une session
session_start();
$_SESSION['email'] = 'john@doe.com';
$_SESSION['isConnect'] = true;

// une_autre_page.php
// Lecture d'une session
session_start()
if (isset($_SESSION['email'])) {
  echo $_SESSION['email']; // john@doe.com
}