par
Nestecha » 18 nov. 2014, 02:21
Oui, ajoute .fr à mon pseudo, tu trouveras tous les moyens de me contacter.
C'est tout à fait possible, cependant les solutions natives ne sont pas très performantes, et assez gourmandes en mémoire.
Donc la meilleure façon c'est de le faire soi même. C'est assez simple.
En gros dans ton code actuel tu écris "$_SESSION['isValid'] = true;", juste en dessous il te suffira d'écrire "$_SESSION['sessionTimer'] = time();"
Ainsi, cette variable sera égale à un timestamp qui correspond à la date actuelle au format UNIX. Donc elle ne changera pas. Cependant, time() lui, change à chaque seconde. Donc il te suffira de vérifier la différence entre les deux variables (sessionTimer et time()), et si elle est supérieure au nombre de secondes que tu veux accorder avant que la session se détruise, alors elle se détruira et l'utilisateur devra se relogger.
Pour se faire, dans ta page de vérification que tu inclues partout, au dessus du premier if, ajoute :
if (isset($_SESSION['sessionTimer']) && (time() - $_SESSION['sessionTimer'] > 1800)) { // si on veut que la session dure 30 minutes maximum
session_unset(); // on supprime la variable $_SESSION utilisée pendant qu'on visite le site
session_destroy(); // on détruit la session stockée
}
Attention ce code est simple pour que tu comprennes l'idée, mais il fera que la session expirera quoi qu'il arrive après 30min. Même si l'utilisateur est actif. Il faudra donc un peu modifier le code, mais comprends déjà ça.
Oui, ajoute .fr à mon pseudo, tu trouveras tous les moyens de me contacter.
C'est tout à fait possible, cependant les solutions natives ne sont pas très performantes, et assez gourmandes en mémoire.
Donc la meilleure façon c'est de le faire soi même. C'est assez simple.
En gros dans ton code actuel tu écris "$_SESSION['isValid'] = true;", juste en dessous il te suffira d'écrire "$_SESSION['sessionTimer'] = time();"
Ainsi, cette variable sera égale à un timestamp qui correspond à la date actuelle au format UNIX. Donc elle ne changera pas. Cependant, time() lui, change à chaque seconde. Donc il te suffira de vérifier la différence entre les deux variables (sessionTimer et time()), et si elle est supérieure au nombre de secondes que tu veux accorder avant que la session se détruise, alors elle se détruira et l'utilisateur devra se relogger.
Pour se faire, dans ta page de vérification que tu inclues partout, au dessus du premier if, ajoute :
[php]if (isset($_SESSION['sessionTimer']) && (time() - $_SESSION['sessionTimer'] > 1800)) { // si on veut que la session dure 30 minutes maximum
session_unset(); // on supprime la variable $_SESSION utilisée pendant qu'on visite le site
session_destroy(); // on détruit la session stockée
}[/php]
Attention ce code est simple pour que tu comprennes l'idée, mais il fera que la session expirera quoi qu'il arrive après 30min. Même si l'utilisateur est actif. Il faudra donc un peu modifier le code, mais comprends déjà ça.