Les sessions en PHP<span class="wtr-time-wrap after-title"><span class="wtr-time-number">7</span> min read</span>
Les sessions en PHP

Les sessions en PHP7 min read

Lorsqu’un site internet devient de plus en plus complexe, on arrive généralement au stade où on doit conserver des données d’une page à une autre. C’est exactement ce que les sessions en PHP peuvent faire.

Un site internet classique en HTML ne pourras pas passer de données d’une page à l’autre. Concrètement, toutes les informations sont oubliées après le chargement de la page. Cette architecture rend impossible les système comme les boutiques en ligne avec des paniers.

C’est quoi une session PHP ?

Les sessions PHP résolvent ce problème en permettant au site internet d’enregistrer les informations sur le serveur pour les récupérer plus tard. L’avantage des sessions c’est qu’elles sont stockées dans une base de données mais supprimée dès que l’utilisateur quitte le site internet. Ainsi, on ne surcharge pas la base de données pour rien.

En fait, les sessions ont un fonctionnement assez simple. Elles créent un cookie sur le navigateur internet de l’utilisateur. Ce dernier est en fait un code crypté que seul le serveur peut comprendre. Lorsque l’utilisateur charge une page, le cookie est passé et le serveur va aller chercher les informations correspondante dans la base de données.

Donc, les sessions PHP ne sont pas stockées sur le navigateur internet directement. On passe en fait par un code d’authentification que le serveur utilise pour aller chercher les informations dans la base de données.

Les sessions sont donc sécurisées, seul l’utilisateur du site internet peut récupérer ces informations. Néanmoins, il faut que le protocole du serveur soit crypté via HTTPS, sinon n’importe quel hacker peut utiliser une attaque type “man in the middle” pour récupérer les informations.

Lancer une session en PHP

Avant de pouvoir enregistrer des informations dans la session, il faut d’abord la lancer. Cela doit être effectué tout en haut du code PHP , sinon vous risquez de créer des erreurs.

Voici la ligne de code permettant de lancer une session en PHP. Elle doit être exécutée sur toutes les pages nécessitant le recours au système de session (pas seulement la page d’initialisation, faites bien attention) :

<?php
session_start(); // fonction qui lance la session 
?>

Cette fonction va enregistrer une session utilisateur sur le serveur. Vous pouvez maintenant enregistrer et accéder aux informations dans la session.

Enregistrer une variable dans la session

Ce qui est génial avec les sessions, c’est qu’elles sont super simple à manipuler. On peut enregistrer une variable dans la session en une seule ligne de code.

Pour faire ça, je dois vous introduire une nouvelle variable globale, $_SESSION

Celle-ci se présente sous la forme d’un simple array. On peut enregistrer des données et les lire. Voyons maintenant comment enregistrer une variable dans la session :

<?php
session_start(); // toujours l'utiliser au début d'une page php
$_SESSION['prenom'] = 'michel';
?>

En une simple ligne de code, on peut enregistrer une variable dans la session. Elle est maintenant accessible sur toutes les pages PHP à condition que la session soit lancée. Voyons rapidement comment accéder à ces variables :

<?php
session_start();
echo $_SESSION['prenom']; // on affiche le prénom sur la page
?>

Encore une fois, on peut accéder à la variable depuis n’importe quelle page en une seule ligne de code, génial non ?

Il y a juste un défaut avec les sessions en PHP, si la variable à laquelle vous voulez accéder n’existe pas, PHP va sortir une erreur. En fait, pour sécuriser le code, il faut faire des clauses conditionnelles pour utiliser les variables de sessions.

Les sessions PHP : utiliser la fonction isset

Voyons maintenant comment vérifier qu’une variable de session existe. Pour ce faire, on utilise la fonction PHP isset()

Cette dernière, qui s’utilise dans une close if , va renvoyer true ou false dépendamment de si la variable existe ou non. Attention, ici on ne vérifie pas la valeur de la variable.

Il est impératif d’utiliser la fonction isset() lorsque vous voulez accéder à une variable de session de type “accessoire”, c’est à dire que la page peut s’afficher sans cette variable mais que si elle existe, on doit ajouter de la logique lors de l’affichage.

Si vous n’utilisez pas cette fonction et que vous essayez d’accéder à une variable qui n’existe pas, l’application PHP sortira une erreur.

Voyons maintenant comment adapter notre code précédent afin d’afficher le prénom du visiteur s’il existe e,t dans la négative, afficher un message standard :

<?php
if (isset($_SESSION['prenom']) {
     echo "Bonjour".$_SESSION['prenom];
} else {
     echo 'Bonjour visiteur';
}

Ici notre code vérifie si la variable de session “prenom” existe. Si c’est le cas, on affiche un message personnalisé. Sinon on affiche un message général.

Comme vous pouvez le voir, on peut afficher une partie ou une autre dépendamment de si la variable existe ou non. Grâce à cette méthode, il n’y aura pas d’erreur si la variable n’existe pas.

Fermer une session en PHP

Comme je l’ai dit, les données de sessions sont temporaires. Vous n’avez pas à les supprimer manuellement. Néanmoins, dans certains cas, il est nécessaire de supprimer la session, par exemple lorsque l’utilisateur se déconnecte.

Vous pourriez aussi simplement vouloir supprimer une variable de la session. Nous allons donc voir dans cette partie comment effectuer cette opération.

Supprimer une variable de session en PHP

Pour supprimer une variable de session en PHP, vous n’aurez besoin que d’une seule ligne de code. Reprenons notre exemple précédent :

<?php
unset($_SESSION['prenom']);
?>

Ici, on utilise une fonction prédéfinie de PHP permettant d’écraser la valeur d’une variable. Ainsi, notre tableau ne la contient plus.

Sauf que, comme je l’ai dit précédemment, il faut impérativement vérifier l’existence d’une variable avant de faire des opérations dessus. Donc, le code précédent devra être écrit ainsi :

<?php
session_start();  
if(isset($_SESSION['prenom']))
    unset($_SESSION['prenom']); 
?>

Ici on vérifie d’abord que la variable existe avec isset() et si c’est le cas, on la supprime avec unset().

Supprimer une session PHP

Voyons maintenant comment supprimer une session PHP. Cette opération détruira toutes les variables retenues dans cette dernière. Sachez néanmoins qu’il est possible de relancer une session par la suite. Vous ne pourrez pas récupérer les anciennes valeurs par contre.

<?php
session_destroy();
?>

C’est aussi simple que ça, il suffit d’appeler cette fonction pour détruire toute trace de la session.

En conclusion

Les Sessions en PHP sont des outils permettant de créer des sites internet avec des logiques complexes. Lorsque l’on veut créer de gros projets, il est presque obligatoire d’utiliser les sessions.

Ces dernières sont très simple à utiliser, il suffit de lancer d’abord la fonction session_start() Attention d’ailleurs à bien le faire en haut de la page et sur chaque fichier utilisant la session.

Ensuite on peut manipuler l’objet $_SESSION comme un simple tableau. Attention toutefois à bien vérifier avec isset() la présence d’une variable avant de l’utiliser pour éviter les bugs.

Si cet article vous as plu, vous pouvez vous abonner à ma newsletter pour recevoir le guide GRATUIT Ultime pour bien débuter la programmation

Vous abonner à notre newsletter

* champ requis

Au plaisir de vous revoir sur mon blog !

Laisser un commentaire

Fermer le menu
×
×

Panier