Salut,
Cette question est récurrente, et la réponse ne change pas avec le temps.
Il est impossible de savoir avec certitude quand un visiteur quitte un site. La raison est simple : les applications web ne sont pas des applications client/serveur, la communication se fait dans un seul sens.
Le client demande un document au serveur, qui lui envoie. L'échange s'arrête là.
Qu'un visiteur quitte une page ou bien la laisse ouverte pendant 3 jours, le résultat sera le même pour le serveur, puisqu'il n'aura reçu aucune nouvelle requête.
C'est donc à toi de déterminer à partir de combien de temps sans réponse de la part d'un client, le serveur considère que celui-ci est déconnecté (à moins qu'il ne clique volontairement sur un lien de déconnexion).
Ca, c'est la méthode "oldschool".
Maintenant, tu peux utiliser Javascript pour contrôler un peu mieux. Mais attention : ce n'est pas fiable à 100%. Si un utilisateur désactive Javascript ou utilise un navigateur ne supportant pas javascript (lynx par exemple, ou peut-être un téléphone portable, je ne sais pas s'ils gèrent bien le JS) tu ne pourras pas t'appuyer sur cette technique.
Tu as en gros deux solutions :
- un javascript qui s'exécute lors de la fermeture de la fenêtre et qui appelle un script PHP de déconnexion. Cette méthode a une limite : si le visiteur a 2 pages ouvertes et qu'il en ferme une, ça le compte déconnecté alors que ce n'est pas le cas (et compter en JS combien de fenêtres sur le même site sont ouverte relève de l'irrationnel)
- un javascript qui utilise un objet XmlHTTPRequest qui va, à intervalles réguliers, "pinger" un script, lequel met à jour ta base de données pour garder l'utilisateur "connecté". Cette méthode revient au même que de ne rien faire, sauf qu'elle permet de faire durer une session PHP, et tu peux considérer un temps plus court sans réponse.
J'espère que j'ai été clair... Sinon, ben demande des précisions.
Neige
N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...