Comment détecter si un utilisateur s'est déconnecté, en PHP?
Après que l'utilisateur se connecte avec succès, j'magasin login = true dans la base de données. Mais comment puis-je vérifier si l'utilisateur connecté par la fermeture du navigateur sans cliquer sur le bouton de déconnexion? Et aussi, comment puis-je rediriger l'utilisateur qui a été inactif pendant 10 minutes à la page de connexion?
Je suis à l'aide de php et mysql. Toute aide serait appréciée.
EDIT:
Désolé si ma question n'est pas claire. J'ai fait d'utiliser de session pour stocker qu'ils soient connectés ou non. Mais, maintenant, je veux stocker les infos dans la base de données, afin que je puisse afficher leur statut sur d'autres pages. Disons que user1 a 3 amis. Lors de l'affichage de tous ses amis, user1 voulez savoir si ses amis sont en ligne ou hors ligne. C'est ce que je veux. Tout conseiller?
source d'informationauteur | 2009-05-20
Vous devez vous connecter pour publier un commentaire.
2017 edit: Ces jours-ci, votre meilleur pari est d'utiliser les websockets pour suivre présence sur une page/site.
Vous ne pouvez pas détecter lorsque l'utilisateur ferme son navigateur ou navigue hors de votre site avec PHP et le JavaScript les techniques qui en découlent sont donc loin d'être garanti d'être inutile.
Au lieu de cela, votre meilleur pari est le plus susceptible de stocker chaque utilisateur de la dernière période d'activité.
Stocker le timestamp de chaque acitivité de l'utilisateur. Lorsque ce temps est plus que 10 minutes plus tôt, faire la déconnexion.
En PHP, vous pourriez faire quelque chose comme ceci:
La même chose peut être fait sur la base de données à la place. De là, vous pouvez même obtenir une liste des utilisateurs qui sont actuellement en ligne”.
Vous vous demandez si vous pouvez détecter si un utilisateur ferme son navigateur. Vous kinda peut avec javascript mais je ne voudrais pas compter sur elle (comme javascript est facile à désactiver), Mais vous ne pouvez pas avec PHP, PHP s'exécute uniquement lorsque vous demandez une page. Pas quand la page est ouverte.
Pour être sûr, vous devriez suivre l'utilisateur la dernière activité et si c'est passé quelques minutes (5/10) alors supposer que l'utilisateur s'en est allée. S'il fait quelque chose de nouveau (après 6 minutes par exemple), alors il est de retour en ligne.
Si vous essayez de suivre les utilisateurs qui sont en ligne, alors vous pourriez envisager d'utiliser une session pour l'utilisateur individuel et au lieu de stocker le login=true dans la db pour afficher leur statut ou à d'autres, boutique de la dernière période d'activité de l'utilisateur. Lorsque vous tirez vers le haut de votre liste des utilisateurs en ligne, créer votre requête sql afin de retourner uniquement les utilisateurs dotés de last_activity' dans les 10 dernières minutes.
Il pourrait être préférable de les stocker login=true dans une variable de session pour vérifier si l'utilisateur est connecté. Cela permettrait de résoudre la plupart de vos problèmes 😉
Normalement vous devez mettre ces informations à des séances.
Puis, quand vous voulez déconnexion, vous n':
Quelques infos sur les sessions ici et un tutoriel.
Pourquoi ne pas vous utiliser de la session ou cookies pour cela, au lieu de les insérer dans la base de données.
Vous pouvez paramétrer les cookies en utilisant la fonction setcookie() de la fonction, ou vous pouvez faire une séance vaiable et de stocker la valeur dans.
Vous trouverez qu'il est préférable d'utiliser la session de surveiller l'état de connexion.
Lire cette information sur les sessions
Autant que je sache, il n'existe aucun moyen pour vous de vérifier si une personne ferme la fenêtre du navigateur (ou vous laisse la page pour accéder à un autre) si vous avez besoin de vérifier l'activité que d'autres ont suggéré ci-dessus.
C'est une extension de ce que " ceejayoz ' a dit avant.
Laisser les utilisateurs périodiquement la commande ping sur le service et disent qu'ils sont toujours connectés. Magasin de dernier de ping fois dans la session. Si le dernier de ping session est supérieure à une heure, puis ping à nouveau pour dire que l'utilisation est encore en vie.
Stocker le moment où vous avez reçu le ping dans la base de données. Si le dernier de ping reçu > le keeplive seuil, puis envisager l'utilisateur a quitté le site.
Le voici un exemple de code non testé pour vous commencer. Vous pouvez utiliser le "PING__FRÉQUENCE" pour contrôler la fréquence à la fréquence à laquelle l'activité de l'utilisateur sera mise à jour du last_activity colonne.
À mon humble avis, le meilleur moyen est de stocker la dernière activité d'horodatage en DB sur chaque mise à jour de l'enregistrement de l'utilisateur. Après la fermeture de session ou timeout (gérer les dépassements de délais avec cronjob) il suffit de le mettre à zéro la valeur et l'utilisation de pavillon.
Vous aurez parfois besoin de dire qch. comme "vu la dernière fois ...", puis quitter la dernière activité et il suffit d'ajouter un indicateur booléen (tinyint) logged_in à votre table des utilisateurs.
Vous pouvez le faire avec une combinaison de moyens, 2 au plus je pense que l'on dérange sur la dernière activité, vous le combinez avec l'utilisation de jQuery pour vérifier pour d'inactivité, c'est pas la souris ou le clavier événements pendant un certain temps, disons environ 10 à 20 minutes, puis une fois que le temps d'inactivité est confirmé, vous effectuez un appel ajax vers un fichier php qui va mettre à jour votre table de base de données montrant l'utilisateur en mode hors connexion.
Vous pouvez commencer avec: