Come vedere quanti utenti sono Online sul nostro sito!
Ciao!
Tempo fa un utente mi ha contattato chiedendomi se fosse possbile vedere quanti utenti online sul suo sito, magari non utilizzando account com “shinystats”, etc…
Una piccola soluzione a questo problema potrebbe essere questa semplice guida.
Lo script necessita di una sola semplicissima tabella per funzionare. Per cui, createla nel vostro database, tramite interfaccia web con phpmyadmin o da shell o come preferite, eseguendo la query seguente:
CREATE TABLE utentionline (
id int(11) NOT NULL auto_increment,
time int(15) NOT NULL default ‘0′,
ip varchar(15) NOT NULL default ‘0.0.0.0′,
PRIMARY KEY (id)
)
Si creerà la tabella “utentionline” con i campi: id (chiave primaria auto incrementante), time e ip.
Create ora la directory “statistiche” nel sito ed al suo interno una sotto directory, chiamata “conf“.
Adesso con il nostro editor di testo creiamo un nuovo file vuoto, nel quale andremo ad inserire i parametri per la connessione al database, e gli altri elementi che serviranno per il funzionamento del tool.
<?
//Dati di accesso al database
//Inseriamo l’host del nostro server MySql
//Nel 99% dei casi resta localhost
$dbhost = “localhost”;
//Inseriamo il nome utente per il database
$dbuser = “NostroNomeUtente”;
//Inseriamo la password per il database
$dbpass = “NostraPasswordDatabase”;
//Inseriamo il nome del database
$dbname = “NomeDatabase”;
//Inseriamo un limite alla sessione per ogni visitatore
$session_limit = “5″;
//Inseriamo il nome della tabella interessata
$dbtable = “utentionline”;
//Inseriamo il testo che comparira’ davanti al numero di utenti on line
$testoutentionline = “Utenti On Line”;
?>
Salvate il file in \statistiche\conf\ e rinominatelo conf.php.
Con un editor di testo, create un nuovo file vuoto, nel quale andrete ad inserire i seguenti comandi.
<?
//Includiamo il file di configurazione
include(”conf/conf.php”);
//Definiamo le variabili
//Momento in cui un client accede al nostro sito
$time = time();
//Definiamo il momento della scadenza della sessione di visita
$scadenza = $time – ($session_limit*60);
//Prendiamo l’ip del visitatore
$ip = getenv(REMOT_ADDR);
//Connettiamoci al server MySql
$connect = @mysql_connect($dbhost,$dbuser,$dbpass);
//Selezioniamo il database che ci interessa
@mysql_select_db($dbname,$connect);
//Inviamo al database i dati del client che si connette
$query = @mysql_query(”INSERT INTO $dbtable VALUES (’$id’,'$time’,'$ip’)”,$connect);
//Cancelliamo le righe relative alle sessioni scadute
$query = @mysql_query(”DELETE FROM $dbtable WHERE time<’$scadenza’”,$connect);
//Selezioniamo una riga per ogni indirizzo IP
//In definitiva raggrupperemo il tutto per ip identici
$query = @mysql_query(”SELECT DISTINCT ip FROM $dbtable”,$connect);
//Calcoliamo il numero di utenti on line che ricaveremo
//dal conteggio delle righe così ottenute
$utenti_on_line = mysql_numrows($query);
//Visualizziamo il numero di utenti on line
//Aggiustate la visualizzazione come preferite
echo $testoutentionline;
echo $utenti_on_line;
//Chiudiamo la connessione al databse
@mysql_close();
?>
Salvate il file nella directory \statistiche\ nominandolo utentionline.php, ed il gioco è fatto. A questo punto basterà includere utentionline.php nel file che vogliamo monitorare (verosimilmente index.php), inviamo tutto al server, ed in pochi secondi sapremo quanti utenti stanno navigando nel nostro sito.
<? include(”statistiche/utentionline.php”); ?>
E’ chiaro che in un software CMS dove le pagine fanno sempre riferimento ad una, allora basterà includere utentionline.php in un solo file. Mentre, nel caso in cui il sito abbia diversi contenuti statici, bisogna includerloin tutti i file da monitorare.
Semplice, vero??
Alla prossima!!

dicembre 24th, 2011 at 02:38
… [Trackback] …
[...] Read More Infos here: senzacolpa.altervista.org/blog/?p=83 [...] …
gennaio 6th, 2012 at 14:10
… [Trackback] …
[...] Read More here: senzacolpa.altervista.org/blog/?p=83 [...] …
gennaio 18th, 2012 at 01:41
… [Trackback] …
[...] Read More here: senzacolpa.altervista.org/blog/?p=83 [...] …