Già in precedenza ho fatto una pillolina che spiegava come poter realizzare un semplice contatore di accessi,era un pò rudimentale
anche perchè se il visitatore aveva i cookie bloccati lo contava più volte.
Questo contatore è un pò più sofisticato,anche se nel codice è molto semplice.
Questo script non fa uso ne di cookie e ne di sessioni ma fa dei controlli sul database, quindì se il visitatore ha i cookie bloccati a noi "nun c n fott proprio" tradotto non ce ne frega.
Inoltre permette di calcolarci L'ora dell'ultimo accesso del visitatore visto che se lo trova nel database aggiorna solo l'ora di un campo che l'ho chiamato uscita.
Lo script può essere ampliabile facilmente.
Incominciamo con la creazione del database:
creaiamo una database e dentro creiamo una tabella con 5 campi così strutturata
1° campo: nome_campo="id" tipo_di_dati="int" opzione="auto_increment"
2° campo: nome_campo="data" tipo_di_dati="varchar" caratteri="20"
3° campo: nome_campo="ora" tipo_di_dati="varchar" caratteri="20"
4° campo: nome_campo="ip" tipo_di_dati="varchar" caratteri="20"
5° campo: nome_campo="uscita" tipo_di_dati="varchar" caratteri="20"
questo è il comando mysql per creare la tabella sopra citata
codice:
CREATE TABLE `visite` (
`id` int(11) NOT NULL auto_increment,
`data` varchar(20) NOT NULL default '',
`ora` varchar(20) NOT NULL default '',
`ip` varchar(20) NOT NULL default '',
`uscita` varchar(20) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM
Questo sotto è lo script
Codice PHP:
<?
//ricavo la data giorno/mese/anno
$giorno=date("d/m/Y");
//ricavo l'orario ore:minuti:secondi
$ora=date("H:i:s");
//ricavo l'ip dell'utente
$ip = getenv("REMOTE_ADDR");
//mi connetto al database mySql
$db=mysql_connect("nomehost","user","pass") or die ("Errore durante la connessione al database");
//creo la query che si va a cercare se l'utente ha gia visitato il sito oggi
$sql="Select * from visite WHERE data=\"$giorno\" && ip=\"$ip\"";
//applico la query
$result=mysql_db_query("statistiche",$sql,$db);
//calcolo il numero di righe
$num_rows=mysql_num_rows($result);
//vede se il numero di righe e maggiore di 0 cioè se l'utente è già passato nel sito in giornata
if($num_rows>0)
{
//se si mi prendo l'identificatore di chi è passato
$id=mysql_result($result,$num_rows-1,"id");
//creao la query che mi aggiorna la data d'uscita dell'utente
$sql="UPDATE `visite` SET `uscita` = \"$ora\" WHERE `id` = \"$id\" LIMIT 1" ;
//applico la query
$result=mysql_db_query("statistiche",$sql,$db);
}
//se $num_rows non è maggiore di 0
else
{
//creo la query sql che va ad inserire il visitatore nel database
$sql="INSERT INTO visite (data,ip,ora) VALUES('".$giorno."','".$ip."','".$ora."')";
//applico la query sul database
mysql_db_query("statistiche",$sql,$db);
mysql_close();
};
//fine inserimento
?>
<?
//Lettura
$query ="SELECT count(id) FROM visite";
//applico la query
$result = mysql_db_query('statistiche',$query,$db);
$visite=mysql_result($result,0);
?>
Per far funzionare questo script basta creare una pagina php con il codice che ho scritto e la includiamo in tutte le pagine del nostro sito esempio:
Codice PHP:
<?
include"contatore.php";
echo "$visite";
?>