Bonjour,

Nouveau sur le forum, je viens chercher de l'aide à un problème. Soit personne ne l'a rencontré soit c'est tellement simple que je ne vois pas comment faire (et donc personne n'en parle car je n'ai rien trouvé sur le sujet).

Situation : L'utilisateur se connecte à mon site, son status online est enregistré en BDD. S'il se déconnecte manuellement, il passe en offline dans la BDD. Jusque là tout va bien.

Comment mettre le status en offline à la fermeture du navigateur. Certain propose la solution ajax avec onunload ou onbeforeunload comme "activateur" du script. Déjà, avec ce système, la fonction qui doit se lancer au onunload/onbeforeunload se lance au chargement de la page (logique hein...). Au rafraichissement je veux bien mais pas au premier chargement de la page.

Je pensais travailler ainsi avec ce système :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
window.onload=loadingPage('1');
window.onunload=loadingPage('0');	
 
function loadingPage(mode) {
	if (window.XMLHttpRequest) {
		var xmlhttp=new XMLHttpRequest();
	}
	else {
		var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
 
	xmlhttp.onreadystatechange=function() {
		if (xmlhttp.readyState==4 && xmlhttp.status==200) {
			var updateBool=xmlhttp.responseText;
			// Done
			alert(mode+" : "+updateBool);
		}
	}
 
	xmlhttp.open("GET","loading_page.php?mode="+mode,true);
	xmlhttp.send();	
}
du coup l'utilisateur est forcément déconnecté vu que unload/onbeforunload se lance à chaque chargement de page.

En plus, je veux que ça fonction quand l'utilisateur ferme sa dernière fenêtre (en supposant qu'il a ouvert plein d'onglet et de fenêtre du site).

Mon problème ne doit pas être impossible car sur tous les forums il y a un indicateur de membres online. Quand on ferme toutes les fenêtre du forum sur lequel on est, on apparait alors comme hors ligne pour les autres membres.

Bref un casse tête car je ne vois pas du tout comment faire ce truc.