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);