2013-03-16 1 views
0

Je le code suivant sur mon site:Déconnexion utilisateur inactif

session_set_cookie_params(7200, '.website.com', '', false, true); 

Si je navigue mon site, parfois je déconnectera de mon site après les deux heures. Par exemple si je soumets un formulaire, et c'est très frustrant.

Ma question est: comment pourrais-je résoudre ce problème? Est-il possible de déconnecter l'utilisateur uniquement lorsqu'il est INACTIF pendant 2 heures? Et quelle devrait être la première valeur de timeout de session_set_cookie_params?

Répondre

1

Essayez ceci:

$_SESSION['loginTime'] = time(); 
if($_SESSION['loginTime'] < time()+120*60){ logoutfunction(); } 

La partie est 120 les 120 minutes que vous avez spécifié (2 heures). You Vous pourriez être très intelligent et demander à l'utilisateur combien de temps il veut attendre avant de se déconnecter: D

Vous devrez également remplacer le logoutfunction(); par ce que vous voulez que l'utilisateur se déconnecte (probablement utiliser session_destroy(); header("Location: http://yourwebsite.com/login.php");)

S'il vous plaît laissez-moi savoir si vous avez besoin de plus d'aide avec ce :)

+0

Merci! Et quelle valeur dois-je donner au premier paramètre de session_set_cookie_params()? – Jordy

+0

Je suis content que cela ait aidé :) Malheureusement, je ne suis pas familier avec le 'session_set_cookie_params();'. Après avoir fait des recherches, quelque chose comme ça? 'session_set_cookie_params (7400, '.website.com', '', false, true);' J'ai choisi 7400 parce que c'est 200 secondes après l'expiration. Expérimentez avec des temps différents et voyez ce qui fonctionne :) Vous pouvez essayer 'session_set_cookie_params (0, '.website.com', '', false, true);' parce que c'est quand le navigateur se ferme. J'essaierais ça. – Mattios550

+0

P.S. vous pouvez toujours marquer comme la réponse choisie;) – Mattios550

0

vous devez enregistrer dans un temps réel SESSION du dernier déménagement des visiteurs sur votre site Web.

fonction de connexion:

login_user(); 
save_actual_time_in_session(); 

lorsque l'utilisateur est connecté, pour chaque chargement de page faire:

check_if_time_in_session_is_expired(); // if so, do some action, e.g. redirect to login form 
save_actual_time_in_session(); 

(@ solution Mattios550 ne fonctionnera pas car à chaque requête HTTP est la valeur loginTime dans session actualisée à l'heure actuelle afin qu'elle n'expire jamais ...)

+0

Oui, d'accord, merci @aslancz. Jordy êtes-vous d'accord avec l'aspect des fonctions? – Mattios550

+0

+1 ma réponse s'il vous plait? Un peu effronté mais bon;) – Mattios550

+0

J'essaie cela demain :) Merci! – Jordy

Questions connexes