Utilisation des sessions en PHP

Une session est un mécanisme technique permettant de sauvegarder temporairement sur le serveur des informations relatives à un internaute. Ce système a notamment été inventé pour palier au fait que le protocole HTTP agit en mode non connecté. A chaque ouverture de nouvelle session, l'internaute se voit attribué un identifiant de session. Cet identifiant peut-être transmis soit en GET (PHPSESSID ajouté à la fin de l'url), POST ou Cookie (cookie sur poste client) selon la configuration du serveur. Les informations seront quant à elles transférées de page en page par le serveur et non par le client. Ainsi, la sécurité et l'intégrité des données s'en voient améliorées ainsi que leur disponibilité tout au long de la session. Une session peut contenir tout type de données : nombre, chaîne de caractères et même un tableau.

Contrairement à une base de données ou un système de fichiers, la session conserve les informations pendant quelques minutes. Cette durée dépend de la configuration du serveur mais est généralement fixée à 24 minutes par défaut. Le serveur crée des fichiers stockés dans un repertoire particulier.

Les sessions sont particulièrement utilisées pour ce type d'applications :

Lancement d'une session

Pour utiliser les sessions en PHP il faut l'indiquer à PHP avant toute envoie d'information au navigateur.

Il faut lancer les sessions avec le code suivant :

session_start();

Comme le démarrage des sessions doit se faire sur toutes les pages du site, idéalement il faudrait placer cette fonction dans votre fichier index.php

Ecriture et lecture d'une variable de session

Une session est une variable Superglobale comme $_GET ou $_POST qui se nomme $_SESSION. Il s'agit donc d'un tableau associatif que vous allez renseigner (attribuer des valeurs) et parcourir pour consulter les valeurs. Il faut donc lui attribuer des valeurs à sauvegarder temporairement. A vous de donner des noms sensés aux cases du tableau pour facilement retrouver vos valeur et mieux comprendre ce qu'elles contiennent.

Pour enregistrer ou lire une variable de session, il vous faut ajouter un couple clé / valeur au tableau $_SESSION.


// Démarrage de la session (important sinon impossible d'écrire ou lire une session)
session_start();//A placer dans votre index.php 
// Ecriture d'une nouvelle valeur dans le tableau de session $_SESSION['login'] = $email; $_SESSION['prenom'] = $prenom;
// Lecture d'une valeur du tableau de session echo $_SESSION['login'];

Destruction des sessions

Les sessions sont détruites au bout d'un certain temps (environ 20 à 30 minutes). Ce qui peut être long si on ne fait que passer sur un site Internet. Il peut être interessant pour un utilisateur de se deconnecter du site en forcant la destruction de sa session.
Pour cela on utilise la fonction PHP session_destroy();

Dans l'exemple suivant on va s'assurer de ne laisser aucune trace en vidant bien le tableau de session en plus de détruire la session.


<?php
// Démarrage de la session (dans le fichier index.php)
session_start();
// Réinitialisation du tableau de session // On le vide intégralement $_SESSION = array();
// Destruction de la session session_destroy();
// Destruction du tableau de session unset($_SESSION); ?>