SELFHTML/Quickbar  JavaScript  Exemples d'application


Compter les visites de pages personnelles avec des cookies

Cette page est un document avec du texte et des informations

 Compter les visites de pages personnelles avec des cookies - l'exemple

 

Netscape2.0MS IE 3.0 Compter les visites de pages personnelles avec des cookies - l'exemple

exemple Exemple d'affichage: aperçu

Cookies (biscuits) sont une possibilité - qui n'est pas incontestée - que Netscape a bâtie dans JavaScript. Les Cookies 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 cookie dans un JavaScript, vous ne pouvez pas mentionner où le cookie sera sauvegardé chez l'utilisateur. Cela contrôle le navigateur WWW de l'utilisateur. D'autre part, les Cookies 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 cookie peut donc être comparé à une inscription dans un fichier de configuration - avec cette différence que le cookie 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.

L'Explorer Internet MS dans sa version 4.x n'interprète les cookies complètement que si le fichier HTML qui lit et écrit les cookies a été appelé par le protocole HTTP.

Remarque: Pour une meilleure orientation dans l'exemple, celui-ci contient des liens aux explications respectives par exemple: 1*. Ces liens ne font pas partie du code source. Si vous copiez cet exemple dans un éditeur, vous devez effacer ces liens faute de quoi vous recevriez des messages d'erreur JavaScript.

Exemple:

 <html>
 <head>
 <title>Titre de la page</title>
 <script language="JavaScript">
  <!--
  1* function cherchevaleur()
  {
   var valeur = "";
   if(document.cookie)
   {
    valeurdepart = document.cookie.indexOf("=") + 1;
    valeurfin = document.cookie.indexOf(";");
    if(valeurfin == -1) valeurfin = document.cookie.length;
    valeur = document.cookie.substring(valeurdepart,valeurfin);
   }
   return valeur;
  }

  2* function fixervaleur(indic, valeur, expire)
  {
   var maintenant = new Date();
   var temps = new Date(maintenant.getTime() + expire);
   document.cookie = indic+"="+valeur+"; expires="+temps.toGMTString()+";";
  }

  3* function compteur()
  {
   var tpsexpire = 1000*60*60*24*365;
   var nombre = cherchevaleur();
   var compte = 0;
   if(nombre != "") compte = parseInt(nombre);
   if(document.cookie)
   {
    compte = compte + 1;
    fixervaleur("compte",compte,tpsexpire);
   }
   else
   {
    compte = 1;
    fixervaleur("compte",compte,tpsexpire);
   }
  alert("C'est votre " + compte + "ème visite sur cette page!");
  }
  //-->
 </script>
 </head>
 <body onLoad="compteur()">
 Contenu du fichier
 </body>
 </html>

Explication:

 lire un cookie et rechercher la valeur sauvegardée
La  fonction cherchevaleur(), définie dans l'exemple, est écrite en général. Vous pouvez utiliser cette fonction pour lire un cookie. Si le fichier a déjà une fois écrit un cookie, c'est sa valeur qui sera recherchée et retournée. Si aucun cookie 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 cookie est déjà existant. Si c'est le cas, sa valeur est recherchée. Un cookie est normalement constitué d'un indicateur et d'une valeur, par exemple:
compte=4
L'indicateur est compte et la valeur qui lui a été affectée 4. La fonction cherchevaleur() se prend la valeur en recherchant, dans le cookie 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 cookie et fixer la valeur
La  fonction fixervaleur(), définie dans l'exemple, est écrite elle aussi en général. Cette fonction attend trois paramètres:
indic est l'élément avant le signe égale, par exemple compte.
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 cookie qui doit rester sauvegardé au delà de la session navigateur actuelle doit contenir une mention du moment auquel le navigateur devra effacer le cookie. Ceci est pour éviter de sauvegarder des cookies éternellement. La date d'expiration du cookie 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 fixervaleur() 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 cookie est écrit.

 fonction parente pour la gestion du cookie
Les deux fonctions générales cherchevaleur() et fixervaleur() ont maintenant besoin de quelques instructions générales qui gèrent le cookie. Cela se fait, dans l'exemple, dans la fonction compteur(). Dans un premier temps, cette fonction définit une valeur d'expiration qui sera transmise plus tard à la fonction fixervaleur() lors de l'écriture du cookie. 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 cookie doit donc être sauvegardé un an.

Pour gérer les visites de pages personnelles de l'utilisateur, la fonction 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 cookie, 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 compteur() appelle d'abord la fonction cherchevaleur(), pour rechercher l'état actuel du compteur. La valeur renvoyée par cherchevaleur() est sauvegardée dans la variable nombre. Si aucun cookie 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 compte. Avec la méthode parseInt(), la valeur de nombre est affectée en tant que nombre à cette variable.

Si un cookie existe, le compteur est incrémenté de 1. Ensuite, la fonction fixervaleur() est appelée et sauvegarde le cookie. Comme indicateur est transmis le mot "compte", comme valeur, le contenu de la variable compte, et comme date d'expiration, le contenu de la variable tpsexpire.

Si aucun cookie n'existe, la fonction fixervaleur() est appelée exactement de la même façon. Auparavant cependant, le contenu de la variable compte est fixé à 1.

À la fin, la fonction compteur() sort à l'aide de alert() l'état actuel du compteur dans une boite de dialogue.

Toutes les instructions de l'exemple de script se trouvent dans des fonctions. Pour que ces instructions soient exécutées à la lecture du fichier, la fonction compteur() doit être appelée de façon explicite. Ce qui est fait, dans l'exemple, dans le repère d'introduction <body> à l'aide de l'  Event-Handler onLoad=.

après: Vérifier les saisies de formulaire
avant: Mois de calendrier
 

SELFHTML/Quickbar  JavaScript  Exemples d'application

© 1998 Stefan Münz / © 2001 Traduction  Serge François, 13405@free.fr