1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
|
<?php
/*
+------------------------------------------------------------------------------+
| Compteur par appel JavaScript, multivisiteurs (plusieurs IP) |
| TT , version 5.4 du 15 novembre 2009 |
| insertion du compteur dans le code HTML de la page, par une ligne javascript:|
|<script language="JavaScript" type="text/javascript" src="@"></script> |
| avec "@" l'adresse relative ou absolue de ce fichier PHP |
+------------------------------------------------------------------------------+
*/
//--- Initialisation de variables (Vous pouvez personnaliser ces variables) ---/
$sgn= 'Compteur TTU v5.4'; // commentaire, 17 caract�res
$controldomaine= 'non'; // contr�le le domaine suivant le tableau $Domaines
$Domaines= array(''); // domaines o� le compteur est op�rationnel
$Ipwebmaster= array(''); // IP qui ne seront pas consid�r�s
$delai= 600; // delai en s pour le consid�rer comme nouveau
$afficheip= 'non'; // affiche le n�IP du visiteur (oui/non)
$affichenv= 'non'; // affiche le nombre de visiteurs en cours
$local= 'non'; // est-ce pour tout le site > non, si que la page > oui
$fichiercompteur= 'cptmip.txt'; // fichier de donn�es du compteur
$cmtjs= '---------'; // affichage compteur en cas de PB
//-----------------------------------------------------------------------------/
//
$host= $_SERVER['HTTP_HOST']; // nom du domaine du site
if (($controldomaine=='oui') AND (!in_array($host,$Domaines))){
echo('document.write(\'--- non disponible ---\');');
exit; // arr�t du script PHP si le domaine n'est pas permis
}
//
$ipv= $_SERVER['REMOTE_ADDR']; // num�ro IP du visiteur
$ipvf= sprintf('%15s',$ipv);
$chrono= sprintf('%10s',time());// date de visite (en secondes)
// le visiteur en cours (except� pour certaines IP) est consid�r� par d�faut comme "nouveau"
(in_array($ipv,$Ipwebmaster))? $nouveau= 0: $nouveau= 1;
//
$nvpmax= 0;
if (!file_exists($fichiercompteur)) touch($fichiercompteur);
// lecture du fichier de comptage, $n+1 lignes
if ($pf0=fopen($fichiercompteur,'r+')){
$i= 0;
while (!feof($pf0)){
$Ligne[$i++]= fgets($pf0,1024);
}
$n= $i-2; // $n visiteurs dans la liste, la derni�re ligne contient $nvpmax
$nvpmax= substr($Ligne[$n+1],1,5); // r�cup�ration de $nvpmax
//
// analyse du fichier compteur et traitement
$cmp= substr($Ligne[0],1,8); // r�cup�ration du d�compte de visiteurs
// r�cup�ration des infos sur les $n visiteurs d�j� recenc�s
for ($i=1;$i<=$n;$i++){
$Ipvs[$i]= substr($Ligne[$i],1,15); // IP du visiteur $i
$Chronos[$i]= substr($Ligne[$i],17,10); // date de sa derni�re visite
$present[$i]= 1; // le visiteur $i est suppos� pr�sent
// si la date du visiteur $i est p�rim�e, il n'est plus consid�r� pr�sent
if (($chrono-$Chronos[$i])>$delai) $present[$i]= 0;
// si le visiteur $i est le visiteur en cours ET est consid�r� pr�sent
// alors il n'est pas nouveau et sa date de visite est mise � jour
if (($Ipvs[$i]==$ipvf) AND ($present[$i]==1)){
$nouveau= 0; $Chronos[$i]= $chrono;
}
}
// si le visiteur en cours est toujours consid�r� comme nouveau,
// il est ajout� � la liste et le compteur est incr�ment�
if ($nouveau==1){
$i= ++$n; $cmp++;
$present[$i]= 1; $Ipvs[$i]= $ipvf; $Chronos[$i]= $chrono;
}
// mise � jour du fichier compteur
rewind($pf0); ftruncate($pf0,0);
$cmpf= sprintf('%08s',$cmp);
fwrite($pf0,':'.$cmpf.':'.$sgn.':'.chr(10));
$nvp= 0; // $nvp : nombre de visiteurs en liste, suppos�s pr�sents
for ($i=1;$i<=$n;$i++){
if ($present[$i]==1){
fwrite($pf0,':'.$Ipvs[$i].':'.$Chronos[$i].':'.chr(10));
$nvp++;
}
}
if ($nvp>$nvpmax) $nvpmax= $nvp;
$nvpmaxf= sprintf('%05s',$nvpmax);
fwrite($pf0,':'.$nvpmaxf.': pointe visites maxi:');
fclose($pf0 );
//
// g�n�ration du contenu HTML, chaine $cmtjs
$cmtjs= '<span class="totalvisites">Visiteurs : '.$cmpf.'</span>';
if ($afficheip=='oui'){
$cmtjs.= ', <span class="ipvisiteur">votre n°IP est '.$ipv.'</span>';
}
if ($affichenv=='oui'){
$pl=($nvp<=1)? '': 's';
($local=='oui')? $txt= ' sur la page': $txt= ' sur le site';
// $cmtjs.= ' - <span class="visitesencours">actuellement '.$nvp.' visiteur'.$pl.$txt.'</span>';
$cmtjs.= ' - <span class="visitesencours"></span>';
}
if (in_array($ipv,$Ipwebmaster)){
$cmtjs.= ' ( pointe de visites = '.$nvpmax.' )';
}
}
// envoi du r�sultat pour affichage sur la page
echo('document.write(\''.$cmtjs.' \');');
?> |
Partager