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

    Determinare se l'utente è on line

    Salve a tutti, sto facendo un piccolo sito con una community registrata su db-access. Con i cookies riesco a gestire permessi di azioni e messaggistica tra i vari utenti. Mi piacerebbe peò riuscire a determinare se l'utente è on-line. C'è qualche comando che mi consenta di attivare il campo "on-line" sul database quando l'utente accede al sito e di disattivarlo quando se ne esce? O c'è qualche altro metodo?
    grazie

  2. #2
    Sicuramente saprai che il web non ha stato, ovvero, di solito non c'è interazione attiva tra client e serve, tranne in quei momenti in cui il client invia una richista al server. Terminata la richiesta, anche se il client sta visualizzando la pagina richiesta, non c'è alcun collegamento attivo tra esso e, appunto, il server.
    Per gestire "lo stato" si può ovviare mediante tecnologia AJAX oppure, ancora più semplicemente utilizzando delle variabili application dove memorizzare l'elenco di utenti connessi e data e ora dell'ultima richiesta e definire a priori un lasso di tempo oltre il quale un utente viene considerato offline anche se di fatto l'utente sta ancora visualizzando l'ultima pagina richiesta. Per semplificare il discorso, al limite, puoi usare un campo della tabella del db dove, di volta in volta, memorizzi per ogni utente la data e l'ora dell'ultima richiesta, oppure, memorizzi una data ed un'ora parecchio remota nel momento in cui l'utente clicca su LOGOUT.
    Se definisci, ad esempio, a 20 minuti il tempo oltre il quale un utente è considerato OFFLINE, allora, basta leggere da questa tabella gli utenti la cui data ed ora sia per differenza inferiore a 20 minuti rispetto alla data ed ora attuale.
    In fondo, credo, che questo sia lo stesso sistema utilizzato in questo forum.

  3. #3
    grazie infinite
    aprendo così spesso il db, ad esempio se ci sono 100 utenti che visiualizzano pagine a manetta e ad ogni pagina scrivono sul db la nuova data+ora, penso che la navigazione diventerebbe abbastanza pesante con la coppia asp+access o mi sbaglio?

  4. #4
    Originariamente inviato da tosk
    grazie infinite
    aprendo così spesso il db, ad esempio se ci sono 100 utenti che visiualizzano pagine a manetta e ad ogni pagina scrivono sul db la nuova data+ora, penso che la navigazione diventerebbe abbastanza pesante con la coppia asp+access o mi sbaglio?
    In effetti hai ragione.
    L'alternativa è una variabile application dove, ad esempio, divisi da carattere pipe | aggiungi nomeutente+dataora. Ovviamente prima di aggiungere verifichi che quel nomeutente non sia presente nella variabile application e quindi aggiorni solo la dataora.
    Usando il carattere pipe | come carattere divisore, puoi creare un array dove in ogni indice dell'array avrai nomeutente+dataora.
    Ad ogni chiamata di pagina parte la funzione che legge la variabile application, la splitta in un array e con un ciclo lo legge ricostruendo la stringa dove, dovrà escludere gli utenti il cui lasso di tempo è superiore (ad esempio) a 20 minuti, escludere se stesso ed infine riscrivere se stesso con la nuova dataora.
    Per visualizzare l'elenco degli utenti connessi basta rileggere l'application, ricreare l'array con lo split e leggere solo i nomiutente.
    Spero di essere stato comprensibile.

  5. #5
    Nella teoria sei stato molto esaustivo, purtroppo a lato tecnico non saprei realizzarlo.
    Grazie lo stesso

  6. #6
    Dipende da come è strutturato il sito...

    Se è una pagina con frame allora lo puoi fare (anche se non lo è, ma con opportuni accorgimenti)...utilizzando javascript e l'evento onbeforeunload() all'interno di uno dei frame (ad esempio quello che ti riporta l'elenco o il numero degli utenti connessi) con una funzione che richiama una pagina ASP che aggiorna il tuo DB rimuovendo dagli attivi, l'utente che è uscito...


    VVoVe:

  7. #7
    Originariamente inviato da 16jump25
    Dipende da come è strutturato il sito...

    Se è una pagina con frame allora lo puoi fare (anche se non lo è, ma con opportuni accorgimenti)...utilizzando javascript e l'evento onbeforeunload() all'interno di uno dei frame (ad esempio quello che ti riporta l'elenco o il numero degli utenti connessi) con una funzione che richiama una pagina ASP che aggiorna il tuo DB rimuovendo dagli attivi, l'utente che è uscito...


    VVoVe:
    E se si disconnette da internet prima di chiudere il browser?

  8. #8
    E se si disconnette da internet prima di chiudere il browser?
    Qualcosa tipo

    Ad ogni chiamata di pagina parte la funzione che legge la variabile application, la splitta in un array e con un ciclo lo legge ricostruendo la stringa dove, dovrà escludere gli utenti il cui lasso di tempo è superiore (ad esempio) a 20 minuti, escludere se stesso ed infine riscrivere se stesso con la nuova dataora.
    ma sfruttando il DB, cioè scrivo data/ora ogni volta che un determinato utente mi aggiorna il DB e poi ad ogni aggiornamento, determino con una query di UPDATE quali utenti vanno offline...

    Capisco che non sia semplice, ma ricorrere ad AJAX mi sembrava esagerato...

    tutto qui


  9. #9
    Originariamente inviato da 16jump25
    Dipende da come è strutturato il sito...

    Se è una pagina con frame allora lo puoi fare (anche se non lo è, ma con opportuni accorgimenti)...utilizzando javascript e l'evento onbeforeunload() all'interno di uno dei frame (ad esempio quello che ti riporta l'elenco o il numero degli utenti connessi) con una funzione che richiama una pagina ASP che aggiorna il tuo DB rimuovendo dagli attivi, l'utente che è uscito...


    VVoVe:
    Grazie anche dei tuoi interventi.
    Mi potresti dare un link su questo evento onbeforeunload?
    grazie ancora ad entrambi

  10. #10
    ciao scusate se ripesco un post ormai chiuso, ma l'argomento mi interessa.

    Tutte le informazioni citate sopra sono perfette ma mi è venuta in mente una cosa:

    oltre all'oggetto application esiste anche l'oggetto Session: ogni sessione viene attivata al primo accesso di un utente e disattivata dopo n minuti di inattività, giusto?

    quindi accantonando un attimo il problema di gestire utenti registrati (integrabile in seguito) e facendo finta che tutti gli utenti siano "loggati" e che quindi tutte le sessioni aperte in un momento siano utenti,

    1. non c'è un modo per sapere quanti sono collegati (ovvero quante sessioni attive)?
    2. nn c'è un modo per acquisire informazioni su variabili di altre sessioni (magari tramite SessionID) ?


    Grazie ciao a tutti
    La verita' è che... tu sei il debole, e io sono la tirannia degli uomini malvagi, ma ci sto provando ringo, ci sto provando con grandissima fatica a diventare il pastore..

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.