Timeout sur inactivité

clementga Messages postés 14 Date d'inscription lundi 14 janvier 2008 Statut Membre Dernière intervention 14 décembre 2011 - 14 déc. 2011 à 14:42
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Derniè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 ?

Merci

1 réponse

TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
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 :)
0
Rejoignez-nous