[PHP-JS] : fonction sur fermeture fenetre

Résolu/Fermé
pilten Messages postés 41 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 19 octobre 2012 - 20 févr. 2007 à 20:49
Ah_Kin Messages postés 21 Date d'inscription samedi 3 novembre 2007 Statut Membre Dernière intervention 13 octobre 2009 - 3 nov. 2007 à 19:41
Bonjour,

J'utilise PHP-MySQL pour une application intranet Simple.
Dans ma db, j'ai une table EMPLOYE dans laquelle je stocke la date et heure de début de connection , ainsi que la date et l'heure de fin de connection.
Aucun probleme pour le début de connection
Pour la fin de connection, j'execute une fonction PHP lorsque l'utilisateur clique sur un bouton LOGOFF

Par contre, j'aimerais stocker aussi l'heure de fin de connection lorsque l'utilisateur ferme son navigateur ...

J'ai déja essayé avec l'évenement body OnUnLoad ="mafonction". Cela fonctionne mais la fonction s'execute à chaque changement ou upload de page .. ce qui m'ennuie fortement.

je pense qu'il n'existe aucune méthode pour "capturer" un click sur la croix du navigateur .. Si seulement qqn avait une alternative, cela serait utile à des millions de développeurs beginners comme moi :)

Ma fonction est la suivante

function logoff( )
{
<?
$temps = date ( ..... );
UPDATE EMPLOYE SET end_Con = $temps ..........
?>
}

Pour info, je suis moi-meme surpris par le code PHP à l'intérieur d'une fonction JS mais ca marche !!!!!

Merci à tous .. mais je désespere ..
Si seulement BODY OnClose existait , ou si qqn l'avait développé !!
A voir également:

4 réponses

benkeeper Messages postés 81 Date d'inscription samedi 4 septembre 2004 Statut Membre Dernière intervention 26 janvier 2008 45
20 févr. 2007 à 21:45
Hum ... à froid comme ça je dirais que ce n'est pas possible, il faudrait exécuter une fonction sur le serveur en rappellant un script php.

Je suis étonné que le PHP dans la fonction JS marche d'ailleurs.

En ce qui me concerne, pour estimer la durée de navigation d'un internaute, j'utilise les sessions.

A la création de la session, je stocke l'heure dans une variable/table dite "départ" et n'y touche plus. Ensuite, à chaque nouveau chargement d'une page je stocke l'heure dans une autre variable/table. Ainsi lorsque l'utilisateur arrête de cliquer, je considère qu'il ne navigue plus et cette dernière variable contient la dernière heure connue d'activité. Le compteur repart à 0 à l'ouverture d'une nouvelle session.

Ca donne une idée approximative.

Après il reste la solution de remettre le compteur à 0 sans utiliser les sessions, en procédant de la même manière, mais en considérant par exemple qu'a delà de 10 minutes sans clic il s'agit d'une nouvelle navigation.

Je sais pas si je suis très clair :)

En tout cas si vous avez une meilleure solution je suis preneur ^^

Ben
2
Ssylvainsab Messages postés 2884 Date d'inscription samedi 29 juillet 2006 Statut Modérateur Dernière intervention 15 août 2020 825
20 févr. 2007 à 21:07
Salut !

Je crois que c'est window.onclose, tout simplement ;-)
0
pilten Messages postés 41 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 19 octobre 2012
20 févr. 2007 à 21:53
Oui , merci à tous

J'ai trouvé la solution

il faut simplement scinder l'application globale en deux frames

La frame de droit affichera normalement le site

La frame de gauche (1cm) est suffisant, n'affichera rien , mais elle sera affichée en permanence. Cette page ne sera jamais modifiée, jamais reloadée

On peut donc lui associer l'évenement suivant

<BODY OnUnLoad = "javascript:mafonction();">

l'évenement OnUnLoad ne s'effectuera UNIQUEMENT qu'en cas de fermeture de la page
Dans ce cas , ma fonction d'update de la table sera executée

Si question, je suis la ..

bonne soirée
pierre
0
Ah_Kin Messages postés 21 Date d'inscription samedi 3 novembre 2007 Statut Membre Dernière intervention 13 octobre 2009 15
3 nov. 2007 à 19:41
Donc comment affiches tu ces 2 frames?
0