Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Utenti connessi

  1. #1

    Utenti connessi

    Lo script presente a questo indirizzo
    http://freeasp.html.it/funzioni/view_funzioni.asp?id=15
    mi da qualche problemino.

    quando infatti un utente effettua il logout (cliccando su un bottone che genera .abandon) tutto gira alla perfezione.

    quando invece l'utente chiude il browser, allo scadere del timeout, l'elenco di nomi degli utenti connessi viene privato del carattere "|" quasi come se la variabile di sessione fosse vuota e il comando
    Application("utenti") = Replace( Application("utenti") , Session("Id") & "|" ,"")
    eliminasse solo quel carattere.

    spero di essermi spiegato. è un problema che mi attanaglia da parecchio tempo spero che mi aiutatiate a risolverlo

  2. #2
    **** questo è il mio global.asa

    <SCRIPT LANGUAGE="VBScript" RUNAT="Server">

    Sub Application_OnStart()
    Application.lock
    Application("users") = 0
    Application("utenti") = ""
    Application.unlock

    End Sub

    Sub Session_OnStart()
    Application.lock
    Application("users") = Application("users") + 1
    Application.unlock

    End Sub

    Sub Session_OnEnd()
    Application.lock
    Application("users") = Application("users") - 1
    Application("utenti") = Replace( Application("utenti") , Session("Id") & "|" ,"")
    Application.unlock

    End Sub

    </SCRIPT>

    *** questa la mia pagina di login

    session("Id")= rs("Id")
    if InStr(1,Application("utenti"),Session("Id") & "|" ) = 0 then
    Application.Lock
    Application("utenti") = Application("utenti") & Session("Id") & "|"
    Application.UnLock
    end if

  3. #3
    Potrebbe il problema essere causato dalla durata della sessione da me impostata?

    se metto session.timeout = 1 funziona, se metto 30 (come era prima) no.

  4. #4
    l'errore è evidente...

    ad ogni nuova sessione tu NON MODIFICHI
    Application("utenti")

    ad ogni scadenza di sessione tu MODIFICHI
    Application("utenti")

    ma il SESSION("ID") lo modifichi SOLO quando effettua il login

    la soluzione è in un piccolo IF... piccino piccino

    codice:
    ...
    Sub Session_OnEnd()
    Application.lock
    Application("users") = Application("users") - 1
    if (Session("Id") & "") <> "" then
       Application("utenti") = Replace( Application("utenti") , Session("Id") & "|" ,"")
    end if
    Application.unlock
    End Sub
    ...
    se non ti è chiaro il motivo te lo spiego subito

    se questo SESSION("ID") viene impostato, ciò significa che rimane VUOTO per tutti quegli utenti che NON effettuano il login (guest, motori di ricerca.. etc etc)

    ma anche la loro sessione scade
    e quando scade tu effettui una cosa come questa

    REPLACE(Application("utenti"),"" & "|","")

    che significa in pratica... eliminare TUTTI i "|"

    ciò non è bello

    se quindi controlli che SESSION("ID") sia valorizzato, allora elimini il problema degli utenti senza ID impostato

    ---

    il motivo per cui se abbassi il timeout il problema non si pone, è solo perchè tu aumenti il tempo in cui le variabili vengono aggiornate... e quindi è più difficile notarlo

    ---

    rimane il fatto che per controllare se sono online utenti profilati (con profilo utente, quindi un record nel DB), conviene salvare nel DB la data dell'ultima azione e poi usarla come TEMPO DAL QUALE NON FA NESSUNA AZIONE E CHE SE E' MINORE DI X MINUTI VIENE CONSIDERATO COME UTENTE = OFFLINE

    ma questa è un'altra storia

    ciao

    san imente saluta

    * http://simonecingano.it *

  5. #5
    Innanzitutto grazie mille!

    Sembrava tutto perfetto... mentre invece questa mattina che mi ritrovo???

    Utenti Collegati:
    error '80020009'
    /utenti_collegati.asp, line 29

    infatti la stringa con gli ID è 59444
    il che è impossibile visto che l'ID + alto è 1382

    il mio nuovo global.asa è il seguente

    <SCRIPT LANGUAGE="VBScript" RUNAT="Server">

    Sub Application_OnStart()
    Application.lock
    Application("users") = 0
    Application("utenti") = ""
    Application.unlock

    End Sub

    Sub Session_OnStart()
    Application.lock
    Application("users") = Application("users") + 1
    Application.unlock

    End Sub

    Sub Session_OnEnd()
    Application.lock
    Application("users") = Application("users") - 1
    if (Session("Id") & "") <> "" then
    Application("utenti") = Replace( Application("utenti") , Session("Id") & "|" ,"")
    end if
    Application.unlock

    End Sub

    </SCRIPT>

    hai altri consigli? qualcuno ha altri consigli???

    sono disperato

  6. #6
    se hai modificato il global.asa come ti ho detto il problema ora non dovrebbe verificarsi più
    san imente saluta

    * http://simonecingano.it *

  7. #7
    infatti funziona correttamente, sorry

    il problema ora è un altro...

    se è loggato l'utente 934 e poi si logga il 4

    1. il 4 non appare perchè la conidizione
    if InStr(1,Application("utenti"),Session("Id") & "|" ) = 0 then
    è soddisfatta

    2. quando cade la sessione dell'utente 4 la stringa con gli ID degli utenti connessi viene amputata dal 4 + "|" e il 934 diventa 93 mandando in crash lo script

    vado a sistemarla.

    grazie ancora

  8. #8
    che pirla che sono io

    ti chiedo scusa
    non ci avevo pensato

    MODIFICHE

    login:
    Application("utenti") = Application("utenti") & "|" & Session("Id") & "|"

    global.asa:
    Application("utenti") = Replace( Application("utenti") , "|" & Session("Id") & "|" ,"|")
    san imente saluta

    * http://simonecingano.it *

  9. #9
    troooppo gentile! Grazie, pare funzionare alla perfezione!

  10. #10
    Originariamente inviato da artedelcorpo
    troooppo gentile! Grazie, pare funzionare alla perfezione!
    figurati...
    solo un po' di esperienza
    san imente saluta

    * http://simonecingano.it *

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.