Mesvisiteurs

Description

Voici un script simple qui permet de connaître les visiteurs de mon site web. Il n'utilise pas de base de données ni aucun cookie. Pour chaque visiteur on enregistre son adresse IP, la date de sa première visite, la date de sa dernière visite et le nombre de ses visites. On fait l'hypothèse que deux adresses IP différentes corespondent à deux visiteurs différents. On décide qu'un autre visiteur venu moins d'une heure avant le visiteur actuel est un visiteur connecté simultanément. Et quand le visiteur fait une nouvelle visite à moins d'une heure après sa dernière visite celle-ci n'est pas comptée comme une viste supplémentaire. Toutes ces suppositions sont arbitraires et quand elles ne sont pas respectées les résulats sont biaisés mais restent utilisables.
Pour installer le logiciel on met dans le dossier de la page d'accueil le contenu du zip ci-joint, sauf bien sûr les fichiers index.html et exemple.html qui servent à montrer comment activer le script visites.php. Les fichiers statistiques.php et visiteurs.php permettent d'afficher les données des visites effectuées.
Ce logiciel convient pour un site web simple et visité modestement.

Source / Exemple :


<?
function getUserIP() {
    if($_SERVER) {
        if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
        elseif(isset($_SERVER['HTTP_CLIENT_IP'])) $ip = $_SERVER['HTTP_CLIENT_IP'];
        else $ip = $_SERVER['REMOTE_ADDR'];
    }
    else {
        if(getenv('HTTP_X_FORWARDED_FOR')) $ip = getenv('HTTP_X_FORWARDED_FOR');
        elseif(getenv('HTTP_CLIENT_IP')) $ip = getenv('HTTP_CLIENT_IP');
        else $ip = getenv('REMOTE_ADDR');
    }
    return ($ip);
}
$now=time();
$dossier="visites";
$visiteur=getUserIP();    // adresse IP du visiteur actuel
$new="oui";
$handle=opendir($dossier);
while ($tmp = readdir($handle)) {
    if($tmp == "$visiteur") {     // si le visiteur actuel est déjà venu 
        $new="non";
        $fichier="$dossier/$visiteur";
        $fp=fopen("$fichier","r");
        $buf = fgets($fp,40);
        fclose($fp);
        list($nb,$vis1,$visz)=explode('|',$buf);
        if(($now-$visz)>3600) { $nb=$nb+1; }  // si c'est une nouvelle visite 
        $fp=fopen("$fichier","w");
        fputs($fp,"$nb|$vis1|$now");          // on met à jour son fichier
        fclose($fp);
    }
}
if($new == "oui") {   // si l'adresse IP du visiteur n'a pas été vue on crée son fichier 
    $nb=1;
    $fichier="$dossier/$visiteur";
    $fp=fopen("$fichier","w");
    fputs($fp,"$nb|$now|$now");
    fclose($fp);
}
$nbs=0;   // nombre de visiteurs actuels connectés "simultanément" ( dans la même heure )
$handle=opendir($dossier);
while ($tmp = readdir($handle)) {
    if($tmp!="." && $tmp!=".." && $tmp!="index.html" && $tmp!="maximum") {
        $fichier="$dossier/$tmp";
        $fp=fopen("$fichier","r");
        $buf = fgets($fp,40);
        fclose($fp);
        list($nb,$vis1,$visz)=explode('|',$buf);
        if(($now-$visz)<3600) { $nbs=$nbs+1; }  // on a trouvé un visiteur de la même heure
    }
}
$fichier="$dossier/maximum";
$fp=fopen("$fichier","r");
$buf = fgets($fp,40);
fclose($fp);
list($nbx,$visx)=explode('|',$buf);  // nbx : nombre maximum de visiteurs "simultanés" 
if($nbs > $nbx) {
    $fp=fopen("$fichier","w");  
    fputs($fp,"$nbs|$now");    // mise à jour du maximum de visiteurs "simultanés"
    fclose($fp);
}
?>

Conclusion :


Le fichier visites.php est commenté. L'installation est très simple. Et pour l'activer il suffit d'ajouter dans le html des pages visitées :
<script language="javascript" src="visites.php"></script>
On peut facilement faire quelques améliorations et/ou variantes.
Vos remarques sont les bienvenues.

Codes Sources

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.