In questa pillola, che può essere utile per i principianti, spiego come ho realizzato un semplice contatore di accessi che funziona con i cookie.
Per iniziare creiamo una tabella
con 4 campi:
1° campo id con l'opzione auto_increment in modo che ad ogni inserimento di dati si incrementa in automatico;
2° campo data dove andremmo a scrivere la data per ogni accesso;
3° campo ora dove andremmo ad inserire l'ora di ogni accesso;
4° campo IP dove andremmo ad inserire l'IP del visitatore;
Questo è il codice sql per creare la tabella.
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 '',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1581 ;
Passiamo al codice PHP
Codice PHP:
<?
//ricavo l'ip del visitatore
$ip = getenv("REMOTE_ADDR");
//ricavo la data giorno/mese/anno
$giorno=date("d/m/Y");
//ricavo l'orario ore:minuti:secondi
$ora=date("H:i:s");
//se la variabile 'giorno' del cookie è diversa della data attuale
if($_COOKIE['giorno']!=$giorno)
{
//setto il cookie con la variabile giorno = alla data di oggi
setcookie ("giorno",$giorno,time()+79200);
//mi connetto al database MySql
$db=mysql_connect("nomehost","nome",'pass') or die ("Errore durante la connessione al database");
//creo la query sql
$sql="INSERT INTO visite (data,ip,ora) VALUES('".$giorno."','".$ip."','".$ora."')";
//applico la query sul database
mysql_db_query("nomedatabase",$sql,$db);
mysql_close();
};
//
?>
Questa è la parte principale di questo script.
Funziona così:
Inizialmente mi ricavo tutti i dati che mi servono per l'inserimento nel DB, di seguito
Creo una condizione (se la variabile 'giorno' del cookie è diversa della data attuale)
invia il cookie all'utente con la variabile giorno = alla data attuale,
in modo che non inserisce i dati nel DB per ogni aggirnamento della pagina e di suguito scrive i dati nella tabella.
Seconda parte
Codice PHP:
<?
// Lettura
//creo la query che mi seleziona tutti gli "id"
$query ="SELECT id FROM visite";
//applico la query al database
$result = mysql_db_query('nomedatabase',$query,$db);
//mi ricavo il numero di righe che sarà il numero di visite che hai ricevuto
$visite=mysql_num_rows($result);
mysql_close();
?>
Spero che funzioni.
Voglio dire un'ultima cosa:
Il 5% degli utenti connessi ad internet ha i cookie disabilitati e quindi ad ogni refresh si aggiunge una visita, questo si può evitare facilmente però ora non ho il tempo di scrivere. :quote:
Semplice vero?