clementga
Messages postés14Date d'inscriptionlundi 14 janvier 2008StatutMembreDernière intervention14 décembre 2011
-
14 déc. 2011 à 14:42
TychoBrahe
Messages postés1309Date d'inscriptionsamedi 31 janvier 2009StatutMembreDernière intervention 5 juin 2013
-
14 déc. 2011 à 17:29
Bonjour,
J'ai un site fait en php, avec un système de login classique utilisant les variables de session.
Mais je voudrais mettre un timeout sur l'inactivité d'un utilisateur, c'est-à-dire que je voudrais que l'utilisateur soit redirigé vers la page de login si il n'a rien fait sur le site depuis 10minutes.
J'ai essayé en paramétrant le php.ini, en mettant :
session.cookie_lifetime = 600
session.gc_maxlifetime = 600
Donc cela marche dans le sens où au bout de 10 minutes je suis bien redirigé vers la page de login, mais je suis redirigé vers cette page même si je fais des choses sur le site pendant ces 10 minutes.
Est ce que j'ai oublié des paramètres dans php.ini ?
Est ce que cela se configure dans httpd.conf d'apache ?
TychoBrahe
Messages postés1309Date d'inscriptionsamedi 31 janvier 2009StatutMembreDernière intervention 5 juin 201312 14 déc. 2011 à 17:29
Salut,
En gardant cette manière de faire, tu devrais pouvoir t'en sortir en utilisant session_regenerate_id() à chaque action de l'utilisateur. A tester, ce n'est pas sûr que ça fonctionne.
Après tu peux stocker quelque aprt un temps limite d'utilisation. À chaque action :
1. Tu récupère ce temps limite et regarde s'il est dépassé.
2. Si le temps est dépassé, tu détruit la session et redirige l'user. Si le temps n'est pas dépassé, tu le met à jour avec le temps courant.
Tout ceci se fais très simplement avec un DateTime ou un timestamp. Pour stocker tu n'as que l'embaras du choix : variable de session, base de donnée ou autre. Bien entendu il ne faut pas oublier serialize() si on stock un DateTime :)