Un semplice esperimento di programmazione da due soldi ... ma funzionante ... per mostrare come visualizzare l'elenco degli utenti loggati correntemente on line.
Premetto che con website non possiamo pretendere di poter gestire un numero elevato di utenti per l'accesso alle aree riservate e che non tutti hanno un DB nel loro piano di hosting.
La base dei dati non può essere un DB di testo in quanto si sarebbe dovuto prevedere un sistema di lock del file durante la procedura di inserimento e cancellazione degli utenti. Oltretutto un DB di testo sarebbe stato scomodo per la gestione di un elenco di utenti e sarebbe stato dispendioso l'uso di un array in memoria .... come fa website
....
Ed allora l'idea che ho seguito è la seguente: per ogni utente che si collega, viene creato un file di testo contenente un timestamp (data e ora di collegamento). Dell'utente che si scollega, per ora non mi interessa poichè ho previsto un timeout di 5 minuti (300 secondi) perchè un utente venga considerato attivo a partire dal timestamp della sua ultima attività. Ogni accesso ad una pagina protetta (attività), e quindi facente capo alla sessione, causa l'aggiornamento del timestamp.
Alla richiesta del "who is online", si legge l'elenco dei files presenti e per ciascuno di essi si considerano attivi quelli con una età inferiore ai 300 secondi mentre gli altri vengono direttamente cancellati per liberare spazio.
Per far ciò, ho realizzato un piccolo script, chiamato
who_addon.php, da includere alle pagine protette ed a quella del "who is online" per l'ìimplementazione delle due funzioni in oggetto. Si potrebbe espandere con l'aggiunta delle istruzioni relative al logout, ma avrei duto metter le mani sui file php di website.
Only registered users can see contents. Please click here to Register or Login.
Dal codice si vede chiaramente che ho realizzato due funzioni che servono a visualizzare gli utenti e ad effettuare il refresh del timestamp dell'ultima attività del singolo utente. Il codice è scritto di getto, è grezzo ed è migliorabile anche se estremamente semplice.
L'implementazione è molto semplice, per prima cosa ho creato una cartella chiamata
log sulla root del sito web, poi su tutte le pagine con accesso riservato ho inserito l'include dello script:
[ Guests cannot view attachments ]
e un oggetto HTML con la chiamata alla funzione di aggiornamento:
[ Guests cannot view attachments ]
A questo punto rimane da utilizzare la funzione who(), per farlo occorre inserire anche nella pagina, eventualmente protetta, che la contiene la parte con l'include dell'addon:
[ Guests cannot view attachments ]
e naturalmente l'immancabile codice per la visualizzazione degli utenti in linea negli ultimi 300 secondi:
[ Guests cannot view attachments ]
Per il momento, accontentatevi di quanto reso disponibile.
L'esempio funzionante è
<< QUI >>Naturalmente la proprietà di questo codice rimane del sottoscritto anche se ne concedo l'utilizzo gratuito a tutti gli utenti del forum ... magari con un link di ringraziamento.