Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Contare gli utenti online con PHP

Uno script in PHP per contare il numero di utenti che sta visitando una pagina Web. Uso delle sessioni e del database
Uno script in PHP per contare il numero di utenti che sta visitando una pagina Web. Uso delle sessioni e del database
Link copiato negli appunti

Esistono diverse procedure per creare un script PHP con cui contare il numero di utenti on line su una determinata pagina Web o su un sito

Nel corso di questa trattazione verrà proposto un esempio basato sull'utilizzo combinato di MySQL per l'archiviazione dei dati e delle sessioni per la memorizzazione degli accessi in modo univoco.

La struttura del database

La realizzazione di un un'applicazione destinata al conteggio e alla visualizzazione del numero di utenti on line richiederà:

  • un database, chiamato per esempio statistiche
  • un file, chiamato ad esempio config.php
  • un file con il codice per il conteggio degli utenti, per la stampa a video dei risultati e per la cancellazione dei record obsoleti (chiamato ad esempio utenti_on_line.php

In pratica il database verrà utilizzato per memorizzare le informazioni relative agli utenti, il file di configurazione permetterà all'applicazione di interagire con MySQL e il file dello script si occuperà di restituire in output i dati riguardanti gli utenti online in uno specifico intervallo di tempo; una volta superato questo intervallo le informazioni relative ad una sessione verranno cancellate in quanto obsolete.

All'interno del database statistiche sarà presente una sola tabella, chiamata ad esempio utenti_on_line, essa dovrà contenere 3 campi:

  • un campo id
  • un campo sessione session_id()
  • un ultimo campo chiamato timestamp timestamp

Di seguito verrà proposto l'SQL necessario per la creazione della tabella e dei relativi campi:

CREATE TABLE `utenti_on_line` (
  `id` int(11) NOT NULL auto_increment,
  `sessione` varchar(50) NOT NULL,
  `timestamp` int(11) default '0',
  PRIMARY KEY  (`id`)
);

In realtà il campo id non è fondamentale per il funzionamento dell'applicazione, è stato comunque introdotto per correttezza formale e perché potrebbe tornare utile nel caso in cui si desideri contare il numero di record memorizzati dallo script nel corso del suo funzionamento. Il tipo di dato TIMESTAMP è supportato nativamente da MySQL, in alternativa è quindi possibile lasciare che sia il DBMS a registrarlo impostando come valore predefinito il CURRENT_TIMESTAMP.

I file dell'applicazione

Un volta creato e strutturato il database, il prossimo passaggio sarà quello di creare un semplice file di configurazione con i parametri necessari per la connessione al DBMS e per la selezione del database; per far questo sarà possibile definire una classe, come quella descritta nell'esempio seguente, che potrà essere salvata in un file config.php per l'inclusione:

<?php
class MySQL
{
 function MySQL()
 {
 # hostname di MySQL

 # nome utente per la connessione

 # password dell'utente

 # nome del database

 # connessione al DBMS

 # selezione del database

# istanza della classe

Fatto questo si potrà passare alla fase che concerne la creazione del cuore dell'applicazione: il file che fungerà da contatore, da visualizzatore e da gestore degli utenti.

<?php
# inizializzazione della sessione

# creazione dell'identificatore di sessione

# memorizzazione in variabile del momento di connessione

# definizione dell'intervallo di tempo valido per l'utente connesso

# inclusione del file di configurazione  

# confronto tra identificatore di sessione e dati in tabella

# se l'identificatore non è presente viene creato un nuovo record

        # se l'identificatore è già presente viene aggiornato il 
                # valore relativo al momento di connessione

# estrazione dei record presenti in tabella per il conteggio 

# stampa a video del conteggio

# cancellazione dei record obsoleti 

# chiusura della connessione 

In pratica l'applicazione registra un identificatore per ogni sessione inizializzata dall'accesso di un utente, se questo identificatore non è presente nella tabella viene aggiunto, se esso è invece già presente viene aggiornato il dato relativo al momento del suo accesso; nel caso in cui il momento di accesso di un utente sia inferiore al timestamp ottenuto sottraendo 5 minuti (300 secondi) dal risultato della funzione time(), il record corrispondente verrà eliminato considerando l'utente non più online.

Ti consigliamo anche