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

    Utenti online, la mia soluzione. Va bene?

    Salve a tutti, ho provato a ragionarci su, volevo condividere la mia idea per avere la lista degli utenti (registrati in un db access) sempre corretta.
    Mi sembra che consumi un po' di risorse, chiedo consiglio a tutti voi
    Al login cerco user e pass nel db, se i dati corrispondono, faccio 2 operazioni
    a) Creo dei cookies col mio ID e col mio nick
    b) Metto nel database lo status di "online" su true
    c) metto un campo "orainlinea" col valore della data e dell'ora ( now() )
    Se faccio il logout, naturalmente, imposto il valore di "online" su false
    Il problema nasceva nel fatto che chi cambia sito, o esce dal browser non fa prima il logout, dunque ho fatto così:
    -ad ogni pagina che visito apro il database e aggiorno l'ora dell'ultima mia azione
    -a calce della pagina metto un controllo sugli utenti che risultano online, quindi faccio una select di tutti gli utenti online, escludendo il mio ID salvato nel cookie e stampo i risultati
    ho impostato, col dateDiff, una differenza in minuti, se la differenza porta un valore sopra i 15 metto lo status "sleeping", cioè online ma inattivo, dopo 30 minuti aggiorno il recordset impostando "online" su false
    Quindi qualsiasi visitatore aggiorna lo status degli utenti online, cancellando lo status se necessario
    Non è precisissimo, infatti fa il recordcount di tutti gli utenti online e poi passa a metterli offline, quindi può risultare che ci sono 5 utenti, poi la lista ne mostra 4, comunque è abbastanza preciso, del resto succede così anche in facebook.
    Ci sono parecchi accessi al database, ho paura che richieda molte risorse, ma anche facendo con jquery richieste asincrone penso che sarebbe un mattone.

    esempio

    ora mi manca solo di inserirci una chat
    ciao

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Di solito per il calcolo degli utenti online si usano variabili application proprio per non intasare inutilmente il db.
    Per vuotare la variabile application quando l'utente esce senza fare logout occorrono ad esempio delle soluzioni ajax.

    Roby

  3. #3

  4. #4
    si ho provato l'esempio di ale_1976
    però la variabile session registrava solo i nomi con un separatore, a me serve che, oltre ai nomi, recuperi anche l'ID dell'utente, per fare un link alla scheda dell'utente cliccando sul nick.
    potrei recuperare l'ID nella variabile session, ma in ogni caso dovrei collegarmi al db per ottenere il nick, quindi si va ancora al database.
    dico la mia, se sbaglio lieto che mi correggiate
    ciao

  5. #5
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Quando fai il login recuperi tutto quello che ti serve in una volta sola.

    Roby

  6. #6
    ok, allora fatemi un po' capire, per favore, girando in web ho studioto un minimo della variabile application, il classico controllo numerico sugli utenti è questo
    codice:
    
    ' All'avvio di una sessione incrementa di 1 il numero utenti
    Sub Session_OnStart 
    application.lock 
    application("activeusers") = application("activeusers") + 1
    application.unlock
    End Sub
    
    ' Alla scadenza della sessione decrementa il numero utenti
    Sub Session_OnEnd 
    application.lock 
    application("activeusers") = application("activeusers") - 1 
    application.unlock
    End Sub 
    
    </script>
    ma non mi cattura il nome e ID utente, dovrei farlo al login
    quindi tengo l'avvio della application
    codice:
    <script language="VBScript" runat="server">
    
    ' All'avvio del server imposta a 0 i visitatori
    Sub Application_OnStart 
    application("numeroutenti") = 0 
    application("nomeutenti") = ""
    End Sub
    
    Sub Application_OnEnd 
    End Sub
    e dopo il login, oltre a settare i cookies aggiorno le variabili
    codice:
    'cookies
    response.cookies("guest")("nick")=frs("nick")
    response.cookies("guest")("ID")=frs("ID")
    response.cookies("guest")("admin")=frs("admin")
    response.cookies("guest")("email")=frs("email")
    response.cookies("guest")("sesso") = frs("sesso")
    'sessione
    application("numeroutenti") = application("numeroutenti") +1 
    application("nomeutenti") = application("nomeutenti") & "" & frs("nick") &"
    "
    o sbaglio?
    grazie

  7. #7
    Comunque, nel mio script, non uso solamente il nome utente: ci sono due esempi, uno con la sessionID, e l'altro con la username(modifica chiestami da un utente).
    Nel tuo caso, potresti benissimo mettere sia la username che l'id utente(se proprio non ti va di recuperare la username dal db solo quando ti serve.). L'array avrà come elemento, la coppia id-username, e così hai tutto a disposizione.

  8. #8
    Alla fine devo arrivare ad avere la lista degli utenti online con ID, nick, sesso
    invece di usare sempre cose precotte vorrei imparare a cavarmela da solo. se cortesemente mi aiutate col codice che ho postato..

  9. #9
    Ciao...purtropo se non vuoi usare ajax e affitarti al global.asa, per quanto ti sforzi, otterrai sempre risultati imprecisi...
    cmq non capisco perchè vuoi complicare e aggiungere tutto nell' Application.
    Come già suggeritoti ti basta inserire un valore univoco all'application (ID o username)...poi nella pagina dove intenti mostrare utenti online, ti basta, con una semplice query, scorrere tutti gli utenti e controllare con un InStr chi e online...e quindi mostrare cosa ti pare.

  10. #10
    grazi
    ehm..non ho detto che non voglio usare l'ajax, solo non vorrei fargli fare richieste continue al db.

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.