Usa un file/db per memorizzare gli ip unici dei visitatori...funziona anche con i cookie disabilitati.
Questo squallido script l'ho postato un pò di tempo fa
Non richiede db e nemmeno un file preesistente.
Riporta hit totali, utenti online, passaggi googlebot.
codice:
// array di visitatori e timestamp in cui sono arrivati
$visitor_ip = array();
$visitor_tm = array();
$total = 0; // totale da inizio dei tempi
$total_gbot = 0; // totale gbot da inizio dei tempi
$meastime = time(); // default per inizio dei tempi
$filename = "visitors.txt"; // il file di log
// inizio lettura file
if(file_exists($filename)) // esiste?
{
$hfile = fopen($filename, "r");
if($hfile){
$meastime = trim(fgets($hfile, 20));
$total = trim(fgets($hfile, 20));
$total_gbot = trim(fgets($hfile, 20));
while(!feof($hfile)){
$ip = trim(fgets($hfile, 20));
$tm = trim(fgets($hfile, 20));
// vedi? acquisisco solo i visitatori
// presenti da meno di 600 secondi (10 min)
if(time()-$tm<=600){
$visitor_ip[]= $ip; // push
$visitor_tm[]= $tm; // push
}
}
fclose($hfile);
}
} // fine lettura file
if(isset($_SERVER["REMOTE_ADDR"])) // sempre vero?
{
$current_ip = $_SERVER["REMOTE_ADDR"];
$current_tm = time();
// dopo aver letto l'ip del visitatore controllo
// se è OK e se non è presente nella lista
if($current_ip!="" && !count($visitor_ip) || !in_array($current_ip, $visitor_ip)){
// non è presente! aggiungo!
++$total;
$visitor_ip[]=$current_ip;
$visitor_tm[]=$current_tm;
// ciliegina sulla torta...
if(isset($_SERVER["HTTP_USER_AGENT"])){
if(stristr($_SERVER["HTTP_USER_AGENT"], "googlebot")) {
++$total_gbot;
}
}
}
}
// riscrivo il file con i dati
// alcuni visitatori potrebbero essere scomparsi
// perchè assenti da più di 10 minuti
$hfile = fopen($filename, "w");
if($hfile){
fwrite($hfile, $meastime."\n");
fwrite($hfile, $total."\n");
fwrite($hfile, $total_gbot."\n");
// gli utenti online sono quelli...rimasti
$online = count($visitor_ip);
for($i=0; $i<count($visitor_ip); $i++){
fwrite($hfile, $visitor_ip[$i]."\n");
fwrite($hfile, $visitor_tm[$i]."\n");
}
fclose($hfile);
}
// a questo punto hai le variabili
// $meastime : data di inizio registrazione
// $total : numero di visitatori totale (da $meastime)
// $total_gbot : numero di visitatori che erano googlebot
// $online : numero di visitatori online
// la data la puoi formattare in numeri umani così
$ddata = strftime("%d/%m/%Y" , $meastime);