Formation PUB010 : PHP, 2025 Les variables de session

41.1 Variables de session


Les variables de session permettent de conserver des informations qui demeureront disponibles quand une nouvelle page Web du même site sera affichée.

Elles sont stockées dans un tableau nommé $_SESSION.

Par exemple, une variable de session qui retient le code d'un usager pourrait s'appeler $_SESSION['usager'];

Chaque page qui a besoin des variables de session doit démarrer la session à l'aide de l'instruction session_start().

L'instruction session_start() doit être exécutée avant que des informations aient été envoyées au navigateur.

Si vous ne respectez pas cette condition, les variables de session ne fonctionneront pas et vous obtiendrez l'avertissement « Warning: session_start(): Session cannot be started after headers have already been sent ».

De plus, si vous exécutez une instruction session_start() alors qu'il y a déjà eu un session_start(), les variables de session fonctionneront mais vous obtiendrez l'avis « Notice: session_start(): Ignoring session_start() because a session is already active ».

Le meilleur endroit pour initialiser la session est dans le fichier configuration.inc.

Fichier configuration.inc

@session_start();

Afin de vous prémunir contre d'éventuelles attaques, il faut faire précéder le session_start() par le caractère @ (opérateur de contrôle d'erreur). Ceci fera en sorte que si la fonction génère un avis ou un avertissement, le message d'erreur ne sera jamais affiché à l'écran peu importe les configurations du serveur.

Créer une variable de session

Pour créer une variable de session et lui assigner une valeur :

Syntaxe PHP

$_SESSION['nom_variable_session'] = valeur;

Ex :

PHP

$_SESSION['usager'] = 'toto';

ou :

PHP

$_SESSION['usager'] = $usager;

Vérifier l'existance d'une variable de session

Si on tente de lire le contenu d'une variable de session alors qu'elle n'existe pas, ceci fera planter le programme. Il faut donc toujours vérifier son existance avant de tenter de l'utiliser.

Pour vérifier si une variable de session existe :

Syntaxe PHP

if (isset($_SESSION['nom_variable_session'])) {

   ...

}

Ex :

PHP

if (isset($_SESSION['usager'])) {

   ...

}

Lire le contenu d'une variable de session

Pour lire le contenu d'une variable de session :

Syntaxe PHP

$variable = $_SESSION['nom_variable_session'];

Ex :

PHP

$usager = $_SESSION['usager'];

Détruire une variable de session

Parfois, on pourra avoir besoin d'un algorithme qui agit différemment si une variable de session existe et si elle n'existe pas. Il faudra donc prendre soin de la détruire lorsque requis.

Pour détruire une variable de session :

Syntaxe PHP

unset($_SESSION['nom_variable_session']);

Ex :

PHP

unset($_SESSION['usager']);

Un résultat semblable sera obtenu en mettant la variable à null.

Ex :

PHP

$_SESSION['usager'] = null;

Avec ces deux techniques, isset($_SESSION['...']) retournera false.

Il existe de petites différences entre unset() et =null, notamment au niveau de la gestion de la mémoire (unset() libère plus de mémoire) et de la vitesse d'exécution (= null est plus rapide) mais pour l'essentiel, l'une ou l'autre des techniques peuvent être utilisées (voir discussion ici : https://stackoverflow.com/questions/13667137/the-difference-between-unset-and-null).

Le tout en action

Voici un petit exemple qui utilise plusieurs des instructions précédentes :

PHP

@session_start();
...
if (!isset($_SESSION['usager'])) {
   echo '<a href="authentification.php">Cliquez ici pour vous authentifier.</a>';
   $_SESSION['page_retour_authentification'] = basename($_SERVER['SCRIPT_NAME']);
}
else {
   $usager = $_SESSION['usager'];
   echo "Bienvenue, $usager !";
   echo '<a href="deconnexion.php">Déconnexion</a>';
}

 

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre