Formation PUB010 : PHP, 2018 Passer de l'information entre les pages Web

Variables de session


Dans le monde du Web, une session est une période de temps qui débute généralement lorsqu'un internaute accède à un site Web et qui se termine :

En PHP, la notion de session permet de stocker des informations propres à un internaute. La session utilise un petit fichier texte (un cookie) placé sur le serveur. Le code PHP peut y enregistrer toutes les informations qui doivent être passées d’une page à l’autre. 

Pour identifier les informations d'un utilisateur du site Web, un identifiant de session doit être créé. L’ID de session doit être conservé dans un cookie côté client. Dans le cas où ce dernier aurait désactivé ses cookies, l’ID sera passé en paramètre grâce à l’encodage d’URL.

▼Publicité Le texte se poursuit plus bas

Donner accès aux variables de session

Les variables de session sont stockées dans un tableau nommé $_SESSION. Pour pouvoir utiliser ce tableau, chaque page doit démarrer la session à l'aide de l'instruction session_start().

Afin de nous prémunir contre d'éventuelles attaques, il est conseillé de faire précéder le session_start() du caractère @. Ceci fera en sorte que si la fonction génère une erreur pour une raison quelconque, l'erreur ne sera pas affichée à l'écran.

Ainsi, les utilisateurs malveillants seront privés d'informations intéressantes qui peuvent ouvrir des portes que nous préférons garder fermées...

PHP

@session_start();

Attention : l'instruction session_start() doit être placée avant toute balise HTML envoyée au client sinon, elle ne sera pas prise en compte et la page Web ne pourra utiliser les variables de session.

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 à nul.

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_actuelle'] = basename($_SERVER['SCRIPT_NAME']);
}
else {
   $usager = $_SESSION['usager'];
   echo 'Bienvenue, $usager !';
   echo '<a href="deconnexion.php">Déconnexion</a>';
}

 

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Dernière révision le 12 avril 2021
Merci de partager !

Site fièrement hébergé chez A2 Hosting.

Soumettre