Nous avons souvent besoin de stocker plus d'informations dans cookies, mais la limite maximale pour les cookies est de 4 kB, ce qui est peu. Sessions résout ce problème en stockant les données sur le serveur web, et ne stocke qu'un court identifiant dans le navigateur du client pour savoir quelles données appartiennent à quel client.
Avant de travailler sur les sessions, nous devons d'abord les démarrer. Cela se fait en appelant la fonction session_start()
au début du script :
session_start();
Avertissement fort : aucune sortie vers le code HTML ne doit être exécutée avant d'appeler la fonction
session_start()
!
Le contenu de la session est stocké sur le serveur et seul l'identifiant est envoyé au navigateur du client. L'utilisateur n'a donc aucun moyen de savoir ce qui est stocké dans la session. La seule façon pour le script d'affecter l'utilisateur est de supprimer l'identifiant (auquel cas le script en génère un nouveau).
Toutes les sessions sont stockées dans la variable superglobale $_SESSION
et peuvent être parcourues comme un tableau.
Par exemple, le nom de l'utilisateur actuellement connecté peut être récupéré en écrivant :
echo $_SESSION['utilisateur'];
Note : La session peut ne pas toujours exister (par exemple, si vous êtes un nouvel utilisateur). Par conséquent, nous devrions toujours vérifier l'existence de ces messages avant toute inscription et proposer un autre message d'erreur si nécessaire.
if (isset($_SESSION['utilisateur']) && $_SESSION['utilisateur']) {echo 'Utilisateur connecté :' . $_SESSION['utilisateur'];} else {echo 'Personne ne s'est connecté.';}
La sauvegarde se fait comme un simple enregistrement de données dans une variable :
$_SESSION['utilisateur'] = 'Honzik';
Le serveur web se chargera de la disposition technique du stockage correct sur le serveur et de l'envoi de l'identifiant à l'utilisateur.
Nous pouvons supprimer les valeurs individuelles séparément en fonction de la clé :
unset($_SESSION['utilisateur']);
Ou alternativement toutes les sessions disponibles :
unset($_SESSION);
Note : La suppression d'une session spécifique ne vide pas la valeur de la clé, mais supprime complètement la clé. Par conséquent, un message d'erreur sera émis si l'on tente de lire une clé inexistante. On peut toujours vérifier facilement l'existence d'une clé avec la fonction
isset()
.
Chaque session enregistrée a une limite de durée de conservation sur le serveur. PHP contient directement un script cron qui supprime périodiquement les anciennes sessions.
La valeur par défaut est généralement 1440 secondes
, soit 24 minutes
.
L'augmentation de la valeur doit se faire à deux endroits :
php.ini
, on définit la longueur maximale de validité que le serveur conservera. La valeur est définie par la directive session.gc_maxlifetime
,Utilisation en PHP :
// le serveur maintiendra la session jusqu'à 3600 secondes = 1 heure.ini_set('session.gc_maxlifetime', '3600');// tous les clients (navigateurs) seront// session envoyée avec une validité d'exactement 3600 secondessession_set_cookie_params(3600);session_start(); // nous pouvons commencer la session !
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | fr