Sei in: Per i Webmaster - Corso di ASP - I Cookies
Prima di parlare di cookies facciamo una piccola premessa
riguardo alla interazione che esiste fra client e server. Quando un client
fa una richiesta ad un server per una pagina web, il server risponde con
l'informazione corretta. Cosa succede a questo punto? Il server si
"sgancia" dal client in attesa di altre richieste, la connessione quindi
non rimane attiva, il server si dimentica subito di chi lo ha visitato.
Uno dei più grossi problemi della rete è appunto il suo essere
stateless cioè senza stato. In altre comuni applicazioni tipo Word
questo problema non si pone, in quanto ogni modifica, correzione o
aggiunta ad un file non necessita di informazioni ulteriori, il programma
sa sempre su che file stiamo lavorando fino a quando non lo chiudiamo.
Internet è un po' come spedire una lettera, se ci dimentichiamo di
scrivere qualcosa, dobbiamo scriverne un'altra e rispedirla. Una prima
soluzione a questo problema sono appunto i cookies, anche se vedremo che
ASP mette a disposizione altri strumenti per tenere traccia dei
client.
Creare i Cookies con l'Oggetto Response
Scrivere
un cookie sul PC di un client è molto semplice. La sintassi è la
seguente:
<% Response.Cookies("cookie") = value %>
Se
value è una stringa allora va messa fra virgolette. La scrittura
precedente aggiunge la seguente intestazione
HTTP:
Set-Cookies:YOURCOOKIENAME=somevalue
Utilizzo delle
chiavi
Se aggiungiamo un valore chiave, allora possiamo accedere ai
cookie come collection. Questo significa che un cookie può avere lo stesso
nome ma più chiavi per diversi valori memorizzati. La sintassi è la
seguente:
<% Response.Cookies("cookie")("key") = value
%>
quindi si procede solitamente a specificare i diversi
valori:
<%
Response.Cookies("sameCookieName")("key1")
= value1
Response.Cookies("sameCookieName")("key2")
= value2
%>
La proprietà HasKeys
ASP utilizza la proprietà
HasKeys per determinare se un cookie ha o no valori multipli. Per sapere
se un cookie ha valori multipli interroghiamo la proprietà HasKeys:
<%
For Each Cookie In
Request.Cookies
If Request.Cookies(Cookie).HasKeys Then
For Each CookieKey In
Request.Cookies(Cookie)
Response.Write(Cookie) & "."
& (CookieKey) & " = "
Response.Write(Request.Cookies(Cookie)(CookieKey)) &
"<br>"
Next
Else
Response.Write(Cookie) & " = " &
(Request.Cookies(Cookie)) & "<br>"
End If
Next
%>
Mantenere il Cookie in vita
Se non si specifica una
data di scadenza, un cookie persiste fino a quando il client non chiude il
proprio browser o la sessione utente non è scaduta. Per far sì che il
cookie rimanga in memoria nell'hard disk del client, dobbiamo specificare
una data di scadenza, in questo modo:
<%
Response.Cookies("cookie").Expires = "May 31, 2002"
Un modo
migliore per fare in modo che non vi siano problemi con le date e i loro
diversi formati, si preferisce utilizzare la sintassi
seguente:
<% Response.Cookies("cookie").Expires = Date +
nrOfDays %>
dove nrOfDays è un numero che indica i giorni di
vita del cookie a partire dalla data attuale.
Cancellare un Cookie
Per fare in modo che un cookie
sia cancellato, si utilizza lo stesso codice precedente con l'unica
differenza che alla data attuale si tolgono dei giorni; per essere sicuri
che non vi siano problemi con le date se ne tolgono molti:
<%
Response.Cookies("cookie").Expires = Date - 1000 %>
Chi può
leggere i nostri Cookies?
Fino a prova contraria l'unico modo per
leggere un cookie via web è che una pagina che risiede nello stesso
dominio ne faccia richiesta. Si può tuttavia forzare il Cookie ad avere
ben specificato il nome del dominio dal quale viene scritto e anche da
quale percorso:
<% Response.Cookies("cookie").Domain =
"www.joanna.it" %>
<% Response.Cookies("cookie").Path =
"/pages/samples/" %>
Se si specifica un dominio diverso da
quello in cui si trova la pagina richiesta, il cookie non viene scritto,
per ovvi motivi di sicurezza.
