Gestion + durée des sessions en PHP
Résolu/Fermé
Coutcout86
totodunet
- Messages postés
- 195
- Date d'inscription
- lundi 23 novembre 2009
- Statut
- Membre
- Dernière intervention
- 26 mai 2016
totodunet
- Messages postés
- 1377
- Date d'inscription
- mercredi 18 mars 2009
- Statut
- Membre
- Dernière intervention
- 5 mars 2020
A voir également:
- Durée session php
- Combien de temps une variable de session est-elle mémorisée par le serveur ? - Meilleures réponses
- Php durée session - Meilleures réponses
- Gestion + durée des sessions en PHP ✓ - Forum - PHP
- Une session php a été créée par un appel de fonction session_start(). cela interfère avec l’api rest et les requêtes de boucle ( ✓ - Forum - PHP
- Duree session teamviewer ✓ - Forum - Système
- Fusion de sessions PHP - Conseils pratiques - PHP
- Comment creer une session php pour plusieurs pages ? ✓ - Forum - Webmaster
2 réponses
lolerki
Modifié par lolerki le 18/02/2015 à 09:56
- Messages postés
- 606
- Date d'inscription
- lundi 21 avril 2008
- Statut
- Membre
- Dernière intervention
- 1 mars 2017
Modifié par lolerki le 18/02/2015 à 09:56
Bonjour,
Je ne comprends pas trop ton problème, mais si tu veux te déconnecter session_destroy est OBLIGATOIRE pour toutes déconnexion d'un utilisateur.
En ce qui concerne la durée je te conseil de crée un cookie avec une durée déterminé, comme cela il expire au bout d'un temps donnée. N'oublie pas de le détruire (avec un temps inférieur au cookie crée) lors du session_destroy
PS : J'ai eu un problème avec les cookie je te donne mon sujet (résolu) cela te permettra de voir comment détruire une session.
https://forums.commentcamarche.net/forum/affich-31184976-detruire-une-session
Je ne comprends pas trop ton problème, mais si tu veux te déconnecter session_destroy est OBLIGATOIRE pour toutes déconnexion d'un utilisateur.
En ce qui concerne la durée je te conseil de crée un cookie avec une durée déterminé, comme cela il expire au bout d'un temps donnée. N'oublie pas de le détruire (avec un temps inférieur au cookie crée) lors du session_destroy
PS : J'ai eu un problème avec les cookie je te donne mon sujet (résolu) cela te permettra de voir comment détruire une session.
https://forums.commentcamarche.net/forum/affich-31184976-detruire-une-session
totodunet
18 févr. 2015 à 10:49
- Messages postés
- 1377
- Date d'inscription
- mercredi 18 mars 2009
- Statut
- Membre
- Dernière intervention
- 5 mars 2020
18 févr. 2015 à 10:49
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.
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.
Coutcout86
18 févr. 2015 à 10:54
- Messages postés
- 195
- Date d'inscription
- lundi 23 novembre 2009
- Statut
- Membre
- Dernière intervention
- 26 mai 2016
18 févr. 2015 à 10:54
Bonne question pour le session_start et effectivement je ne l'est pas fait à toute les pages PHP.
Faut-il le faire pour chaque page PHP ?
Faut-il le faire pour chaque page PHP ?
lolerki
18 févr. 2015 à 10:58
- Messages postés
- 606
- Date d'inscription
- lundi 21 avril 2008
- Statut
- Membre
- Dernière intervention
- 1 mars 2017
- Messages postés
- 195
- Date d'inscription
- lundi 23 novembre 2009
- Statut
- Membre
- Dernière intervention
- 26 mai 2016
18 févr. 2015 à 10:58
Oui chaque page php ou tu en n'a besoin
Coutcout86
18 févr. 2015 à 11:07
- Messages postés
- 195
- Date d'inscription
- lundi 23 novembre 2009
- Statut
- Membre
- Dernière intervention
- 26 mai 2016
18 févr. 2015 à 11:07
Je suis peut être bête mais pourquoi alors sur certaines pages PHP (ou je n'ai pas de session_start()) je récupère quand les informations de mon utilisateur connecté ?
lolerki
18 févr. 2015 à 11:24
- Messages postés
- 606
- Date d'inscription
- lundi 21 avril 2008
- Statut
- Membre
- Dernière intervention
- 1 mars 2017
18 févr. 2015 à 11:24
Tu utilise bien la variable super globale session ? Sinon cela veux dire que tu as un sessions_start() dans un include
Coutcout86
18 févr. 2015 à 11:39
- Messages postés
- 195
- Date d'inscription
- lundi 23 novembre 2009
- Statut
- Membre
- Dernière intervention
- 26 mai 2016
18 févr. 2015 à 11:39
Oui j'utilise la super globale session pourquoi ? Je viens d'ajouter un session_start sur chacune de mes pages PHP.
Autre question du coup : Pour le session_set_cookie_params(0) il faut aussi le mettre sur toutes les pages PHP ?
Autre question du coup : Pour le session_set_cookie_params(0) il faut aussi le mettre sur toutes les pages PHP ?
18 févr. 2015 à 10:43
Je fais des insertions dans une base de données avec le nom de l'utilisateur connecté or quand la session n'existe plus je n'ai plus d'utilisateur donc ça pose problème. Ensuite je donne accés à des fonctionnalités selon le rôle de l'utilisateur or lorsque la session n'existe plus le rôle n'existe plus non plus et la fonctionnalité n'est plus présente.
Est-ce que tu comprends mieux ma problématique?
Modifié par lolerki le 18/02/2015 à 10:47
PS : pourquoi mettre un utilisateur connecter dans la bdd ?
18 févr. 2015 à 10:53