[PHP] detection deconnection d'un client
Résolu
ollie314
Messages postés
145
Date d'inscription
Statut
Membre
Dernière intervention
-
Vidda -
Vidda -
Bonjour
Je suis en guerre avec un programme. Je dois réaliser une fonction qui génère un log lors de la deconnexion d'un client. Si l'opération est simple lorsque le client se déconnecte "normalement" (en cliquant sur le bouton déconnection) les choses se compliquent lorsque l'utilisateur erme son navigateur brutalement.
J'ai fais quelques tests et je me suis apperçu que apache associait les variables globales à un id de socket (socket de connection du client au serveur semble t-il...) et lorsque l'on coupe le navigateur, les variables semblent être détruite. Je ne sais pas si c'est une fonction C qui n'a pas d'équivalent php (ce que je redoute) ou si c'est une action déclenché par le serveur et qu'il est possible de récuperer (recuperation de l'evenment lancant l'action).
J'aimerais savoir si quelqu'un sait comment intercepter l'evenement de destruction de la socket via un script php ou si quelqu'un a une idée pour réaliser l'opération différemment.
Remarque : je ne dois pas utiliser de cookies (pour simplifier les choses :o) )
Je vous remercie par avance pour vos réponses !!
Cordialement
Ollie314
Je suis en guerre avec un programme. Je dois réaliser une fonction qui génère un log lors de la deconnexion d'un client. Si l'opération est simple lorsque le client se déconnecte "normalement" (en cliquant sur le bouton déconnection) les choses se compliquent lorsque l'utilisateur erme son navigateur brutalement.
J'ai fais quelques tests et je me suis apperçu que apache associait les variables globales à un id de socket (socket de connection du client au serveur semble t-il...) et lorsque l'on coupe le navigateur, les variables semblent être détruite. Je ne sais pas si c'est une fonction C qui n'a pas d'équivalent php (ce que je redoute) ou si c'est une action déclenché par le serveur et qu'il est possible de récuperer (recuperation de l'evenment lancant l'action).
J'aimerais savoir si quelqu'un sait comment intercepter l'evenement de destruction de la socket via un script php ou si quelqu'un a une idée pour réaliser l'opération différemment.
Remarque : je ne dois pas utiliser de cookies (pour simplifier les choses :o) )
Je vous remercie par avance pour vos réponses !!
Cordialement
Ollie314
A voir également:
- [PHP] detection deconnection d'un client
- Cybera client - Télécharger - Divers Réseau & Wi-Fi
- Filezilla client - Télécharger - Téléchargement & Transfert
- Comment détecter un traceur sur téléphone - Accueil - Confidentialité
- Detection materiel pc - Guide
- Easy php - Télécharger - Divers Web & Internet
3 réponses
euh... HTTP est un protocole en mode déconnecté.
Il n'y a pas de notion de "déconnexion".
(Tout au plus une fermeture du socket TCP, mais ça ne veut absoluement rien dire, tout dépend si le client fait du pipelining ou non.)
Seule les cookies permettent de faire le lien entre 2 requêtes HTTP du même utilisateur.
La solution consiste à considérer que l'utilisateur est déconnecté si on a pas reçu de requête HTTP contenant son cookie de session pendant n minutes.
(Ce n étant à déterminer par toi)
Il n'y a pas de notion de "déconnexion".
(Tout au plus une fermeture du socket TCP, mais ça ne veut absoluement rien dire, tout dépend si le client fait du pipelining ou non.)
Seule les cookies permettent de faire le lien entre 2 requêtes HTTP du même utilisateur.
La solution consiste à considérer que l'utilisateur est déconnecté si on a pas reçu de requête HTTP contenant son cookie de session pendant n minutes.
(Ce n étant à déterminer par toi)
Salut,
bin moi à la rigueur ce que je verrai bien c'est que sur les pages sur lesquels ton client va, il faut qu'il y ai le descripteur d'événement onUnload dans body
-->
avec monaction() qui est une fonction javascript qui réalise le traitement voulu à la fermeture de la page..
C'est tout ce que moi je peux te conseiller.
Bon Courage
bin moi à la rigueur ce que je verrai bien c'est que sur les pages sur lesquels ton client va, il faut qu'il y ai le descripteur d'événement onUnload dans body
-->
<body onUnLoad="javascript:monaction()">
avec monaction() qui est une fonction javascript qui réalise le traitement voulu à la fermeture de la page..
C'est tout ce que moi je peux te conseiller.
Bon Courage
Bonjour,
Merci pour les conseils.
¨La solution consistant à faire un body OnUnload est assez efficace. On appel le script php sur le serveur et le log est crée. Je ne sais pas si il peut y avoir des restrictions mais dans mon cas ça marche. C'est redoutable !!
Merci
Cordialement
ollie314
Merci pour les conseils.
¨La solution consistant à faire un body OnUnload est assez efficace. On appel le script php sur le serveur et le log est crée. Je ne sais pas si il peut y avoir des restrictions mais dans mon cas ça marche. C'est redoutable !!
Merci
Cordialement
ollie314
Bonjour,
Efficace mon oeil! Quand la machine redémarre de façon intempestive, il n'y a aucun moyen que le navigateur exécute du javascript, AJAX synchrone ou non, puisque le navigateur AUSSI se retrouve fermé. Que ce soit sur une commande exit ou une coupure de courant voire une panne machine.
Sebsauvage nous met sur la bonne voie mais la réponse reste incomplète, malheureusement. Mais à suivre...
Efficace mon oeil! Quand la machine redémarre de façon intempestive, il n'y a aucun moyen que le navigateur exécute du javascript, AJAX synchrone ou non, puisque le navigateur AUSSI se retrouve fermé. Que ce soit sur une commande exit ou une coupure de courant voire une panne machine.
Sebsauvage nous met sur la bonne voie mais la réponse reste incomplète, malheureusement. Mais à suivre...