- Home
- Categorie
- Coding e Sistemistica
- PHP
- Utenti loggati online/offline
-
Utenti loggati online/offline
Salve gente come posso avere con certezza la situazione degli utenti loggati sul mio sito, vorrei far leggere lo stato [online] or [offline] dei singoli utenti registrati.
Potrei scrivere nel database al momento del login effettuato, ma poi per lo stato [offline] a parte il logoff, se la sessione scade non ho modo di verificare e di conseguenza variare lo stato dell'utente da on a offline ...
thanks all
-
Nel DB puoi inserire la data e ora del login e dell'ultimo accesso effettuato ad una pagina del sito.
Superata una certa differenza stabilita, come 30 minuti di inattività, l'utente diventa offline automaticamente.
Questo controllo lo puoi fare tranquillamente con PHP.Es.
Ora Login: 11.00
Ora corrente: 11.40
Stato: User OfflineCiao!
-
.... e se resto loggato per più di 30min. sulla stessa pagina ? Il sistema lo scollega ma ingiustamente !!
-
Beh è normale... mica puoi sapere che cosa fa l'utente... puoi sapere lo stato solo dalle richieste che fa al tuo server...
PS chi rimane 1 ora sulla stessa pagina?
-
Per evitare questo problema, utilizza JS per fare richieste asincrone ad una pagina che ha il compito di eseguire il refresh dello stato.
-
@Sups said:
Per evitare questo problema, utilizza JS per fare richieste asincrone ad una pagina che ha il compito di eseguire il refresh dello stato.
ehm approfindiamo l'argomento spiegati meglio JS lo conosco ma cosa intendi per richiesta asincrona ? Parli di Ajax ... ? O puro JS ?:)
thanks
-
Se devi fare richieste asicrone con JS si deve usare AJAX, in particolare l'oggetto XmlHttpRequest.
-
@Sups said:
Se devi fare richieste asicrone con JS si deve usare AJAX, in particolare l'oggetto XmlHttpRequest.
si si ok io per fortuna ho un pò di Jquery nelle pagine quindi usare Ajax è una bazzecola, ma fammi capire come conciliare il tutto per lo scopo ... di capire se un utente loggato è ancora online o meno ....
thanks
-
Nel DB inserisci la data e ora del login o dell'ultimo accesso effettuato ad una pagina del sito e ad ogni pagina web inserisci una funzione ajax che ogni tot minuti, esempio 10, aggiorna lo stato dell'utente.
Quando vuoi sapere lo stato di un utente, esegui una query sull'ora dell'ultimo accesso, verifichi la differenza di tempo ed elabori una risposta.Es:
Ora Corrente: 11.00
Ora Accesso: 11.05 // Stato: Connesso
Ora Accesso: 11.20 // Stato: Idle
Ora Accesso: 11.30 // Stato: Disonnesso
-
Es:
Ora Corrente: 11.00
Ora Accesso: 11.05 // Stato: Connesso
Ora Accesso: 11.20 // Stato: Idle
Ora Accesso: 11.30 // Stato: Disonnessommm....:? scusami Sups se alle 11:00 faccio il login ... alle 11.05;11.20;11.30 cosa accade ? Si tratta di 3 accessi ? Se sì perchè alle 11.30 è disconnesso ?:(
scusa ma non sono abituato a queste procedure temporali ...
-
Ho sbagliato con gli orari, le ore di accesso dovevano essere 10.05 ecc...
Comunque, adesso ti faccio un esempio in pseudo-codice.- L'utente "mario" fa il login e visita una pagina del sito alle 10.00
UPDATE utenti SET ultima_visita='10.00' WHERE nome='mario'
-
L'utente "mario" abbandona il sito senza fare logout alle 10.05
-
Verifico se "mario" è ancora in linea alle 11.00
ora_attuale = get(ora);
ultima_visita = get("SELECT ora_attuale FROM utenti WHERE nome='mario'");differenza = ora_attuale - ultima_visita;
if(differenza = "5 minuti") return("Connesso");
if(differenza = "20 minuti") return("Idle");
if(differenza = "30 minuti") return("Disconnesso");
-
@Sups said:
Ho sbagliato con gli orari, le ore di accesso dovevano essere 10.05 ecc...
Comunque, adesso ti faccio un esempio in pseudo-codice.- L'utente "mario" fa il login e visita una pagina del sito alle 10.00
UPDATE utenti SET ultima_visita='10.00' WHERE nome='mario'
-
L'utente "mario" abbandona il sito senza fare logout alle 10.05
-
Verifico se "mario" è ancora in linea alle 11.00
ora_attuale = get(ora);
ultima_visita = get("SELECT ora_attuale FROM utenti WHERE nome='mario'");differenza = ora_attuale - ultima_visita;
if(differenza = "5 minuti") return("Connesso");
if(differenza = "20 minuti") return("Idle");
if(differenza = "30 minuti") return("Disconnesso");scusate ma questa cosa potrebbe essere fatta anche per la mia chat? sups, mi puoi aiutare, avevo aperto pure un topic a riguardo... sappiatemi dire, grazie.