6
votes

Utilisateur d'alerte Si la session va expirer, option pour renouveler la session

Je cherche toute la journée pour une solution PHP ou JavaScript pour le faire.

Je voudrais alerter l'utilisateur que leur session est sur le point de terminer (popup), de pouvoir prolonger la durée de la session.

Voici un visuel Si vous en avez besoin d'un sur Cette page

EDIT:

jQuery est le cadre si cela aide


0 commentaires

3 Réponses :


4
votes

C'est relativement facile:

  • Construisez une minuterie JavaScript qui incendie dans (session Lifetime - 5 min) minutes en utilisant Settimeout

  • avoir la fonction Settimeout Afficher une boîte de dialogue de confirmation, par ex. Utilisation de dialogue JQuery UI

  • Si l'utilisateur souhaite prolonger la session, effectuez une demande AJAX à un fichier PHP. Si le fichier utilise des sessions, cela fonctionnera pour "toucher" la durée de vie de la session

  • Après avoir effectué la demande, définissez un autre SetTimeout qui ira à la suite de l'expiration de la session.



4
votes

Je suggérerais une approche différente; Il suffit de rafraîchir la session pour l'utilisateur de toute façon. La plupart des sessions non désirées-décès se produisent à cause de

  • Un long phonecall li>
  • Une visite inattendue li>
  • une réunion li> ul>

    et avec une boîte de dialogue de confirmation, la session serait déjà morte au moment où votre utilisateur revient - Ajout uniquement de confusion. P>

    à la place: P>

    var refresh_session = function () {
        $.get("/refresh_session.php");
    },
    
    fifteen_minutes = 15 * 60 * 1000;
    
    setInterval(refresh_session, fifteen_minutes);
    


3 commentaires

C'est une excellente option également, mais j'ai besoin d'être utilisé pour faire appel à l'appel. C'est une session de 6 minutes, si aucune activité, je n'ai toujours pas besoin d'eux pour être déconnecté


C'est juste :-) Mais vous devriez alors effectuer votre propre boîte de dialogue de confirmation. Vous pouvez donc la supprimer à nouveau lorsque la session est connue pour être morte et informerait l'utilisateur ce qui s'est passé.


Une partie de la session Time Out est la sécurité - forçage de la session à garder en vie est correcte dans certains cas, mais l'utilisateur devrait pouvoir opter pour cela. Dépend de la sensibilité du contenu



0
votes

Vous pouvez éviter le problème en ayant un script qui renvoie une image de pixel 1x1 sur une minuterie JS. L'idée est que vous commencez avec un script PHP comme celui-ci (non sûr si l'en-tête appelle ici est parfaitement correct ..): XXX

MAINTENIR, avez le JavaScript Seinterval Fonction Appelez ce script à un intervalle approprié (c'est-à-dire moins que l'intervalle de session GC). Étant donné que l'image est servie à partir de PHP, il met à jour votre session, les sessions de votre utilisateur sont donc prises en sorte que les sessions de votre utilisateur ne soient pas terminées tant qu'ils restent sur votre site.


2 commentaires

Nous gardons l'utilisateur connecté si elles sont actives, cela ne se produirait que si l'utilisateur est actif (comme ils sont sur le téléphone ou quelque chose), souhaitent alerter / donner une option pour prolonger la session avant son expiration.


Ok, donc l'alerte apparaît après x minutes disant "Voulez-vous prolonger votre session" et l'utilisateur est toujours au téléphone et ne répond pas avant 10 minutes plus tard lorsque la session a déjà été gc'd sur le serveur . Je ne pense pas que votre idée de choisir l'utilisateur est une bonne, vous êtes coincé dans un poulet et un œuf.