Dernière modification 4.3.01
<?
$visiteurs="visiteurs.php3";
include($visiteurs);
?>
Votre fichier de page d'accueil doit être avec l'extension .php(3) pour être interprété par le serveur HTTP.
Voici le code de visiteurs.php3
<?
// fonction qui teste la présence d'une chaine dans une autre
chaîne
// en cas de réussite une variable numérique est incrémentée
// retourne 1 ou 0
function findchaine($exploi,$chaine,&$inc,&$trouve)
{
if (strstr($exploi,$chaine))
{
$retour=1;
$inc++;
$trouve++;
}
else
{
$retour=0;
}
return $retour;
}
// fichier contenant les visiteurs
// avec date, nom d'hôte (adresse IP), navigateur OS, referer
$nlog="visites.log";
// contient des referers non connus
$nref="referer.log";
// contient les stats d'une manière générale
sous la forme
$nstat="stat.log";
$tabstat=file($nstat);
// première ligne les OS
// deuxième ligne les FAI
// troisième ligne les pays d'origine
// quatrième ligne les navigateurs
// cinquième ligne les referers
$os=$tabstat[0];
$fai=$tabstat[1];
$pays=$tabstat[2];
$nav=$tabstat[3];
$refer=$tabstat[4];
// chacune des lignes est construites ainsi
// 123;234;676;...
// on extrait donc chaque champ dans un tableau
// caractère séparateur le ;
$tabos=explode(";",$os);
$tabfai=explode(";",$fai);
$tabpays=explode(";",$pays);
$tabnav=explode(";",$nav);
$tabref=explode(";",$refer);
// pour le tableau des referers
// voilà l'identité de chaque champ
// vous devez mettre ici les referers de votre site
$news=$tabref[0];
$liberty=$tabref[1];
$funix=$tabref[2];
$pperso=$tabref[3];
$mail=$tabref[4];
$legratuit=$tabref[5];
$camarche=$tabref[6];
$altavista=$tabref[7];
$linuxdoc=$tabref[8];
$unknown=$tabref[9];
$forum=$tabref[10];
$linuxstart=$tabref[11];
$voila=$tabref[12];
$yahoo=$tabref[13];
// idem tableau des os
$linux=$tabos[0];
$win98=$tabos[1];
$win95=$tabos[2];
$sunos=$tabos[3];
$nt=$tabos[4];)
$hpux=$tabos[5];
$osinconnu=$tabos[6];
$mac=$tabos[7];
$irix=$tabos[8];
// tableau des fai
$guetali=$tabfai[0];
$wanadoo=$tabfai[1];
$proxad=$tabfai[2];
$grolier=$tabfai[3];
$infonie=$tabfai[4];
$cybercable=$tabfai[5];
$wol=$tabfai[6];
$club=$tabfai[7];
$univ=$tabfai[8];
$freesurf=$tabfai[9];
$liberty=$tabfai[10];
$oleane=$tabfai[11];
$fainconnu=$tabfai[12];
$inktomi=$tabfai[13];
// tableau des pays
$france=$tabpays[0];
$network=$tabpays[1];
$com=$tabpays[2];
$belge=$tabpays[3];
$ca=$tabpays[4];
$paysinconnu=$tabpays[5];
$suisse=$tabpays[6];
// tableau des navigateurs
$netscape=$tabnav[0];
$msie=$tabnav[1];
$navinconnu=$tabnav[2];
$slurpsi=$tabnav[3];
$konq=$tabnav[4];
$opera=$tabnav[5];
$weblayers=$tabnav[6];
// on extrait certaines variables
// chez le visiteur
// pour avoir les referers
$page=getenv("HTTP_REFERER");
// pour connaître son adresse IP
$ip=getenv( "REMOTE_ADDR");
// pour connaître son nom d'hôte
// à partir de l'adresse IP
$host=gethostbyaddr($ip);
// pour connaître l'OS et le navigateur
$expl=getenv("HTTP_USER_AGENT");
// on commence à rechercher si le referer du visiteur
// n'est pas déjà connu
// pour l'instant il n'est pas connu
$trouveref=0;
// on passe en revue toutes les chaînes de referer connu
// à cette endroit vous devez mettre une chaîne comprise
// dans l'URL des referers
// vos referers ne sont pas forcément les miens
findchaine($page,"news:",$forum,$trouveref);
findchaine($page,"deja.com",$forum,$trouveref);
findchaine($page,"funix.free.fr",$funix,$trouveref);
findchaine($page,"pageperso.free.fr",$pperso,$trouveref);
findchaine($page,"mailto:",$mail,$trouveref);
findchaine($page,"mail.",$mail,$trouveref);
findchaine($page,"imp.",$mail,$trouveref);
findchaine($page,"legratuit.com",$legratuit,$trouveref);
findchaine($page,"commentcamarche",$camarche,$trouveref);
findchaine($page,"altavista",$altavista,$trouveref);
findchaine($page,"libertysurf.fr/funix",$liberty,$trouveref);
findchaine($page,"linuxdoc",$linuxdoc,$trouveref);
findchaine($page,"unknown",$unknown,$trouveref);
findchaine($page,"linuxstart",$linuxstart,$trouveref);
findchaine($page,"voila",$voila,$trouveref);
findchaine($page,"yahoo",$yahoo,$trouveref);
// Si le referer n'a pas été trouvé
// on l'inscrit dans un fichier referer.log
// pour analyse ultérieure
if ($page!="" && $trouveref==0)
{
$fref=fopen($nref,"a");
$chaine=$page."\n";
$rc=fputs($fref,$chaine);
$rc=fclose($fref);
}
// Si le referer n'a pas été trouvé
// on incrémente la variable des referers inconnus
if ($trouveref==0) $unknown=$unknown+1;
// construction de la chaîne qui sera inscrite
// à la ligne 5 de stat.log
$chaineref=$news.";".$liberty.";".$funix.";".$pperso.";".$mail.";".$legratuit.";".$camarche;
$chaineref=$chaineref.";".$altavista.";".$linuxdoc.";".$unknown.";";
$chaineref=$chaineref.$forum.";".$linuxstart.";".$voila.";".$yahoo.";\n";
// On rajoute une ligne au fichier visites.log
// avec date, nom d'hôte (adresse IP), navigateur OS, referer
$d = date("d/m/Y H:i:s");
$ligne = "$d ; $host($ip) ; $expl ; $page\r\n";
if ($ip!="")
{
$flog = fopen($nlog,"a");
$rc = fputs($flog,$ligne);
$rc = fclose($flog);
}
// on fait en sorte que le fichier ne grossisse
// pas démesurément, on le limite aux 50 dernières
visites
$tablog=file($nlog);
$nblignelog=count($tablog);
if ($nblignelog>50)
{
$limit=$nblignelog-50;
$flog=fopen($nlog,"w+");
for ($c=$limit;$c<=$nblignelog;$c++)
{
fputs($flog,$tablog[$c]);
}
$rc = fclose($flog);
}
// on cherche maintenant l'OS utilisé du visiteur
// pour l'instant on l'a pas trouvé
$trouveos=0;
// on passe en revue tous les OS répertoriés
findchaine($expl,"Linux",$linux,$trouveos);
findchaine($expl,"98",$win98,$trouveos);
findchaine($expl,"95",$win95,$trouveos);
findchaine($expl,"SunOS",$sunos,$trouveos);
findchaine($expl,"NT",$nt,$trouveos);
findchaine($expl,"HP-UX",$hpux,$trouveos);
findchaine($expl,"Mac",$mac,$trouveos);
findchaine($expl,"IRIX",$irix,$trouveos);
// Si pas trouvé dans la liste, son OS est inconnu
if ($trouveos==0) $osinconnu=$osinconnu+1;
// Construction de la premièrel ligne du fichier stat.log
concernant les OS
$chaine1=$linux.";".$win98.";".$win95.";".$sunos.";".$nt.";".$hpux.";";
$chaine1=$chaine1.$osinconnu.";".$mac.";".$irix.";\n";
// idem pour les FAI
$trouvefai=0;
findchaine($host,"guetali",$guetali,$trouvefai);
findchaine($host,"wanadoo",$wanadoo,$trouvefai);
findchaine($host,"proxad",$proxad,$trouvefai);
findchaine($host,"grolier",$grolier,$trouvefai);
findchaine($host,"infonie",$infonie,$trouvefai);
findchaine($host,"cybercable",$cybercable,$trouvefai);
findchaine($host,"worldonline",$wol,$trouvefai);
findchaine($host,"club",$club,$trouvefai);
findchaine($host,"univ",$univ,$trouvefai);
findchaine($host,".ens",$univ,$trouvefai);
findchaine($host,"insa",$univ,$trouvefai);
findchaine($host,".edu",$univ,$trouvefai);
findchaine($host,".u-",$univ,$trouvefai);
findchaine($host,".ece.",$univ,$trouvefai);
findchaine($host,"freesurf",$freesurf,$trouvefai);
findchaine($host,"liberty",$liberty,$trouvefai);
findchaine($host,"oleane",$oleane,$trouvefai);
findchaine($host,"inktomi",$inktomi,$trouvefai);
if ($trouvefai==0) $fainconnu=$fainconnu+1;
$chaine2=$guetali.";".$wanadoo.";".$proxad.";".$grolier.";".$infonie.";".$cybercable.";".$wol.";".$club;
$chaine2=$chaine2.";".$univ.";".$freesurf.";".$liberty.";".$oleane.";";
$chaine2=$chaine2.$fainconnu.";".$inktomi.";\n";
// idem pour les pays d'origine
$trouvepays=0;
findchaine($host,".fr",$france,$trouvepays);
findchaine($host,".net",$network,$trouvepays);
findchaine($host,".com",$com,$trouvepays);
findchaine($host,".be",$belge,$trouvepays);
findchaine($host,".ca",$ca,$trouvepays);
findchaine($host,".ch",$suisse,$trouvepays);
if ($trouvepays==0) $paysinconnu=$paysinconnu+1;
$chaine3=$chaine3.$paysinconnu.";".$suisse.";\n";
// idem pour les navigateurs
$trouvenav=0;
findchaine($expl,"Mozilla/4.7",$netscape,$trouvenav);
findchaine($expl,"Mozilla/4.6",$netscape,$trouvenav);
findchaine($expl,"Mozilla/4.5",$netscape,$trouvenav);
findchaine($expl,"Mozilla/4.07",$netscape,$trouvenav);
findchaine($expl,"MSIE",$msie,$trouvenav);
findchaine($expl,"Opera",$opera,$trouvenav);
findchaine($expl,"Weblayers",$weblayers,$trouvenav);
findchaine($expl,"Konqueror",$konq,$trouvenav);
findchaine($expl,"Slurp",$slurpsi,$trouvenav);
if ($trouvenav==0) $navinconnu=$navinconnu+1;
$chaine4=$netscape.";".$msie.";".$navinconnu.";".$slurpsi.";".$konq;
$chaine4=$chaine4.";".$opera.";".$weblayers.";\n";
// A présent on inscrit dans le fichier stat.log les nouveaux
statistiques
// les caractéristiques du visiteur y ont été
inscrites
$fstat=fopen($nstat,"r+");
fseek($fstat,0);
fputs($fstat,$chaine1);
fputs($fstat,$chaine2);
fputs($fstat,$chaine3);
fputs($fstat,$chaine4);
fputs($fstat,$chaineref);
fclose($fstat);
?>
Le fichier stat.log aura donc cette tête là :
485;851;456;28;463;3;175;7;2;
3;337;168;21;23;51;16;55;76;6;178;21;1363;0;
1221;350;204;67;24;587;33;
1361;649;259;0;9;8;0;
19;292;176;14;3;26;22;3;2;57;19;13;1; 45;
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">
<meta name="GENERATOR" content="Mozilla/4.61 [en]
(X11; I; Linux 2.2.9-19mdk i686) [Netscape]">
</head>
<body>
<center>
<h1>Statistiques de consultation</h1></center>
<center><p><br><hr WIDTH="100%"></center>
<h4><a href="#50 derniers">Mes 50 derniers visiteurs</a></h4>
<h4><a href="#FAI">FAI des visiteurs</a></h4>
<h4><a href="#OS">OS utilisé</a></h4>
<h4><a href="#provenance">Provenance des utilisateurs</a></h4>
<h4><a href="#browser">Navigateur utilisé</a></h4>
<h4><a href="#referer">Referer</a></h4>
<hr WIDTH="100%">
<?
$file="visites.log";
$flog = fopen($file,"r");
echo "<table border=1>";
echo "<tr><td>Date et heure</td><td>Nom (adresse IP)</td><td>Navigateur</td>";
echo "<td>Referer</td></tr>";
while ($buffer=fgetcsv($flog,4096,";"))
{
$nav="";
$num=count($buffer);
$row++;
$date=$buffer[0];
$machine=$buffer[1];
$ref=$num-1;
$referer=$buffer[$ref];
if ($referer=="") $referer="Inconnu";
for($c=2;$c<$ref;$c++)
{
$nav=$nav.$buffer[$c];
}
if ($nav=="")
{
$nav="N/A";
}
echo "<tr><td>$date</td><td>$machine</td>";
echo "<td>$nav</td><td>$referer</td></tr>";
}
echo "<a NAME=\"50 derniers\"></a>";
echo "<b>Mes 50 derniers visiteurs</b>";
echo "<p>";
echo "</table>";
fclose($flog);)
$stat="stat.log";
$tab=file($stat);
$os=$tab[0];
$fai=$tab[1];%)
$pays=$tab[2];)
$nav=$tab[3];%)
$ref=$tab[4];%)
$tabos=explode(";",$os);
$tabfai=explode(";",$fai);
$tabpays=explode(";",$pays);
$tabnav=explode(";",$nav);
$tabref=explode(";",$ref);
$linux=$tabos[0];
$win98=$tabos[1];
$win95=$tabos[2];
$sunos=$tabos[3];
$nt=$tabos[4];)
$hpux=$tabos[5];
$osinconnu=$tabos[6];
$mac=$tabos[7];
$irix=$tabos[8];
$guetali=$tabfai[0];
$wanadoo=$tabfai[1];
$proxad=$tabfai[2];
$grolier=$tabfai[3];
$infonie=$tabfai[4];
$cybercable=$tabfai[5];
$wol=$tabfai[6];
$club=$tabfai[7];
$univ=$tabfai[8];
$freesurf=$tabfai[9];
$liberty=$tabfai[10];
$oleane=$tabfai[11];
$fainconnu=$tabfai[12];
$inktomi=$tabfai[13];
$france=$tabpays[0];
$network=$tabpays[1];
$com=$tabpays[2];
$belge=$tabpays[3];
$ca=$tabpays[4];
$paysinconnu=$tabpays[5];
$suisse=$tabpays[6];
$netscape=$tabnav[0];
$msie=$tabnav[1];
$navinconnu=$tabnav[2];
$slurp=$tabnav[3];
$konq=$tabnav[4];
$opera=$tabnav[5];
$weblayers=$tabnav[6];
$news=$tabref[0];
$libertyref=$tabref[1];
$funix=$tabref[2];
$pperso=$tabref[3];
$mail=$tabref[4];
$legratuit=$tabref[5];
$camarche=$tabref[6];
$altavista=$tabref[7];
$linuxdoc=$tabref[8];
$unknown=$tabref[9];
$forum=$tabref[10];
$linuxstart=$tabref[11];
$voila=$tabref[12];
$yahoo=$tabref[13];
echo "<p>";
echo "<hr WIDTH=\"100%\">";
echo "<a NAME=\"FAI\"></a>";
echo "<b>FAI des visiteurs</b>";
echo "<p>";
echo "<table border=1>";
echo "<tr><td>guetali</td><td>wanadoo</td><td>proxad</td><td>grolier</td>";
echo "<td>infonie</td><td>cybercable</td><td>world
online</td>";
echo "<td>club internet</td><td>universites et écoles</td><td>freesurf</td>";
echo "<td>liberty surf</td><td>oleane</td><td>inktomi</td><td>inconnu</td></tr>";
echo "<tr><td>$guetali</td><td>$wanadoo</td><td>$proxad</td><td>$grolier</td>";
echo "<td>$infonie</td><td>$cybercable</td><td>$wol</td><td>$club</td>";
echo "<td>$univ</td><td>$freesurf</td><td>$liberty</td><td>$oleane</td>";
echo "<td>$inktomi</td><td>$fainconnu</td></tr>";
echo "</table>";
echo "<p>";
echo "<hr WIDTH=\"100%\">";
echo "<a NAME=\"OS\"></a>";
echo "<b>OS utilisé</b>";
echo "<p>";
echo "<table border=1>";
echo "<tr><td>linux</td><td>Windows 98</td><td>Windows
95</td>";
echo "<td>Windows NT</td><td>SunOS</td><td>HP-UX</td>";
echo "<td>Mac</td><td>Irix</td><td>Inconnu</td></tr>";
echo "<tr><td>$linux</td><td>$win98</td><td>$win95</td>";
echo "<td>$nt</td><td>$sunos</td><td>$hpux</td><td>$mac</td><td>$irix</td><td>$osinconnu</td></tr>";
echo "</table>";
echo "<p>";
echo "<hr WIDTH=\"100%\">";
echo "<a NAME=\"provenance\"></a>";
echo "<b>Provenance des visiteurs</b>";
echo "<p>";
echo "<table border=1>";
echo "<tr><td>France</td><td>Network</td><td>.com</td><td>Belgique</td>";
echo "<td>Canada</td><td>Suisse</td><td>Inconnu</td></tr>";
echo "<tr><td>$france</td><td>$network</td><td>$com</td><td>$belge</td>";
echo "<td>$ca</td><td>$suisse</td><td>$paysinconnu</td></tr>";
echo "</table>";
echo "<p>";
echo "<hr WIDTH=\"100%\">";
echo "<a NAME=\"browser\"></a>";
echo "<b>Navigateur utilisé</b>";
echo "<p>";
echo "<table border=1>";
echo "<tr><td>netscape</td><td>msie</td>";
echo "<td>Slurp</td><td>Konqueror</td><td>Opera</td><td>Weblayers</td>";
echo "<td>Inconnu</td></tr>";
echo "<tr><td>$netscape</td><td>$msie</td><td>$slurp</td><td>$konq</td>";
echo "<td>$opera</td><td>$weblayers</td><td>$navinconnu</td></tr>";
echo "</table>";
echo "<p>";
echo "<hr WIDTH=\"100%\">";
echo "<a NAME=\"referer\"></a>";
echo "<b>Referer</b>";
echo "<p>";
echo "<table border=1>";
echo "<tr><td>News</td><td>Acces direct</td><td>Perso.libertysurf.fr/funix</td>";
echo "<td>Page perso Free</td><td>Mail</td><td>Le
gratuit.com</td>";
echo "<td>Comment ca marche.net</td><td>Altavista</td><td>Yahoo</td>";
echo "<td>Linux-doc</td><td>LinuxStart</td><td>Voila</td><td>Inconnu</td></tr>";
echo "<tr><td>$forum</td><td>$funix</td><td>$liberty</td>";
echo "<td>$pperso</td><td>$mail</td><td>$legratuit</td>";
echo "<td>$camarche</td><td>$altavista</td><td>$yahoo</td>";
echo "<td>$linuxdoc</td><td>$linuxstart</td><td>$voila</td><td>$unknown</td></tr>";
echo "</table>";
?>
<p>
<hr WIDTH="100%">
</body>
</html>
Voici ce que ça donne en "vrai"
[Retour page d'accueil FUNIX] |