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($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);
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...)