• [v9] Area Riservata - Chi è online ... 5 1
Currently:  

Autore Topic: [v9] Area Riservata - Chi è online ...  (Letto 4260 volte)

serzio

  • Amministratore
  • Utente storico
  • *****
  • Post: 1706
[v9] Area Riservata - Chi è online ...
« il: 10 Luglio, 2012, 23:53:44 »
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  >:D ....

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.

Codice:
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.  ;)
« Ultima modifica: 21 Febbraio, 2013, 16:35:07 da serzio »

MauroB.

  • Nuovo arrivato
  • *
  • Post: 20
Re:[v9] Area Riservata - Chi è online ...
« Risposta #1 il: 17 Luglio, 2012, 12:59:53 »
Un semplice esperimento di programmazione da due soldi ...  ma funzionante ... per mostrare come visualizzare l'elenco degli utenti loggati correntemente on line.

...


GRANDE SERZIO....LO PROVO SUBITO....!
Grazie mille per il tempo che dedichi e che vorrai dedicare ai profani come me!
Mauro

Davide

  • Nuovo arrivato
  • *
  • Post: 53
Re:[v9] Area Riservata - Chi è online ...
« Risposta #2 il: 20 Febbraio, 2013, 23:45:05 »
Dove metto who_addon.php? nella cartella log?

serzio

  • Amministratore
  • Utente storico
  • *****
  • Post: 1706
Re:[v9] Area Riservata - Chi è online ...
« Risposta #3 il: 21 Febbraio, 2013, 08:36:50 »
Dove metto who_addon.php? nella cartella log?

La cartella /log ... è una cartella di servizio. Il file php può essere messo ovunque tu voglia a patto di includerlo correttamente. Io suggerisco di inserirlo nella root del sito insieme a tutte le altre pagine, ma è una scelta personale.

Davide

  • Nuovo arrivato
  • *
  • Post: 53
Re:[v9] Area Riservata - Chi è online ...
« Risposta #4 il: 21 Febbraio, 2013, 14:44:40 »
Salve, ho fatto tutto quello che c'è scritto, visto e rivisto più volte. Però non funziona nulla,o meglio non mi si visualizzano i nomi degli utenti online. Anche se apparentemente sembra tutto apposto.
Non so, forse sbaglio qualcosa. Anche se non so cosa perché ho seguito tutto passo passo. Ti ringrazio lo stesso, almeno solo perché rispondi sempre e hai tanta pazienza. ;D

serzio

  • Amministratore
  • Utente storico
  • *****
  • Post: 1706
Re:[v9] Area Riservata - Chi è online ...
« Risposta #5 il: 21 Febbraio, 2013, 16:37:05 »
Salve, ho fatto tutto quello che c'è scritto, visto e rivisto più volte. Però non funziona nulla,o meglio non mi si visualizzano i nomi degli utenti online. Anche se apparentemente sembra tutto apposto.
Non so, forse sbaglio qualcosa. Anche se non so cosa perché ho seguito tutto passo passo. Ti ringrazio lo stesso, almeno solo perché rispondi sempre e hai tanta pazienza. ;D

Hai ragione, è colpa mia, nel copia e incolla del codice sono saltate alcune righe della funzione di refresh refreshlog().

Ringrazio Silvana che mi ha fatto notare l'errore e te per aver evidenziato il problema.

realweb

  • Nuovo arrivato
  • *
  • Post: 15
Re:[v9] Area Riservata - Chi è online ...
« Risposta #6 il: 18 Gennaio, 2014, 13:25:13 »
Come si può avere questo risultato?
Vedete la voce operatori attivi sulla destra qui