detection fermeture fenetre ou popup

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : detection fermeture fenetre ou popup

par julski » 27 juil. 2006, 14:30

Ca marche plutôt bien en effet ! deja un grand merci !

Le chat tourne bien, quand un message est envoyé, seule "la deuxième frame" de ma page s'actualise donc c'est niklel.

Il me reste un dernier petit problème, la touche F5 !.Car, en effet, dans ce cas, la premiere frame contenant le onunload s'actualise aussi et mon action et donc executée...

il existe un moyen de le bloquer non ? que me conseillez vous ?

par Ryle » 27 juil. 2006, 13:57

pas de souçis avec le refresh dans ce cas ?
Ben non, pas de soucis avec le refresh ou l'envoi des données, puisque c'est uniquement le cadre que tu actualises, la frame quant à elle ne bouge pas :)

par starkeus » 27 juil. 2006, 13:55

Tu crée un frameset contenant 2 frames. La première sera "cachée" (taille 0) et disposera de l'évènement onUnLoad (ou onBeforeUnLoad ==> message d'avertissement permettant à l'utilisateur d'annuler la fermeture) sur la balise body. La seconde frame contiendra ton chat simplement et chaque refresh pourra se faire sans pb... tu prendra garde aux redirections JS si tu en utilises.

a+

par julski » 27 juil. 2006, 12:07

J'avais effectivement pensé aux frames mais j'ai vite abandonné question référencement comme tu l'a si bien dit :)

j'ai beaucoup travaillé sur ce point (URL rewritting a gogo et tout ce qui s'en suit....) donc ca m'aurait un peu géné de devoir sacrifier une partie de l'efficacité du référencement...

Par contre, ce procédé pourrait peut etre m'être utile pour mon module de chat :D...Question référencement cette fois ci ca pose aucuns soucis.

Le but est de savoir si le membre a quitté le chat (en fermant le popup) et donc mettre à jour la bdd etc...

il me suffirait donc de mettre le contenu de mon popup dans une frame et d'affecter mon action sur le onunload de la frame ? pas de souçis avec le refresh dans ce cas ?

par Ryle » 27 juil. 2006, 11:43

J'avais eu le même soucis pour une application et j'avais résolu ça en passant par une frame. L'action onUnload était placée sur le frameset, et du coup elle n'avait lieu que quand la frame était quittée.

Les utilisateurs pouvaient ainsi ouvrir toutes les pages du site sans qu'il n'y ait d'action de déchargement au niveau de la frame, et lorsque la fenêtre était fermée ou qu'une nouvelle page était chargée en _top, cela exécutais le onUnload et me permettait de déconnecter proprement l'utilisateur :)

Encore une grande victoire des frames ! ;)

(bon cela dit, comme c'était une appli et pas un site, je me fichais pas mal du référencement, mais maintenant cela peut être génant pour ton site. Encore qu'en jouant bien avec les balises <nobody> on puisse quand même s'en tirer pas trop mal dans le référencement et limiter les dégats de la frame :))

par julski » 27 juil. 2006, 11:26

Oui c'est vrai que c'est un problème pour pas mal de monde...

de part la structure de mon site qui est déja assez conéquente, je préfére quand même opter pour cette solution plutôt que d'effectuer des requêtes permanentes qui comme tu l'a dit affecteraient le confort de l'internaute.

Merci.

par naholyr » 27 juil. 2006, 11:16

C'est un vaste problème, étant limités dans le protocole HTTP qui n'a pas été prévu initialement pour les sessions on n'a guère de choix : si on veut quelque chose qui soit en permanence (ou presque) à jour ça affectera le confort de l'utilisateur (il y aura forcément les cas particulier de navigateurs ou de config réseau qui feront que l'utilisateur se retrouve déconnecté à chaque changement de page par exemple) ou obligera à utiliser un client lourd.

par julski » 27 juil. 2006, 10:29

Merci pour vos réponses,

j'entendais par "plus préçis" une mise à jour quasi instantanée de la bdd parce ce que ca m'embettais d'avoir ces 15 minutes de battement mais je dois en vouloir un peu trop.

je pense que je vais utiliser cette solution du champ date "derniere action" ça me parait la plus simple et la plus fiable.

Merci à tous.

par garf » 26 juil. 2006, 17:10

j'ai bien peur qu'il n'y ai rien de plus précis...

enfin, tu peux, avec ajax par exemple, faire envoyer automatiquement un signal de présence toutes les secondes au serveur, et lorsque tu le reçois plus, c'est qu'il est déconnecté

Re: detection fermeture fenetre ou popup

par naholyr » 26 juil. 2006, 17:04

2- stocker dans un champ date la derniere action du membre, et le supprimer de la table après 15mn d'inactivité par exemple
=> rien de plus précis ??
C'est la solution la plus fiable, utilisée notamment dans le système des sessions de PHP.
Qu'entends-tu par "plus précis" ?

detection fermeture fenetre ou popup

par julski » 26 juil. 2006, 14:40

Bonjour,

J'ai trouvé quelques post sur ce sujet dans le forum mais finalement aucun ne m'apporte de solution :

Je réalise un site dans lequel il y a un espace membre (authentification par login / mot de passe). Pour gérer les membres en ligne / hors ligne, j'ai une table sessions => quand un membre se loggue, j'ajoute un ligne dans cette table avec divers infos et quand IL CLIQUE sur "se deconnecter" je le supprime de la table. Par contre quand le membre quitte son navigateur à l'aide de "la croix" je ne peux pas à ce moment la detecter la fin de sa session.

On ma déja proposé plusieurs solutions :

1- Utiliser le Onunload du body pour faire la mise à jour BDD
=> problème : L'action située sur le unload n'est pas executée qu'a la fermeture du navigateur mais également lorsque l'on effectue un refresh de la page

2- stocker dans un champ date la derniere action du membre, et le supprimer de la table après 15mn d'inactivité par exemple
=> rien de plus précis ??

3- j'ai également entendu parler d'une gestion par cookie
quelqu'un peut-il m'en dire plus ? est ce vraiment efficace et stable ?

4- j'ai également entendu parler d'une solution en ajax mais je ne vois pas bien comment l'appliquer à ce problème (surtout si je ne peux pas utiliser le onunload) quelqu'un peut il m'en dire plus ?

pour finir, je rencontre ce problème à un deuxième endroit sur mon site :

Un chat est a disposition des membres => ouverture d'un popup dans lequel il gére toutes ses conversations.

Il serait donc necessaire de gérer les membres qui quitte le chat en cliquant sur la croix du popup et également effacer les conversations de la BDD

=>> le problème est donc toujours le même, comment détecter la fermeture du popup ??

après de nombreuses heures de recherche, j'espére que quelqu'un pourra m'aider !!!

Merci d'avance !

Julien.