Le script est traité comme suit :
Une page en PHP/HTML qui à chaque ouverture enregistre dans une base de donnée la datetime, le nom de la page et un chrono visiteur.
Ces trois infos sont stockée dans des variables globales (session).
Lors de la fermeture, le script déclenché par Onunload() dans le BODY ouvre un script PHP/Javacript qui enregistre pour le triplet précédent la datetime de la sortie de la page.
Le script qui suit n'est pas utilisable directement mais descrit les trucs mis en place.
Source / Exemple :
Première étape
Dans le source de la page à afficher il faut :
- définir les 3 variables
- exécuter le PHP (un autre source) qui enregistre les trois informations dans une table "la datetime, le nom de la page et un chrono visiteur".
Jusque là rien de compliqué !
Il faut ajouter le script Javascript dans ce source et mettre en parametre "la datetime, le nom de la page".
---------------------------------------------------------------------- dans le HEAD
<script language="">
function qwin(){
winenrg=window.open("enrg.php?npage=<?print $REQUEST_URI;?>&dtim=<?print $dateenr;?>","nomfen","top=5000"); return true;}
</script>
---------------------------------------------------------------------- dans le BODY
<body onunload="qwin();">
----------------------------------------------------------------------
Explication
Pourquoi les variables PHP sont stockées dans le script du javascript ?
Car si elles ont utilisée en variables globales, lors du chargement de la page suivante, le source d'enregistrement récupèrera les nouvelles valeurs et non les valeurs de la page d'origine.
En faisant ainsi, le script javacript est écrit avec le contenu de variable qui seront passées en paramètre lors de la sortie de la page.
(Ok c'est compliqué mais sinon çà marche pas !)
Voyez le "top=5000"; il permet de ne pas voir la fenêtre popup.
Seconde étape
Le programme "enrg.php" d'enregistrement doit écrire dans la table mais également se refermer.
----------------------------------------------------------------------
<script language="">
setTimeout("winenrg.close()",200);
</script>
<?
$sr_host="";$sr_acces="root";$sr_pw="";
$db = "base";
$sql=mysql_connect($sr_host,$sr_acces,$sr_pw);
$reqsql = "update visite set dtsortie = ".date('Y-m-d H-i-s');
$reqsql .= " where dtentree='".$dtim."' and nompage='".$npage."')";
$sqlr=mysql_db_query($db,$reqsql) ;
$sql=mysql_close($sql);
?>
----------------------------------------------------------------------
Explication
Pourquoi le TimeOut ?
Pour fermer la page on peut ne pas l'utiliser mais alors l'enregistrement n'a pas lieu !
Pour info la mise à jour de l'enregistrement se fait d'après les 2 paramètres passés à enrg.php.
Conclusion :
Ce script à un défaut, il ouvre réellement une page qui apparaît dans la barre de tache que 0.2 seconde mais qui peut être gênante pour les puristes !
La position de la fenêtre à 5000 pixels du haut de l'écran permet de ne jamais la voir.
Le petit plus serait de déclencher la fenêtre en cachée !
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.