Sei in: Per i Webmaster - Corso di ASP - Oggetto Session
In aggiunta al supporto per le applicazioni in un sito web, ASP permette di tenere traccia di ogni singolo utente in ogni pagina di una applicazione tramite le sessioni. Una sessione utente inizia ogni qualvolta un utente accede ad una pagina .asp all'interno di una applicazione. La sessione rimane attiva fino a quando l'utente rimane all'interno dell'applicazione stessa. Ci sono due modi per terminare una sessione. Il primo è determinato dal fatto che l'utente non si trovi più all'interno dell'applicazione e in questo caso la sessione terminerà automaticamente dopo un certo periodo di tempo (di default 20 minuti); nel secondo caso si utilizza l'istruzione Session.Abandon in una pagina .asp che forza la chiusura della sessione. L'oggetto Session quindi ci permette di:
- sapere quando inizia una sessione utente in modo che si possano eseguire determinate operazioni per ogni singolo client connesso
- sapere quando un utente ha terminato la sua sessione
- immagazzinare informazioni che possono essere utilizzate dal client durante la sua sessione
Anche per l'oggetto Session è possibile ricavare i nomi e i valori di tutte le variabili di sessione utilizzando la Contents Collection:
<%
Dim Key
For Each Key In
Session.Contents
Response.Write (Key & " vale " & Session(Key))
Next
%>
Per ricavare il valore di una singola variabile di sessione
si può utilizzare la sintassi
<% = Session.Contents("nomeVariabile") %>
oppure, essendo
Contents la Collection di default
<% = Session("nomeVariabile") %>
Le proprietà dell'oggetto Session
L'oggetto Session
ha le seguenti
proprietà:
SessionID
Timeout
CodePage
LCID
La
SessionID è una proprietà di sola lettura che ritorna il numero di
sessione dell'utente. Questo numero è unico per ogni sessione il che
significa che ogni utente ha un numero identificativo diverso dagli altri.
Potrebbe capitare nel tempo, nel caso in cui un server sia riavviato, che
un numero di sessione si ripresenti; è quindi sconsigliato utilizzare
questo numero generato automaticamente per salvare eventualmente in un
database un dato che si pensa possa per sempre appartenere ad un singolo
utente. Per scrivere a video il numero di sessione utente si utilizza la
seguente sintassi:
<% = Session.SessionID %>
La proprietà
Timeout ci permette di impostare la durata di tempo assegnata all'oggetto
Session per ogni applicazione. Il valore è espresso in minuti e il timeout
di default è solitamente di 20 minuti. Per modificare il timeout della
sessione e metterlo a 30 minuti si utilizza la seguente
sintassi:
<%
Session.Timeout = 30 %>
CodePage e
LCID sono proprietà che servono per impostare o ricavare la codifica delle
impostazioni internazionali (lingua, formato data...) da utilizzare per la
visualizzazione dei dati.
Metodi dell'oggetto Session
L'oggetto Session ha un
metodo (più 2 tramite la Contents Collection); è il metodo Abandon che
distrugge tutti gli oggetti memorizzati in un oggetto Session e libera le
risorse del server che questi occupavano. Se non si utilizza questo
metodo, il server distrugge tutti gli oggetti di sessione al termine della
sessione stessa.
Come l'oggetto Application, tramite la Contents
Collection si possono utilizzare altri due metodi, Remove e RemoveAll per
eliminare un elemento alla volta o tutti gli elementi in un colpo solo.
- Session("PrimaVariabile") = "Carote"
- Session("SecondaVariabile") = "Cipolle"
- Session.Contents.RemoveAll
Le sessioni e il Global.asa
Nella sezione relativa
all'oggetto Application, abbiamo visto che ci sono due eventi che si
possono utilizzare a livello di applicazione. Ve ne sono anche due che si
possono usare a livello di sessione e sono Session_OnStart e
Session_OnEnd. Vediamo un classico utilizzo di un file global.asa che ci
aiuta a sapere quanti utenti contemporaneamente sono connessi al nostro
sito Internet:
<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
Sub Application_OnStart
Application("ActiveUsers") = 0
End Sub
Sub Application_OnEnd
End Sub
Sub Session_OnStart
Application.Lock
Application("ActiveUsers") = Application("ActiveUsers") + 1
Application.Unlock
End Sub
Sub Session_OnEnd
Application.Lock
Application("ActiveUsers") = Application("ActiveUsers") - 1
Application.Unlock
End Sub
</SCRIPT>
All'interno di una pagina .asp sarà sufficiente la seguente
sintassi per visualizzare a video il numero di utenti
connessi:
<% =
Application("ActiveUsers") %>
IMPORTANTE: le sessioni e quindi le variabili di sessione hanno comunque bisogno che il client abbia abilitato l'utilizzo dei cookies sulla propria macchina per poter essere utilizzate correttamente.
