Oggetto sessione ASP


Un oggetto Session memorizza informazioni o modifica le impostazioni per una sessione utente.


L'oggetto Session

Quando si lavora con un'applicazione sul computer, la si apre, si apportano alcune modifiche e poi la si chiude. Questo è molto simile a una Sessione. Il computer sa chi sei. Sa quando apri l'applicazione e quando la chiudi. Tuttavia, su Internet c'è un problema: il web server non sa chi sei e cosa fai, perché l'indirizzo HTTP non mantiene lo stato.

ASP risolve questo problema creando un cookie univoco per ogni utente. Il cookie viene inviato al computer dell'utente e contiene informazioni che identificano l'utente. Questa interfaccia è chiamata oggetto Session.

L'oggetto Session memorizza informazioni o modifica le impostazioni per una sessione utente.

Le variabili archiviate in un oggetto Session contengono informazioni su un singolo utente e sono disponibili per tutte le pagine di un'applicazione. Le informazioni comuni memorizzate nelle variabili di sessione sono nome, ID e preferenze. Il server crea un nuovo oggetto Session per ogni nuovo utente e distrugge l'oggetto Session alla scadenza della sessione.


Quando inizia una sessione?

Una sessione inizia quando:

  • Un nuovo utente richiede un file ASP e il file Global.asa include una procedura Session_OnStart
  • Un valore viene memorizzato in una variabile Session
  • Un utente richiede un file ASP e il file Global.asa utilizza il tag <object> per creare un'istanza di un oggetto con ambito di sessione

Quando finisce una sessione?

Una sessione termina se un utente non ha richiesto o aggiornato una pagina nell'applicazione per un periodo specificato. Per impostazione predefinita, questo è 20 minuti.

Se si desidera impostare un intervallo di timeout inferiore o superiore a quello predefinito, utilizzare la proprietà Timeout .

L'esempio seguente imposta un intervallo di timeout di 5 minuti:

<%
Session.Timeout=5
%>

Utilizza il metodo Abbandona per terminare immediatamente una sessione:

<%
Session.Abandon
%>

Nota: il problema principale con le sessioni è QUANDO dovrebbero terminare. Non sappiamo se l'ultima richiesta dell'utente sia stata l'ultima o meno. Quindi non sappiamo per quanto tempo dovremmo mantenere la sessione "viva". Aspettare troppo a lungo per una sessione inattiva consuma risorse sul server, ma se la sessione viene eliminata troppo presto l'utente deve ricominciare tutto da capo perché il server ha eliminato tutte le informazioni. Trovare il giusto intervallo di timeout può essere difficile!

Suggerimento: archivia solo PICCOLE quantità di dati nelle variabili di sessione!



Archivia e recupera variabili di sessione

La cosa più importante dell'oggetto Session è che puoi memorizzare variabili al suo interno.

L'esempio seguente imposterà il nome utente della variabile Session su "Paperino" e l' età della variabile Session su "50":

<%
Session("username")="Donald Duck"
Session("age")=50
%>

Quando il valore è memorizzato in una variabile di sessione, può essere raggiunto da QUALSIASI pagina nell'applicazione ASP:

Welcome <%Response.Write(Session("username"))%>

La riga sopra ritorna: "Benvenuto Paperino".

Puoi anche memorizzare le preferenze dell'utente nell'oggetto Session e quindi accedere a tale preferenza per scegliere quale pagina restituire all'utente.

L'esempio seguente specifica una versione di solo testo della pagina se l'utente ha una risoluzione dello schermo bassa:

<%If Session("screenres")="low" Then%>
  This is the text version of the page
<%Else%>
  This is the multimedia version of the page
<%End If%>

Rimuovere le variabili di sessione

La raccolta Contenuti contiene tutte le variabili di sessione.

È possibile rimuovere una variabile di sessione con il metodo Remove.

L'esempio seguente rimuove la variabile di sessione "sale" se il valore della variabile di sessione "età" è inferiore a 18:

<%
If Session.Contents("age")<18 then
  Session.Contents.Remove("sale")
End If
%>

Per rimuovere tutte le variabili in una sessione, utilizzare il metodo RemoveAll:

<%
Session.Contents.RemoveAll()
%>

Passa attraverso la raccolta di contenuti

La raccolta Contenuti contiene tutte le variabili di sessione. Puoi scorrere la raccolta di Contenuti, per vedere cosa è memorizzato in essa:

<%
Session("username")="Donald Duck"
Session("age")=50

dim i
For Each i in Session.Contents
  Response.Write(i & "<br>")
Next
%>

Risultato:

username
age

Se non si conosce il numero di elementi nella raccolta Contenuti, è possibile utilizzare la proprietà Conteggio:

<%
dim i
dim j
j=Session.Contents.Count
Response.Write("Session variables: " & j)
For i=1 to j
  Response.Write(Session.Contents(i) & "<br>")
Next
%>

Risultato:

Session variables: 2
Donald Duck
50

Passa attraverso la raccolta StaticObjects

Puoi scorrere la raccolta StaticObjects per vedere i valori di tutti gli oggetti archiviati nell'oggetto Session:

<%
dim i
For Each i in Session.StaticObjects
  Response.Write(i & "<br>")
Next
%>