Voici un code simple qui va vous permettre de compter les visiteur sur votre site.
Le script n'utilise pas de base de donnée, tous est stocké dans un fichier et les ips sont purgées selon un temps que vous définissez.
function cmpt_visit($ip_file_cmpt, $timeout_cmpt = 36) { // timeout_cmpt en heure $nbr_connect = 0; $nbr_connect_auj = 0; $var_ip=''; $var_bool=false; if($fp = @file($ip_file_cmpt)) { $now_time = time(); foreach ($fp as $record_cm) { if ((trim($record_cm) != '') && (strpos($record_cm,':')>0)) { $subdata = explode("\t", $record_cm); list($jour, $mois, $annee) = explode("/", substr($subdata[1], 0, 10)); list($heure, $minute, $seconde) = explode(":", substr($subdata[1], 10, 18)); $heure=trim($heure); $minute=trim($minute); $seconde=trim($seconde); $mois=trim($mois); $jour=trim($jour); $annee=trim($annee); // Prise du nombre de connecté (les 5 derniere minutes) if ($now_time < mktime($heure, $minute, $seconde, $mois, $jour, $annee) + 180) { $nbr_connect++; } if (mktime(0, 0, 0, $mois, $jour, $annee) == mktime(0, 0, 0, date('m'), date('d'), date('Y'))) { $nbr_connect_auj++; } // Si l'IP est là depuis plus du time-out if ($now_time < mktime($heure, $minute, $seconde, $mois, $jour, $annee) + 3600 * $timeout_cmpt) { if ($_SERVER["REMOTE_ADDR"] == $subdata[0]) { $var_bool = true; } $var_ip .= $record_cm; } } } } // Prise des infos $fp = fopen($ip_file_cmpt, "a+"); // Ouverture du fichier en Lecture / Ecriture $d = trim(fgets($fp, 100)); // vire le die $nbr_visit = trim(fgets($fp, 100)); // Prise du nombre de connectés $date_start = trim(fgets($fp, 100)); // Prise de la date // Création des bonnes valeurs if($nbr_visit == "") { $nbr_visit = 0; fputs($fp, "$nbr_visit\n"); } if($date_start == "") { $date_start = date("d/m/Y"); fputs($fp, "$date_start\n"); } fclose($fp); // Fermeture fichier // On augmente si l'IP n'est pas encore connu... if ($var_bool == false) { $fp = @fopen($ip_file_cmpt, "w"); // Ouverture du fichier en écriture fputs($fp, '<?php die(); ?>'."\n"); $nbr_visit++; // Augmentation du compteur fputs($fp, $nbr_visit."\n"); // Sauvegarde du nouveau nombre fputs($fp, $date_start."\n"); // Réécriture de la date $var_ip .= $_SERVER["REMOTE_ADDR"]."\t".date("d/m/Y H:i:s")."\n"; fputs ($fp, $var_ip); fclose($fp); $nbr_connect++; $nbr_connect_auj++; } if ($nbr_connect==0) { $nbr_connect=1; } if ($nbr_visit==0) { $nbr_visit=1; } if ($nbr_connect_auj==0) { $nbr_connect_auj=1; } $retcmpt[0] = $date_start; $retcmpt[1] = $nbr_visit; $retcmpt[2] = $nbr_connect; $retcmpt[3] = $nbr_connect_auj; return $retcmpt; }
L'utilisation est simple, il suffit de faire appel a la fonction :
<?php $ret = cmpt_visit("moncompteur.txt",55); ?>
La fonction renvois un tableau de 4 valeurs :
<?php $ret = cmpt_visit("moncompteur.txt",55); echo "Enregistrement des visite depuis le ".$ret[0]."<br>"; echo "Nombre total de visite ".$ret[1]."<br>"; echo "En ce moment : ".$ret[2]."<br>"; echo "Aujourd'hui ".$ret[3]."<br>"; ?>
— iDo 27/02/2006 13:22
Discussion