Gestion + durée des sessions en PHP
Résolu
Bonjour,
Je suis en train de développer une application en PHP et j'utilise les sessions.
Pour comprendre un peu mon application j'ai un système d'authentification avec un login et un mot de passe.
Lorsque l'utilisateur est connecté une session est créée.
Or je n'ai pas touché à la durée des sessions et au bout d'un certain moment (valeur par défaut du PHP.ini je suppose) je perds ma session et donc mon utilisateur.
Alors ne sachant pas trop comment m'y prendre concernant la gestion des sessions je souhaite avoir de l'aide
Ce que j'aimerais c'est tester si la session est expirée ou non et si elle est expirée on retourne à la page d'authentification (ou on se déconnecte).
Alors j'ai bien pensé au session_destroy mais je ne sais pas si c'est la meilleure solution.
Pourriez-vous m'aider à résoudre cette problématique ?
Merci d'avance.
Je suis en train de développer une application en PHP et j'utilise les sessions.
Pour comprendre un peu mon application j'ai un système d'authentification avec un login et un mot de passe.
Lorsque l'utilisateur est connecté une session est créée.
Or je n'ai pas touché à la durée des sessions et au bout d'un certain moment (valeur par défaut du PHP.ini je suppose) je perds ma session et donc mon utilisateur.
Alors ne sachant pas trop comment m'y prendre concernant la gestion des sessions je souhaite avoir de l'aide
Ce que j'aimerais c'est tester si la session est expirée ou non et si elle est expirée on retourne à la page d'authentification (ou on se déconnecte).
Alors j'ai bien pensé au session_destroy mais je ne sais pas si c'est la meilleure solution.
Pourriez-vous m'aider à résoudre cette problématique ?
Merci d'avance.
2 réponses
-
Salut
Pour savoir si la session existe toujours, tu peux faire un isset($_SESSION) mais cela m'étonne quand même qu'elle expire comme ça. Par défaut elles sont toujours actifs tant que l'utilisateur est connecté et a le navigateur ouvert. Fais-tu bien session_start() à chaque début de page PHP ?
Tu peux regarder dans php.ini si session.cookie_lifetime est initialisé par défaut à 0. Cela veut dire que le client gardera le cookie de session jusqu'à la fermeture du navigateur ou à sa déconnexion.
Normalement il n'y a pas besoin de créer des cookies pour gérer les sessions (sauf dans certains cas comme pour être reconnecté automatiquement pendant plusieurs jours) car c'est ce que fait déjà le mécanisme de session en PHP si elle n'est pas transmise par URL. Pour modifier la durée du cookie de session, faut utiliser session_set_cookie_params() et mettre en paramètre le temps en minutes de la durée de vie du cookie de session.
session_set_cookie_params(0) => meurt à la déconnexion ou à la fermeture du navigateur seulement
session_set_cookie_params(120) => meurt au bout de 2 heures et pas avant (même si on ferme le navigateur et qu'on le rouvre avant l'heure d'expiration, il sera toujours là et tu seras connecté) sauf si bien sûr on se déconnecte
Le session_destroy() va détruire ta session dans tout les cas, côté serveur et côté client.
-
-
@Coutcout86Oui chaque page php ou tu en n'a besoin
-
-
-
-