Compter les hits
On utilisera un petit fichier, géré par le File System, dans lequel on incrémente un nombre à chaque chargement d'une page (inclure le script ci-dessous dans chaque page via SSI par exemple)
<% ' Compteur ASP de hits
' Création de l'objet permettant de manipuler les fichiers Set FSO=CreateObject("Scripting.FileSystemObject") ' Le dossier "data" doit être déprotégé en écriture ! ' (voir sinon avec l'admin de l'hébergeur) fichier=Server.MapPath("/data") & "\compteur.txt"
' Lecture du fichier s'il existe et incrémente cpt = 1 if FSO.FileExists(fichier) then set inF = FSO.OpenTextFile(fichier,1,false) cpt = cLng(inF.readLine) + 1 ' jusqu'à 2 milliards inF.close end if
' Sauvegarde du compteur set inF = FSO.createTextFile(fichier) inF.writeLine(cpt) inF.close %>
<? // Compteur PHP de hits
$fichier="compteur.txt";
// Lecture du fichier s'il existe et incrémente $cpt = 1; if(file_exists($fichier)) { $inF = fopen($fichier,"r"); $cpt = intval(trim(fgets($inF, 4096))) + 1; fclose($inF); }
// Sauvegarde du compteur $inF = fopen($fichier,"w"); fputs($inF,$cpt."\n"); fclose($inF); ?>
Remarques
On peut différencier chaque page en sauvegardant les hits dans un fichier différent...
On peut aussi ajouter un point dans le fichier à chaque hit puis regarder la taille du fichier...
<% ' Compteur ASP de hits Set FSO=CreateObject("Scripting.FileSystemObject") fichier=Server.MapPath("/data") & "\compteur.txt"
' Incrémente le compteur (crée le fichier si besoin) set inF = FSO.openTextFile(fichier,8,true) inF.write(".") inF.close
' Lecture de la taille du fichier cpt = FSO.GetFile(fichier).size %>
<? // Compteur PHP de hits
$fichier="compteur.txt";
// Incrémente le compteur $inF = fopen($fichier,"a"); fputs($inF,"."); fclose($inF);
// Lecture de la taille du fichier $cpt = filesize($fichier); ?>
Compter les visites
Le principe est le même sauf qu'il ne faut sauvegarder qu'un seul hit par session d'où un petit test ainsi qu'un marquage par cookie
<% ' Compteur ASP de visites/cookie Set FSO=CreateObject("Scripting.FileSystemObject") fichier=Server.MapPath("/data") & "\compteur.txt" ' si c'est le premier hit de la session if request.cookies("visite")="" then ' marque la session response.cookies("visite")="ok"
' Incrémente le compteur (crée le fichier si besoin) set inF = FSO.openTextFile(fichier,8,true) inF.write(".") inF.close end if
' Lecture de la taille du fichier cpt = FSO.GetFile(fichier).size %>
<? // Compteur PHP de hits/cookie $fichier="compteur.txt"; // si c'est le premier hit de la session if($visite=="") { // marque la session setcookie("visite","ok");
// Incrémente le compteur $inF = fopen($fichier,"a"); fputs($inF,"."); fclose($inF); }
// Lecture de la taille du fichier $cpt = filesize($fichier); ?>
<% ' Compteur ASP de visites/session Set FSO=CreateObject("Scripting.FileSystemObject") fichier=Server.MapPath("/data") & "\compteur.txt" ' si c'est le premier hit de la session if session("visite")="" then ' marque la session session("visite")="ok"
' Incrémente le compteur (crée le fichier si besoin) set inF = FSO.openTextFile(fichier,8,true) inF.write(".") inF.close end if
' Lecture de la taille du fichier cpt = FSO.GetFile(fichier).size %>
<? // Compteur PHP de hits/session (v4+) session_register("visite"); $fichier="compteur.txt"; // si c'est le premier hit de la session if($visite=="") { // marque la session $visite="ok";
// Incrémente le compteur $inF = fopen($fichier,"a"); fputs($inF,"."); fclose($inF); }
// Lecture de la taille du fichier $cpt = filesize($fichier); ?>
Afficher le résultat
Le nombre de hits est dans la variable cpt, on peut donc soit l'afficher en mode texte
Visite n° <%=cpt%>
Visite n° <? echo $cpt; ?>
soit l'afficher en mode graphique !...
<% ' Affichage du compteur ' convertir en chaîne cptStr=cStr(cpt) ' mettre au moins 5 chiffres if len(cptStr)<5 then _ cptStr=right("0000" & cptStr,5) ' Construction du compteur graphique cptGraph = "<table border='0' cellspacing='0'" _ & " cellpadding='0'><tr>" for i = 1 to len(cptStr) cptGraph = cptGraph & "<td><img src='/img/" _ & mid(cptStr,i,1) & ".gif'></td>" next cptGraph = cptGraph & "</tr></table>" ' Afficher le compteur response.write(cptGraph) %>