A volte, durante la navigazione all'interno di un sito web, occorre mantenere vivo un dato per un tempo prefissato o fino a quando l'utente non si scollega dal web interessato. Esistono due metodi fondamentali per risolvere questo problema. Il primo è quello di passare di pagina in pagina una serie di valori tramite link e poi prelevarli nella pagina di destinazione. Questa soluzione, però, è da ritenersi scomoda e "poco sicura" in certe situazione.
La soluzione più logica allora è quella di inserire il valore da conservare all'interno di una variabile. L'unico inconveniente delle variabili è la loro visibilità. Infatti è possibile vedere il loro valore solo all'interno della pagina di elaborazione. Esiste però un tipo "speciale" di variabile definita con l'oggetto Session. Come fa intuire il nome stesso, la variabile definita come session vale per la sessione di navigazione attiva. Infatti ogni utente connesso, potrà leggere e variare solamente le proprie variabili di sessioni. Dopo averle introdotte a livello teorico, vediamo la loro sintassi di definizione:
<%
' Attivazione di una variabile di sessione
session("nome_variabile") = valore_da_assegnare
%>
Com'è possibile notare, l'uso di una variabile di sessione è abbastanza simile a quello di una variabile normale. L'unica differenza a livello di stesura del codice è quella di ricordare che il nome_variabile va contenuto all'interno della seguente sintassi:
session(" ... ")
Ogni variabile di sessione, appena creata viene a generare un numero univoco di identificazione da parte del Server. Questo numero è progressivo e serve appunto al Server per riconoscere il valore della sessione ogni volta che la utilizziamo. La sintassi per visualizzare il numero Id di una sessione è:
<% response.write session.sessionId %>
Va fatta una nota fondamentale sul numero di identificazione delle sessione.
Questo numero è dipendente dal server. Se quest'ultimo venisse
resettato, l'Id delle variabile di sessione ripartirebbe da zero. Quindi
è vivamente sconsigliato far riferimento al sessionId quando
si memorizzano dati in fonti esterne alla pagina.
Dopo aver visto come dichiarare le variabili di sessione in Active Server Page, bisogna capire quanto è lunga la loro vita, come si cancellano o si abbandonano. Per quanto riguarda il loro periodo di sopravvivenza dall'istante dell'attivazione della variabile, ha un tempo pari a 20 minuti. E' possibile variare questo tempo con la seguente sintassi:
<%
'Impostiamo la vita di sessione a n minuti
session.timeout = n
%>
Col codice appena illustrato, si dichiara che tutte le variabili di sessione dichiarate avranno vita n minuti. Allo scadere del tempo prefissato, la variabile sarà nulla e quindi non più esistente.
Adesso analizziamo un punto fondamentale sulle variabili di sessione: la cancellazione e l'abbandono. Ad una prima lettura, questi due termini possono sembrare sinonimi anche da un punto di vista della programmazione, ma non è così. Col termine cancellazione, si intende lo svuotamento e quindi l'annullamento della variabile di sessione indicata. La sintassi per svolgere questo compito è la seguente:
<%
'Cancellazione di una variabile di sessione desiderata
session("nome_variabile") = Null
%>
Assegnando ad una variabile di sessione il valore Null, questa variabile non esisterà più nel corso della sessione di
navigazione dell'utente.
Prima di concludere la lezione sull'oggetto session, osserviamo in cosa consiste l'abbandono. Con l'abbandono, a differenza della cancellazione,
si cancellano tutte quante le variabili di sessione attive nell'istante in cui il comando viene incontrato. Per svolgere questa operazione bisogna utilizzare la seguente sintassi:
<%
' Abbandono di tutte le variabili di sessione
session.abandon
%>
A conclusione, voglio fare due note fondamentali sulle sessioni. La prima riguarda il loro uso. Se possibile evitate di riempire le pagine di variabili di sessione in quanto appesantiscono notevolmente il carico di lavoro sul server rallentandolo di conseguenza. Infatti queste variabili lavorano completamente sul Server-Side (lato server). Se possibile, è consigliato l'utilizzo di cookies in quanto vengono creati e manipolati sul Server-Side ma memorizzati sul Client-Side.
Come ultima nota, bisogna ricordare che le variabili session si appoggiano ai cookies. Nel caso l'utente finale avesse i cookies disabilitati, il funzionamento di questa tipologia di variabili è garantita in quanto il server attiva un cookies speciale che ne consente la gestione.