Forcer les utilisateurs à se déconnectent lorsqu'ils quittent mon site php?

StackOverflow https://stackoverflow.com/questions/2510839

  •  22-09-2019
  •  | 
  •  

Question

Dans mon application php, j'utilise _SESSION $ pour suivre si un utilisateur est connecté. Si un utilisateur quitte une page sur mon site à http://mysite.com et va http://someotherwebsite.com , je voulez les connecter automatiquement, de sorte que si elles reviennent à une page sur http://mysite.com , ils ont besoin pour se connecter à nouveau.

Y at-il un moyen facile de le faire?

Était-ce utile?

La solution

Vous ne pouvez pas dire explicitement lorsqu'un utilisateur feuilles votre site, votre meilleur pari serait d'être à mettre en œuvre un délai d'attente de vos sessions.

Comme la plupart des réponses ont dit, vous peut vérifier avec l'événement JavaScript onbeforeunload mais l'utilisateur peut contourner ce en désactivant JavaScript ou, comme BalusC a souligné , à l'aide d'un navigateur Web qui ne le supporte pas, comme Opera.

Par conséquent, je crois fermement en place un délai d'attente de vos sessions est la meilleure façon de forcer une fermeture de session.

Autres conseils

Vous pouvez effectuer un appel AJAX dans le onbeforeunload événement à un script côté serveur qui va tuer la session.

À l'exception de mettre un délai d'attente sur vos sessions - pas vraiment. La seule façon qui vient à l'esprit est l'événement onbeforeunload JavaScript qui se déclenche lorsque l'utilisateur quitte la page en cours, mais cet événement ne sait pas l'utilisateur va. Vous pourriez cependant, si vous vraiment veulent le faire, peut-être construire quelque chose basé sur la solution de contournement hacky suivante (non testé):

  • créer un événement de onbeforeunload qui envoie un appel AJAX à votre serveur. (Comment faire avec succès - si l'appel passe à travers avant que la page se ferme -. Est une question propre, une recherche « onbeforeunload ajax » sur devraient SO donner des résultats

  • L'appel Ajax commencerait un compte à rebours en disant que la session de l'utilisateur est sur le point de mourir, disons, quinze secondes.

  • Si l'utilisateur quitte votre site, le compte à rebours s'applique.

  • Si l'utilisateur va vers une autre page sur votre site, vous désactivez les comptes à rebours « mourir » quand au service de la page suivante.

Il est susceptible d'être fragile car il pourrait arriver qu'une requête Ajax à partir un compte à rebours arrive au niveau du serveur après la page suivante a déjà éliminé que le compte à rebours. Mais si vous avez vraiment besoin de faire cela, cela peut être une direction. Fonctionne pour les utilisateurs avec JS activés uniquement, bien sûr.

Une deuxième idée comment mettre en œuvre ce serait de mettre un délai extrêmement faible sur les sessions (par exemple 90 secondes), et de mettre iframe sur chaque page que vous servez. Ce iframe serait alors faire un appel à la page toutes les 60 secondes.

Ceci fonctionnerait sans JavaScript, mais pourrait créer des bruits gênants cliquetis dans les anciennes versions d'Internet Explorer (je ne sais pas si cela est arrêté à 6 ou 7?)

Vous ne pouvez pas (mais vos sessions chronométrer automatiquement après un certain temps, de sorte que vous pouvez définir le délai d'attente à un court laps de temps).

D'après ce que je sais à propos de PHP (ce qui est peu) serait votre application connaîtrai jamais ils ont quitté le site? Si vous allez à someotherwebsite.com, votre code n'est pas appelé à nouveau jusqu'à ce qu'ils reviennent.

Malheureusement, pas vraiment, Ceci est l'un des gros problèmes avec les applications web. Vos applications n'a aucun moyen de savoir que le navigateur est passé à un autre site Web.

ChristohpeD mentionne que vous pouvez définir le délai d'expiration de la session. Rappelez-vous que votre site ne rafraîchira le moment où le serveur reçoit un message ou une sorte de javascript ping.

Hope qui aide

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top