Tester la fermeture d'une page

Résolu/Fermé
Lobor Messages postés 12 Date d'inscription vendredi 4 mars 2011 Statut Membre Dernière intervention 16 mars 2011 - Modifié par Lobor le 4/03/2011 à 10:55
Lobor Messages postés 12 Date d'inscription vendredi 4 mars 2011 Statut Membre Dernière intervention 16 mars 2011 - 12 mars 2011 à 12:31
Bonjour,

Le but est de savoir si la personne quitte le site ou non, si oui, alors dans la BDD on met le champs connexion à 0.

Je souhaiterais faire une boucle en javascript, par exemple une boucle qui calcule la racine carrée de un, et lorsque le navigateur est fermé, si le script n'est pas terminer, lancer un script php en ajax, pour la deconnecter de la BDD.

C'est une idée de faire, il en existe plusieur. Si vous en avez d'autre je suis a votre écoute.

Je gère la session, mais comment faire pour lancer un script php ou autre (Donc mettre connexion à 0) quand la session a expiré ?

Ca fait deus semaine que je cherche sur Google (Google est ton ami) mais je en trouve pas.

Merci



5 réponses

Utilisateur anonyme
4 mars 2011 à 11:34
Bonjour,

Vous devriez pouvoir utiliser l'événement JS onUnload sur le BODY, qui se déclenche quant on ferme la page.
L'événement lance un script Ajax qui lance votre script de déconnexion et qui ne renvoie rien.

Enfin c'est une piste.
0
Lobor Messages postés 12 Date d'inscription vendredi 4 mars 2011 Statut Membre Dernière intervention 16 mars 2011
4 mars 2011 à 11:56
Oui je connais cette méthode, mais le problème est que si la personne change de page, le script est appeler.

J'ai trouvé cela qui gère assez bien ce problême.

https://forums.commentcamarche.net/forum/affich-12240343-javascript-savoir-quand-l-onglet-est-ferme

Le problème mnt c'est de connaître si la personne actualise ou non la page.
J'ai trouver la fonction blind ou bind, mais je en comprends pas très bien a quoi elle sert (ça na peut-être rien à voir).

Donc je résume, il faut trouver un moyen de savoir si la personne actualise ou non la page.

Par exemple est-il possible de récupere l'url, de tester si dans cette url il y a www.nomdedomaine.com, s'il y est, c'est qu'on reste sur le site, sinon c'est qu'on a quitter le site et cela lance un script de deconnexion


Je pense qu'on peut faire tout ce que l'on veut, faut juste trouver la faille.

0
Lobor Messages postés 12 Date d'inscription vendredi 4 mars 2011 Statut Membre Dernière intervention 16 mars 2011
4 mars 2011 à 15:22
Sinon j'ai vu qu'il y avait une solution en php et un fichier cache
0
Lobor Messages postés 12 Date d'inscription vendredi 4 mars 2011 Statut Membre Dernière intervention 16 mars 2011
12 mars 2011 à 12:13
J'ai trouver la solution en actualisant un timestamp dans la bdd et je vérifie si celui-ci n'as pas expirer, si oui, alors on deconnecte la personne
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Lobor Messages postés 12 Date d'inscription vendredi 4 mars 2011 Statut Membre Dernière intervention 16 mars 2011
12 mars 2011 à 12:31
Je vous met les codes au cas ou une personne cherche a savoir comment faire

function envoi_actualisation($Id)
	{
		connexion_bdd();
		$req="update identification SET actualisation=".time()." where Id='".$_SESSION['utilisateur']['Id']."'";
		$resultat=mysql_query($req);
		//print (mysql_error() . " <br />- " . $req);
		
	}
	
	function test_eject($Id)
	{
		if ($Id!=NULL)
		{
			connexion_bdd();
			$req="select ejecter from identification where Id='".$Id."'";
			$resultat=mysql_query($req);
			//print (mysql_error() . " <br />- " . $req);

			$ejecter=mysql_fetch_array($resultat);
			
			
			//echo $ejecter['ejecter'];
			if($ejecter['ejecter']==1)
			{
				session_destroy();
				$_SESSION['utilisateur']['mail']= null;
				header("Location:index.php");
			}
			
		}
	}
	
	
	
	function test_actu()
	{
		connexion_bdd();
		$req="select jeux, message, pseudo, connexion, Id, actualisation from identification";
		$resultat=mysql_query($req);
		//print (mysql_error() . " <br />- " . $req);
		
		
		while($connexion=mysql_fetch_array($resultat))
		{
			$min = time();
			$min = $min - 300;
			
			if($connexion['jeux']==0 && $connexion['message']==0 && $connexion['connexion']==1 && $connexion['actualisation'] < $min)
			{
				$req = "UPDATE identification SET connexion = 0, ejecter=1 where Id='".$connexion['Id']."'";
				$ejecter = mysql_query($req);
				//print (mysql_error() . " <br />- " . $req);
			}
			
			if(($connexion['jeux']==1 || $connexion['message']==1) && $connexion['connexion']==1)
			{
				$req = "UPDATE identification SET jeux=0, message=0 where Id='".$connexion['Id']."'";
				$ejecter = mysql_query($req);
				//print (mysql_error() . " <br />- " . $req);
			}
		}
		
	}

0