Rechercher : dans
Par :

[PHP] detection deconnection d'un client

Dernière réponse le 17 fév 2006 à 16:03:08 ollie314, le 17 fév 2006 à 11:50:43 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « [PHP] detection deconnection d'un client » dans :

1

Zep3k!GnO, le 17 fév 2006 à 13:09:11

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
-->

<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 Zep3k!GnO
On est des rangers mec, des rangers...

Répondre à Zep3k!GnO

2

sebsauvage, le 17 fév 2006 à 13:30:17
  • +2

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)

Répondre à sebsauvage

3

ollie314, le 17 fév 2006 à 15:46:32

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

Répondre à ollie314

4

 Zep3k!GnO, le 17 fév 2006 à 16:03:08

Pas de soucis.. :D
et que ca skate :P Zep3k!GnO

On est des rangers mec, des rangers...

Répondre à Zep3k!GnO