Un oggetto Session memorizza le informazioni, o modificare le impostazioni per una sessione utente.
L'oggetto Session
Quando si lavora con un'applicazione sul computer, si apre, fare alcune modifiche e poi si chiude. Questo è molto simile a una sessione. Il computer sa chi sei. Si sa quando si apre l'applicazione e quando lo si chiude. Tuttavia, su internet c'è un problema: il server web 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 è chiamato l'oggetto di sessione.
L'oggetto Session memorizza le informazioni, o modificare le impostazioni per una sessione utente.
Variabili memorizzate in una sessione di informazioni oggetto attesa di circa un singolo utente, e sono a disposizione di tutte le pagine in una sola applicazione. Informazioni comuni memorizzate nelle variabili di sessione sono nome, l'ID, e le preferenze. Il server crea un nuovo oggetto Session per ogni nuovo utente, e distrugge l'oggetto di sessione quando la sessione scade.
Quando si fa un Inizia la 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 di sessione
- Un utente richiede un file ASP, e il file Global.asa utilizza il <object> tag per istanziare un oggetto con scope di sessione
Quando si fa una sessione fine?
Una sessione termina se un utente non ha richiesto o aggiornato una pagina nella domanda di un determinato periodo. Per impostazione predefinita, questo è di 20 minuti.
Se si desidera impostare un intervallo di timeout che è più breve o più lungo da quello di default, utilizzare il Timeout proprietà.
L'esempio seguente imposta un intervallo di timeout di 5 minuti:
<%
Session.Timeout=5
%>
Utilizzare il Abandon metodo per terminare immediatamente una sessione di:
<%
Session.Abandon
%>
Note: Il problema principale con le sessioni è quando dovrebbero finire. Non sappiamo se l'ultima richiesta dell'utente è stata quella finale oppure no. Quindi non sappiamo per quanto tempo dovremmo mantenere la sessione "alive" . In attesa troppo 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 cancellato tutte le informazioni. Trovare il giusto intervallo di timeout può essere difficile!
Tip: conservare solo piccole quantità di dati in variabili di sessione!
Memorizzare e recuperare le variabili di sessione
La cosa più importante circa l'oggetto Session è che è possibile memorizzare le variabili in esso.
L'esempio che segue imposta la sessione variabile username di "Donald Duck" e la sessione variabile age a "50" :
<%
Session("username")="Donald Duck"
Session("age")=50
%>
Quando il valore è memorizzato in una variabile di sessione può essere raggiunto da qualsiasi pagina dell'applicazione ASP:
Welcome <%Response.Write(Session("username"))%>
La linea di cui sopra restituisce: "Welcome Donald Duck" .
È anche possibile memorizzare le preferenze dell'utente nell'oggetto Session, e quindi accedere a tale preferenza per scegliere quale pagina per tornare per l'utente.
L'esempio seguente specifica un versione solo testo della pagina, se l'utente ha una bassa risoluzione dello schermo:
<%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 variabili di sessione
La collezione Contents contiene tutte le variabili di sessione.
E 'possibile rimuovere una variabile di sessione con il metodo Remove.
L'esempio che segue elimina la sessione variabile "sale" se il valore della variabile di sessione "age" è 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()
%>
Loop Through la Collezione Contenuto
La collezione Contents contiene tutte le variabili di sessione. È possibile scorrere la collezione Contents, per vedere che cosa è memorizzato in esso:
<%
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 della collezione Contents, è possibile utilizzare la proprietà Count:
<%
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
Loop Through la Collezione StaticObjects
È possibile scorrere la collezione StaticObjects, per visualizzare i valori di tutti gli oggetti memorizzati nell'oggetto Session:
<%
dim i
For Each i in Session.StaticObjects
Response.Write(i & "<br>")
Next
%>