Guarda...uso PHP da circa una settimana...però mi ci diverto un casino.
Sto scriptino fa skifo ma l'ho realizzato in venti minuti (però ci ho pensato un pò prima)...

'FITIURS':
Ti conta il totale dei visitatori (senza tener conto dei refresh, gli utenti online e pure i passsaggi dell'instancabile googlebot....

Sto blocco di codice l'ho piazzato nella funzione che si occupava di farmi il footer...se vuoi fare le cose fatte bene puoi suddividere il tutto in due funzioni.
Una che aggiorna il file...l'altra che lo legge dove ti servono le statistiche.
Oppure fai in modo di avere indietro da un'unica funzione i dati che ti servono...fai te!
Il file di log se esiste viene usato altrimenti lo crea...

Codice PHP:

// 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($hfile20)); 
    
$total      trim(fgets($hfile20));
    
$total_gbot trim(fgets($hfile20));
    
    while(!
feof($hfile))
    {
      
$ip trim(fgets($hfile20));
      
$tm trim(fgets($hfile20));
      
      
// 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); 
Oppure ti scarichi qualche counter dalla lista PHP script del sito oppure fai il grande passo con PHPstats (che ti dice pure quante volte un utente con Firefox 1.0 va a pisciare in media tra le 10 e le 11 di sera...)