Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Gestione utente online

  1. #1

    Gestione utente online

    Un problema tecnico da risolvere. Vorrei far vedere all’interno del sito gli utenti che hanno effettuato il login e sono online in quel momento.
    Generalmente come si gestisce la cosa?
    Io avrei pensato ad una cosa del genere, ma prima di mettermi a lavoro vorrei un vostro parere:

    _ l’utente effettua il login, apro una sessione univoca e scrivo all’interno di una tabella (tb_session) la data con la sessione.
    Poi effettuo una SELECT sulla tabella tb_session con la data attuale e vedo quale sessione è aperta.

    Però come faccio a sapere se l’utente chiude la finestra del browser e quindi non è piu’ online ma rimane nella tabella tb_session il suo nome e la session?

    Come si gestisce generalmente la funzione “utente pippo online?”

    Non mi interessa il codice ma la logista di gestione.

    grazie
    NO WORK TRIBE
    www.surftribe.it

  2. #2
    Si decide un tempo di inattivita' trascorso il quale l'utente si considera scollegato. Ogni volta che un utente visualizza una pagina del sito tieni traccia dell'orario di questa azione. Trascorsi - per esempio - cinque minuti dall'ultima azione, consideri l'utente offline.

  3. #3
    ma sempre scrivendo su una tabella o portandosi nella sessione anche il dato dell'utente?
    Esempio l'utente effettua login apro una sessione univoca dove oltre un idsession univoco metto in sessione anche l'username. A questo punto leggo tutte le sessioni aperte (ma si puo' fare?) ed effettuo il controllo che mi hai suggerito?
    NO WORK TRIBE
    www.surftribe.it

  4. #4
    Registra le informazioni in una tabella apposta, le sessioni servono per informazioni legate al singolo utente e non sono fatte per essere consultate in blocco.

  5. #5
    Ok grazie, ultima info:
    faccio girare un batch giornalmente che mi cancella tutti i record del giorno prima al fine di avere la tabella sempre pulita?

    Quando l'utente effettua il login e faccio l'INSERT nella tabella, poi ogni volta che cambia pagine effettuo un UPDATE sullo stesso record, non effettuo ogni volta una nuova INSERT giusto?
    NO WORK TRIBE
    www.surftribe.it

  6. #6
    Se non ti serve uno storico di tutte le connessioni ma vuoi solo tenere traccia dell'ultima, allora avrai una riga per ogni utente che andrai ad aggiornare ogni volta. Non serve nessun batch perche' la tabella non cresce e quindi non ha senso "ripulirla".

  7. #7
    Scusate ma con quel metodo controllo il tempo tra un click e l'altro..Però su l'utente si mette su una pagina e ci stà per 1 ora finche non fa l'altro click risulta online..??
    Che mondo sarebbe senza Nutella.

    PHP/MYSQL/HTML/CSS/JAVASCRIPT

  8. #8
    Originariamente inviato da CiRi..Cuber
    Scusate ma con quel metodo controllo il tempo tra un click e l'altro..Però su l'utente si mette su una pagina e ci stà per 1 ora finche non fa l'altro click risulta online..??
    Hai colto una cosa importante.
    No l'utente sarà considerato offline!

    Ovviamente la logica suggetita IPOTIZZA che un utente inattivo per 1 ora è offiline.

    Uno script basato esattamente con questa logica l'ho riportato sul mio blog (io fisso a 10 minuti la logica ricalca al 100% quella che ti è stata indicata): http://www.miniscript.it/articoli/62...ti_online.html

    Se vuoi complicarti l'esistenza puoi risolvere la cosa con ajax.
    In pratica l'utente pur rimanendo fermo sulla pagina effettuerà l'aggiornamento in maniera asincrona eseguendo una chiamata ajax di aggiornamento allo scadere di un setTimeout().
    Ad esempio:
    codice:
    function aggiorna_utenti_on_line(){ 
    // ajax...
    }
    setTimeout("aggiorna_utenti_on_line()", 60000); // rileva ogni minuto...
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  9. #9
    Ho fatto una ragionamento per un mio sito mi puoi dare la tua opinione??
    (non ho aperto un nuovo 3D perchè non mi sembrava necessario)

    Allora io ho agito in questo modo:

    Ho creato una tabella status_utenti con campi
    id(key, auto_increment)
    idut (nick dell'utente)
    stato (online,offline,inattivo)
    time_stamp (time stamp del momento in cui visita la pagina)

    All'iscrizione viene inserito il nick nella tabella e lo stato su offline.

    Dato che ho una pagina principale con il layout e a seconda dell'url includo una pagina specifica, ho pensato di mettere un quella pagina il mio scriptino che controlla varie cose.

    Codice PHP:
    <?

    //mi connetto al database
    $archivio=mysql_connect("""""");
    $beta=mysql_select_db("");

    //controlli utenti online/offline
    $time=time();
        
    //controllo i time stamp di tutte le persone loggate
        
    $select=mysql_query("SELECT * FROM status_utenti");
        
    $row=mysql_num_rows($select);
        for (
    $i=0$i<$row$i++){
           
    //prendo il time stamp dell'ultimo click
           
    $time_stamp=mysql_result($select$i"time_stamp");
           
    $idut=mysql_result($select$i"idut");
           
    //se sono passati più di 5 minuti o uguale dall'ultimo click imposto su inattivo
           
    if ($time_stamp-$time >= 300){
               
    //imposto su inattivo
               
    $upadate=mysql_query("UPDATE status_utenti SET time_stamp='$time', stato='inattivo' WHERE idut='$idut'");
           }
           else if(
    $time_stamp-$time >= 600){
               
    $upadate=mysql_query("UPDATE status_utenti SET time_stamp='$time', stato='offline' WHERE idut='$idut'");
           }


        }
        

    ?>

  10. #10
    Ho sbagliato a scrivere questo messaggio

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.