8768 sujets

Développement web côté serveur, CMS

Hello!

Est-il possible de session_destroy après inactivité ?

par exemple l'utilisateur part déjeuner à 12h, je veux qu'à 12h30 la session soit détruite pour l'obliger à se reconnecter. cela est gérable en PHP ? il me semblait que oui.
IL y a quelques paramètres du php.ini avec lesquels tu peux jouer. Sinon, tu stockes la date de la dernière page consultée dans la session, tout simplement.
Modérateur
Salut,

@QuentinC : +1

Je rajouterai également que le session_destroy ne suffit pas. Il faut également vider le $_session. Ne pas utiliser unset(). Ça ne fonctionnera pas non plus. pour vider $_session, tu fais comme ceci :

$_session = array(); //array vide
Modérateur
JENCAL a écrit :

par exemple l'utilisateur part déjeuner à 12h, je veux qu'à 12h30 la session soit détruite


Si tu veux pas trop te casser la tête, tu testes avec un cookie (durée de validité). Il est évident que dans le cookie, tu ne vas pas mettre une info sensible. Smiley cligne
Ok je suis d'accord avec vous.

Mais comment déclencher ces event (effacer session, vider cooki) à un moment donner ?
a écrit :
Mais comment déclencher ces event (effacer session, vider cooki) à un moment donner ?


Un concept clé à bien comprendre, c'est que si l'utilisateur est parti à 12h, on ne supprime pas la session à 12h30 pile. Si l'utilisateur revient à 13h, sa session est toujours active et c'est lors de sa reconnexion qu'on déclenche la suppression parce qu'on constate à ce moment-là que le temps est expiré. En fait à 12h45 sa session existe toujours, mais on s'en fout royalement puisqu'il n'est pas là pour le voir. ON pourrait ordonner la suppression à 12h30 pile avec un cron, mais c'est complètement inutile (et à grande échelle, totalement irréalisable)

JE me permets un parralèle que tu connais peut-être. IL existe pas mal de jeux sur Internet où le but est d'accumuler des ressources pour construire une armée et attaquer les autres joueurs. Dans ce type de jeu, on t'indique souvent que tu gagnes X ressources par minute, par heure ou par jour. Ce qu'il faut comprendre ici c'est que tous les compteurs de tous les joueurs ne sont pas mis à jour en permanence, les serveurs ne suivraient pas (il y a des millions de joueurs !). C'est seulement quand le joueur charge une page que son compteur personnel, et seulement celui-ci, est effectivement mis à jour. C'est du faux temps réel mais on s'en fout complètement. Tant qu'il ne se connecte pas il ne peut pas le voir. Lui de son côté quand il revient, il ne voit que du feu et il croit que c'est bien évidemment temps réel, c'est tout ce qu'on voulait.
Merci pour ces explications, je comprend mieux! et ça aurait du me paraître fortement logique avant.