SELFHTML

Compter les visites de pages personnelles avec des témoins de connexion (cookies)

Page d'information: vue d'ensemble

vers le bas Remarques sur cet exemple
vers le bas Texte source avec explications

Démonstration - nouvelle fenêtre Exemple d'affichage: aperçu

 vers le bas 

Remarques sur cet exemple

Cookies (biscuits) ou témoins de connexion sont une possibilité - qui n'est pas incontestée - que Netscape a bâtie dans JavaScript. Les témoins de connexion permettent à un programme JavaScript de sauvegarder des données sur le disque dur de l'utilisateur. Cela se passe cependant de façon contrôlée. Un "espionnage" du disque de l'utilisateur y est aussi peu possible que d'y placer du code exécutable, comme par exemple des virus. Car si vous écrivez un témoin de connexion dans un JavaScript, vous ne pouvez pas mentionner où le témoin de connexion sera sauvegardé chez l'utilisateur. Cela contrôle le navigateur WWW de l'utilisateur. D'autre part, les témoins de connexion ne peuvent pas écrire des quantités de données incontrôlées sur l'ordinateur de l'utilisateur, mais seulement un nombre limité de lignes. Chacune de ces lignes définit une variable et lui affecte une valeur. Un témoin de connexion peut donc être comparé à une inscription dans un fichier de configuration - avec cette différence que le témoin de connexion ne peut adresser des données de configuration sur l'ordinateur de l'utilisateur.

Par la possibilité de sauvegarder des données, beaucoup de nouveaux domaines d'application se révèlent possibles pour JavaScript, tels que l'exemple décrit ici. Car pour compter des visites de pages étalées dans le temps, il faut bien sauvegarder quelque part le nombre de visites faites jusqu'alors, le relire à la prochaine visite, augmenter le compteur de 1 et sauvegarder à nouveau la nouvelle valeur. C'est exactement ce que fait l'exemple décrit ici.

Attention:

Le comptage des visites de pages personnelles diffère sensiblement du comptage de toutes les visites de pages. Pour gérer tous les accès à une page, le programme doit avoir son compteur sur l'ordinateur serveur. C'est pourquoi un "compteur" classique ne fonctionne qu'avec CGI. Le script décrit ici ne compte que les visites d'un utilisateur déterminé à une page déterminée.

 vers le hautvers le bas 

Netscape 2.0MS IE 3.0 Texte source avec explications

L'exemple montre un fichier HTML complet . Le compteur s'applique à ce seul fichier.

Exemple:

Démonstration - nouvelle fenêtre Exemple d'affichage: aperçu

<html>
<head>
<title>Compter les visites de pages personnelles avec des cookies </title>
<script type="text/javascript">
<!--
function cherche_valeur() {
 var valeur = "";
 if(document.cookie) {
  var valeur_depart = document.cookie.indexOf("=") + 1;
  var valeur_fin = document.cookie.indexOf(";");
  if (valeur_fin == -1)
   valeur_fin = document.cookie.length;
  valeur = document.cookie.substring(valeur_depart,valeur_fin);
 }
 return valeur;
}

function fixer_valeur(indicateur, valeur, expire) {
 var maintenant = new Date();
 var temps = new Date(maintenant.getTime() + expire);
 document.cookie = indicateur+"="+valeur+"; expires="+temps.toGMTString()+";";
}

function etat_compteur() {
 var peremption = 1000*60*60*24*365;
 var nombre = cherche_valeur();
 var compteur = 0;
 if(nombre != "") compteur = parseInt(nombre);
 if(document.cookie) {
   compteur = compteur + 1;
   fixer_valeur("compteur",compteur,peremption);
 }
 else {
   compteur = 1;
   fixer_valeur("compteur",compteur,peremption);
 }
 return(compteur);
}
//-->
</script>
</head>
<body bgcolor="#FFFFFF" text="#000000">

<h1>Une page qui en conna&icirc;t sur vous...</h1>

<script type="text/javascript">
<!--
 var x = etat_compteur();
 document.write("<p>Ceci est votre <b>" + x + "ème<\/b> visite sur cette page!<\/p>");
//-->
</script>

<p>Utilisez donc la fonction actualiser/recharger de votre navigateur ...</p>

</body>
</html>

Explication:

Lire un témoin de connexion et rechercher la valeur sauvegardée:

La Autre page d'information fonction cherche_valeur(), définie dans l'exemple, est écrite en général. Vous pouvez utiliser cette fonction pour lire un témoin de connexion. Si le fichier a déjà une fois écrit un témoin de connexion, c'est sa valeur qui sera recherchée et retournée. Si aucun témoin de connexion n'existe encore, une chaîne de caractères vide "" est renvoyée.

Avec la requête if(document.cookie), la fonction recherche si un témoin de connexion est déjà existant. Si c'est le cas, sa valeur est recherchée. Un témoin de connexion est normalement constitué d'un indicateur et d'une valeur, par exemple:
compteur=4
L'indicateur est compteur et la valeur qui lui a été affectée 4. La fonction cherche_valeur() se prend la valeur en recherchant, dans le témoin de connexion qui est sauvegardé, avec des commandes indexOf() le début et la fin de la valeur. Elle affecte cette valeur à la variable valeur. La variable valeur est renvoyée à la fin de la fonction.

Écrire le témoin de connexion et fixer la valeur:

La fonction fixer_valeur(), définie dans l'exemple, est écrite elle aussi en général. Cette fonction attend trois paramètres:
indicateur est l'élément avant le signe égale, par exemple compteur.
valeur est la valeur qui doit être affectée et sauvegardée.
expire est un nombre qui est interprété comme un nombre de millièmes de secondes . Chaque témoin de connexion qui doit rester sauvegardé au delà de la session navigateur actuelle doit contenir une mention du moment auquel le navigateur devra effacer le témoin de connexion. Ceci est pour éviter de sauvegarder des témoins de connexion éternellement. La date d'expiration du témoin de connexion doit être mentionnée sous la forme d'un format GMT. Vous n'avez pas besoin de vous en soucier, étant donné que la fonction fixer_valeur() s'en occupe automatiquement. À cet effet, la fonction recherche le temps présent (var maintenant = new Date();) et calcule dans la variable temps un moment à venir à partir du paramètre transmis expire et du temps présent recherché.

Avec l'instruction commençant par document.cookie =, le témoin de connexion est écrit.

fonction parente pour la gestion du témoin de connexion:

Les deux fonctions générales cherche_valeur() et fixer_valeur() ont maintenant besoin de quelques instructions générales qui gèrent le témoin de connexion. Cela se fait, dans l'exemple, dans la fonction etat_compteur(). Dans un premier temps, cette fonction définit une valeur d'expiration qui sera transmise plus tard à la fonction fixer_valeur() lors de l'écriture du témoin de connexion. Avec l'expression arithmétique 1000*60*60*24*365 est recherché le nombre de millièmes de secondes d'une année entière. Le témoin de connexion doit donc être sauvegardé un an.

Pour gérer les visites de pages personnelles de l'utilisateur, la fonction etat_compteur() doit effectuer ce qui suit: premièrement, elle doit rechercher l'état actuel du compteur, deuxièmement, l'incrémenter de 1 et troisièmement, sauvegarder à nouveau le nouvel état du compteur. S'il n'existe encore aucun témoin de connexion, c'est à dire, si l'utilisateur visite la page pour la première fois, le compteur doit être fixé à 1 et sauvegardé.

Pour cette raison, la fonction etat_compteur() appelle d'abord la fonction cherche_valeur(), pour rechercher l'état actuel du compteur. La valeur renvoyée par cherche_valeur() est sauvegardée dans la variable nombre. Si aucun témoin de connexion n'existe encore, se trouve ensuite dans nombre une chaîne de caractères vide "". Si une valeur existe, nombre contient la valeur sous la forme d'une chaîne de caractères. Étant donné qu'il n'est pas possible de calculer avec une chaîne de caractères, et qu'une valeur numérique est pourtant nécessaire pour incrémenter le compteur, est définie, dans l'exemple, encore une variable numérique nommée compteur. Avec la méthode parseInt(), la valeur de nombre est affectée en tant que nombre à cette variable.

Si un témoin de connexion existe, le compteur est incrémenté de 1. Ensuite, la fonction fixer_valeur() est appelée et sauvegarde le témoin de connexion. Comme indicateur est transmis le mot "compteur", comme valeur, le contenu de la variable compteur, et comme date d'expiration, le contenu de la variable peremption.

Si aucun témoin de connexion n'existe, la fonction fixer_valeur() est appelée exactement de la même façon. Auparavant cependant, le contenu de la variable compteur est fixé à 1.

À la fin, la fonction etat_compteur() retourne à l'aide de return() l'état actuel du compteur. De cette façon, cette fonction peut être appelée, par exemple à un autre endroit pour une sortie dans la page, comme dans l'exemple. Là est noté dans le passage body un autre passage JavaScript dans lequel la fonction etat_compteur() est appelée, et la valeur qu'elle retourne, donc l'état actuel du compteur est sauvegardée dans la variable x. Enfin, le code HTML est écrit dans la fenêtre d'affichage du navigateur avec document.write, en sortant aussi la variable x.

 vers le haut
page suivante Autre page d'information Vérifier les saisies de formulaire
page précédente Autre page d'information Calendrier du mois
 

© 2001 Stefan Münz / © 2003 Traduction Adresse électronique Serge François, 13405@free.fr
Adresse électronique selfhtml@fr.selfhtml.org