Rechercher : dans
Par :

[PHP-JS] : fonction sur fermeture fenetre

Dernière réponse le 3 nov 2007 à 19:41:11 pilten, le 20 fév 2007 à 20:49:26 
 Signaler ce message aux modérateurs

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é !!

Configuration: Windows 2000
Internet Explorer 6.0

Meilleures réponses pour « [PHP JS] : fonction sur fermeture fenetre » dans :
[PHP] Fonction mail() VoirLa fonction mail() est bloquée chez certains des hébergeurs gratuits pour des raisons de sécurité (afin d'éviter le spam notamment), l'adresse ip de la machine qui a demandé le script sera alors indiquée dans le header 'X-MM-Mail-From-IP'. renseignez...
PHP - Les fonctions VoirLa notion de fonction On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal. Les fonctions permettent d'exécuter dans plusieurs parties du...
Javascript - Les fonctions VoirLa notion de fonction On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal. Cette notion de sous-programme est généralement appelée fonction...
PHP - Les fichiers VoirLa gestion des fichiers avec PHP Avec PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions dédiées à l'utilisation des fichiers. La communication entre le script PHP et le fichier...

1

Ssylvainsab, le 20 fév 2007 à 21:07:32

Salut !

Je crois que c'est window.onclose, tout simplement ;-) Sylvain
"Join us now, and share the software. You'll be Free, hackers."

Répondre à Ssylvainsab

2

benkeeper, le 20 fév 2007 à 21:45:18

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

Répondre à benkeeper

3

pilten, le 20 fév 2007 à 21:53:06

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

Répondre à pilten

4

 Ah_Kin, le 3 nov 2007 à 19:41:11

Donc comment affiches tu ces 2 frames?

Répondre à Ah_Kin