Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Sub Session_onEnd

  1. #1

    Sub Session_onEnd

    Salve a tutti!

    Mi chiedevo :master:, e vi chiedo, se durante l'istanza Session_onEnd le variabili di sessione sono già bell'e che "spirate" o se mantengono i propri valori fino al termine dell'End Sub.

    Ma onestamente, dài! Come si fa a chiamare vergine un CD che ci ha un buco in mezzo?!?.

  2. #2
    Secondo me la variabili di sessione... fanno un po' cosa vogliono, a volte imposti il tempo di scadenza e non si sa come mai loro scadono prima. Quindi magari nel momento che intendi tu... sono già decedute.
    Boh

  3. #3
    ma così mi scoraggi i ragazzi!

    proviamo con più tenacia, dài, forza!
    Sono sicuro che una risposta meno sconfortante potrà venire...
    Ma onestamente, dài! Come si fa a chiamare vergine un CD che ci ha un buco in mezzo?!?.

  4. #4
    Volevo incalzare e riproporre (anche ad oltranza...! ) questo thread fino a trovarne una soluzione pressoché definitiva.

    Leggo su ASP Guida di Riferimento di A. Keyton Weissinger (Apogeo O'Reilly) che "Nel codice relativo alla routine di eventi OnEnd, si ha accesso solo algi oggetti Application, Server e Session (...)" (pag.174).

    Oltre tutto, nell'esempio successivo si mostra come trascrivere un valore contenuto in una variabile di sessione mediante Scripting.FileSystemObject. Tuttavia leggo nel thread http://forum.html.it/forum/showthread.php?s=&threadid=885245 che "Se ci stanno istruzioni che interagiscono con il fileSystem (scrittura di file o apertura di DB Access) queste non verranno eseguite, perchè, all'abbandono della session l'Internet Guest Account non viene più riconosciuto come proprietario dei permessi sul fileSystem.". (Per quanto mi riguarda, la mia esperienza mi lascerebbe pensare che sia davvero così, a dispetto di quanto affermi il manuale sopra citato.)

    Dunque ripeto la mia domanda: nell'evento OnEnd è sicuro (dalle vostre esperienze o conoscenze) che le variabili di sessione stanno mantenendo ancora i propri valori?
    Ma onestamente, dài! Come si fa a chiamare vergine un CD che ci ha un buco in mezzo?!?.

  5. #5
    Utente di HTML.it L'avatar di Gioba66
    Registrato dal
    Jun 2002
    Messaggi
    2,189
    sì, il valore si mantiene ma poi si possono fare solo alcune cose....
    Tutti vogliono parlare, nessuno sa ascoltare.

  6. #6
    tipo...?
    Ma onestamente, dài! Come si fa a chiamare vergine un CD che ci ha un buco in mezzo?!?.

  7. #7
    cioè? ossia? ovverossia? sarebbe a dire? come? cosa?

    è mai possibile che nessuno sappia spendere due minuti per rispondere?

    scusate lo sfogo, ma è l'isteria del coitus interruptus...
    Ma onestamente, dài! Come si fa a chiamare vergine un CD che ci ha un buco in mezzo?!?.

  8. #8
    Utente di HTML.it L'avatar di Gioba66
    Registrato dal
    Jun 2002
    Messaggi
    2,189
    invece di farti la lezioncina sul session_onend ci dici cosa stai cercando di fare, cosa non funziona, ecc....?
    Tutti vogliono parlare, nessuno sa ascoltare.

  9. #9
    invece di farti la lezioncina sul session_onend ci dici cosa stai cercando di fare, cosa non funziona, ecc....?
    Be', forse perché non avevo ancora letto la tua firma...!

    Dunque, sto alle prese con la solita routine per il controllo degli utenti on line. Nella variabile Application si incrementa il solito valore n+1 per ciascun utente che entra. Nell'evento onStart si trasrive una matrice(1-2-3-4) con data e ora, session-id, ip, client in un'altra variabile Application. Quando l'utente si iscrive, la matrice aggiunge un campo matrice(5) contenente l'id-utente.

    Allo scadere di una sessione, oltre al decremento del computo, una routine controlla prima se la matrice contiene 4 campi (utente non registrato) o 5 (utente registrato) per aggiornare il computo degli utenti registrati.

    Il codice è il seguente:
    codice:
    Sub Session_OnStart
    	Session.Timeout = 20 
    	Application.Lock
    	If Application("IPlist") & "" = "" then
    		Application("IPlist") = "anonimo#" & Right(Session.SessionID,3) & "|;|" & Request.ServerVariables("REMOTE_HOST") & "|;|" & Date() & "|;|" & Time() & "|;|" & Request.ServerVariables("HTTP_USER_AGENT")
    		Application("users_online") = Application("users_online") + 1
    	Else
    		Application("IPlist") = Application("IPlist") & "|.|" & "anonimo#" & Right(Session.SessionID,3) & "|;|" & Request.ServerVariables("REMOTE_HOST") & "|;|" & Date() & "|;|" & Time() & "|;|" & Request.ServerVariables("HTTP_USER_AGENT")
    		Application("users_online") = Application("users_online") + 1
    	End If
    	Application.Unlock
    	SetLog "users.log", ">| " & Date() & " " & Time(), "SessionID#" & Session.SessionID & "|;|" & Request.ServerVariables("REMOTE_HOST") & "|;|" & Request.ServerVariables("HTTP_USER_AGENT") & "
    "
    End Sub
    
    Sub Session_OnEnd
    	Application.Lock
    	If Application("users_online") = 1 then
    		Application("users_online") = 0
    		Dettagli = Split(Application("IPlist"), "|;|")
    		iDettagli = UBound(Dettagli)
    		if iDettagli = 5 Then Application("reg_users_online") = 0
    		Application("IPlist") = ""
    	Else
    		IPlistTmp = ""
    		InfoUtente = Split(Application("IPlist"), "|.|")
    		for iInfoUtente = 0 to UBound(InfoUtente)
    			Dettagli = Split(InfoUtente(iInfoUtente), "|;|")
    			iDettagli = UBound(Dettagli)
    			if Dettagli(0) = "anonimo#" & Right(Session.SessionID,3) then
    				Application("users_online") = Application("users_online") - 1
    				if iDettagli = 5 and not Dettagli(5) = "webmaster" then
    					Application("reg_users_online") = Application("reg_users_online") - 1
    				end if
    			else
    				if iInfoUtente = 0 then IPlistTmp = InfoUtente(0)
    				if iInfoUtente > 0 And IPlistTmp & "" = "" then IPlistTmp = InfoUtente(iInfoUtente)
    				if iInfoUtente > 0 And Not IPlistTmp & "" = "" then IPlistTmp = IPlistTmp & "|.|" & InfoUtente(iInfoUtente)
    			end if
    		next
    		Application("IPlist") = IPlistTmp
    	End If
    	Application.Unlock
    	SetLog "users.log", "|< " & Date() & " " & Time(), "SessionID#" & Session.SessionID & "
    "
    End Sub
    Risultato: nessun aggiornamento viene compiuto durante l'evento onEnd, e in più la sessione Application resetta (azzera) tutte le proprie variabili.

    P.S. Provato pure a "commentare" la riga della funzione SetLog().
    Ma onestamente, dài! Come si fa a chiamare vergine un CD che ci ha un buco in mezzo?!?.

  10. #10
    Aspetto ancora una risposta...
    Ma onestamente, dài! Come si fa a chiamare vergine un CD che ci ha un buco in mezzo?!?.

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.