Secondo me il metodo migliore è il conteggio delle sessioni. Registri l'ID di sessione di ogni utente e ad ogni visita verifichi se è già presente...se è presente non incrementi il contatore, altrimenti registri il nuovo ID e incrementi il contatore.

Questo è uno script semplice semplice che avevo scritto tempo fa...usa un file TXt ma il concetto è applicabile anche un DB ovviamente:

CONTATORE BASATO SU FILE TXT:
Codice PHP:
if(!session_id()) { session_start(); }
$filecounter "./counter.txt";
$res fopen($filecounter"r");

if(!isset(
$_SESSION['user']))
{
    
$_SESSION['user'] = session_id();
    
    if(
filesize($filecounter) > 0)
        
$cur fread($resfilesize($filecounter));
    else
        
$cur 0;
        
    
$next $cur+1;        
    
$res fopen($filecounter"w+");
    
fwrite($res$next);
}
else if(
$_SESSION['user'] == session_id())
{
    
$next fread($resfilesize($filecounter));
}

echo 
"Il sito è stato visitato ".$next." volte"
Spero ti sia utile

ciauz