COOKIE

I cookie sono dei piccoli file di testo che vengono salvati sul computer dell’utente quando visita un sito; vengono utilizzati per memorizzare piccole quantità di informazioni che devono essere mantenute per un periodo più o meno lungo. In questo modo anziché memorizzare i dati sul server, essi vengono memorizzati sul computer dell’utente. In questo modo si ha il vantaggio di poter ‘riconoscere’ l’utente (o meglio il suo computer) una volta che esso ritorna al nostro sito.
Il fatto di poter riconoscere l’utente comporta innegabili vantaggi per i gestori del sito stesso, consentendo l’offerta di servizi più o meno personalizzati: basti pensare ai portali che consentono di personalizzare l’homepage in base alle scelte dell’utente. Scelte che vengono appunto memorizzate in cookie.
Chi usa normalmente Hotmail, si sarà sicuramente accorto che, dopo aver consultato la propria posta elettronica, se prova a ritornare all’homepage di Hotmail stessa, il campo ‘username’ è già compilato con il proprio indirizzo email. Questa informazione viene memorizzata in cookie e server ad evitare che l’utente debba reinserire ogni volta il proprio nome utente.
Ugualmente alcuni siti che offrono servizi solo dopo essersi registrati, consentono di selezionare una casella ‘Riconoscimi’, in modo che non sempre sia necessario reinserire user e password.
Come di può vedere in queste e in molte altre situazioni l’utilizzo dei cookie può rivelarsi comodo.
Allo stesso modo però non è sempre auspicabile essere riconosciuti sul Web. Infatti Se ‘qualcuno’ riuscisse a leggere i cookie del mio computer saprebbe esattamente quali siti ho visitato; anzi quali pagine ho visto di un determinato sito. In questo modo è in grado di mappare correttamente la mia navigazione sul Web e la cosapotrebbe non essere gradita.
A questo proposito vale la pena ricordare che i cookie possono essere letti solo dal server che li ha generati: quindi se io memorizzo un cookie generato da, per es., Virgilio, questo non potrà essere letto da Yahoo, e viceversa. A prima vista sembrerebbe quindi che nessuno può leggere e confrontare i cookie memorizzati sul mio computer, in quanto sono generati da tanti diversi server quanti sono i siti che ho visitato. Quindi la mia privacy sembra essere tutelata. Ma…
non è proprio così.
Sappiamo infatti che molti siti ospitano sistemi di rotazione banner realizzati da società specializzate e che, in cambio di pubblicità sul nostro sito, visualizzano i nostri banner su siti di terzi, i cosiddetti ‘sitemi di scambio banner’. In questo caso vi è un unico server che visualizza banner su migliaia di siti. Immaginiamo che, insieme ad un banner venga memorizzato un cookie sul computer dell’utente: se l’utente visualizza dieci siti che utilizzano tutti lo stesso sistema di banner, avrà dieci cookie sul proprio computer creati dallo stesso server: questo server potrà leggere, modificare e confrontare tutti questi cookie, anche se si tratta
di siti tra loro diversi!
Nel caso di un sistema di rotazione banner con migliaia di iscritti, è decisamente probabile navigare su siti con lo stesso sistema di rotazione: quindi per il gestore del sistema di banner è possibile conoscere i percorsi di navigazione degli utenti semplicemente confrontando i cookie che lui stesso ha lasciato sul computer dell’utente. Non sarà in grado di conoscere esattamente tutto il percorso che io ho fatto durante la mia navigazione, in quanto posso aver visualizzato siti che non utilizzano il suo sitema di rotazione e pertanto i cookie creati da quest’ultimo risultano per lui inaccessibili. Ugualmente però può avere una buona approssimazione del mio comportamendo utilizzando i dati in suo possesso.
Inoltre alcuni siti potrebbero accordarsi in modo da ‘scambiarsi’ i cookie degli utenti, in modo da confrontare i comportamenti dei rispettivi utenti.
Infine i cookie identificano la macchina ma nulla vieta di identificare la persona: se infatti inserisco nome e cognome in un modulo e questi dati vengono memorizzati in un cookie, è decisamente semplice risalire dal computer alla persona che lo utilizza!
In queste pagine noi analizziamo come creare e leggere i cookie, in quanto sono un potente strumento nelle mani dei gestori dei siti (i cosiddetti webmaster): toccherà a voi utilizzarli nel modo corretto, bilanciando le opposte esigenze, ovvero quella di tutelare la riservatezza dei propri utenti e quella di offrire servizi personalizzati o vantaggiosi.

p.s.: AmicoPc utilizza un sistema di rotazione banner realizzato e gestito da noi stessi. Per cui potete stare tranquilli 🙂

In queste pagine utilizzeremo i cookie per consentire il riconoscimento dell’utente: alla sua prima visita egli dovrà inserire il proprio nome in un modulo. Quando egli tornerà un seconda volta gli mostreremo una pagina che lo saluti per nome.
Al contrario di altre soluzioni (per es. javascript), questo sistema è in grado di riconoscere l’utente anche a distanza di mesi (o addirittura anni), ovvero finché l’utente non cancelli dal proprio computer lo specifico cookie.

INDEX.ASP
La prima pagina si chiama index.asp.
La prima cosa che fa questo file è quella di verificare se esista un cookie che contenga al proprio interno il nome del visitatore.

<%
nome = request.cookies(“ilmio”)(“nome”)

Come si può vedere dal codice riportato, definisco una variabile che chiamo nome e vi associo il valore prelevato dal cookie che si chiama ilmio prendendolo dalla chiave nome.

Infatti cookie, identificato con un nome, può contenere al proprio interno molteplici chiavi in modo da poter memorizzare in un unico cookie molteplici informazioni sull’utente stesso. Per leggere il contenuto di un cookie utilizzo ilcomando request.cookie(“nome”), allo stesso modo di request.form o request.querystring.
Per leggere una specifica chiave devo semplicemente aggiungerne il nome fra parentesi a doppi apici (nel nostro esempio la chiave si chiama nome).
Se volessi conoscere l’età del visitatore dovrei scrivere

età = request.cookies(“ilmio”)(“età”)

Nel caso in cui il cookie non esistesse, la variabile nome sarebbe vuota. Se la variabile non è vuota significa che l’utente ha già visitato il mio sito e che sono in grado di riconoscerlo. Quindi lo indirizzo verso la pagina di benvenuto (primapagina.asp)

if nome <>”” then
response.redirect “primapagina.asp”

Se però la variabile nome è vuota significa che non sono in grado di sapere ocme si chiama. Quindi lo indirizzo verso la pagina che mi controlla che il suo browser accetti i cookie (infatti di default i browser accettano tutti i cookie, ma l’utente può impostarlo affinché non li accetti). La pagina in questione si chiama check.asp.

else
response.redirect “check.asp”
end if
%>

CHECK.ASP
Per verificare che il browser dell’utente sia in grado di accettare i cookie utilizziamo il seguente metodo: memorizziamo in un cookie temporaneo sul computer dell’utente la data attuale. Carichiamo poi una seconda pagina. Se la seconda pagina è in grado di leggere il contenuto del cookie significa che il browser li accetta. In caso contrario significa che l’utente li ha disabilitati.
Se li accetta proseguiamo con le pagine successive; se non li accetta visualizziamo una pagina di errore.
Pertanto la prima pagina dovrà contenere le seguenti righe:

<%
response.cookies(“ilmio”)(“test”) = Date()
response.redirect “vediamo.asp”
%>

Nella seconda riga creiamo un cookie chiamato ilmio e nella chiave test inseriamo la data attuale. Come si può vedere, per scrivere un cookie è sufficiente scrivere response.cookie(“nome_del_cookie”)(“relativa_chiave”) = “testo da inserirvi”
Se non è specificata una dta di scadenza, il cookie viene rimosso non appena il browser viene chiuso. In questo caso non è necessario che il cookie sia memorizzato a lungo: a noi serve solo per controllare che il browser li accetti. Se anche viene cancellato alla chiusura del browser non ci sono problemi.
La terza riga riportata invece richiama la pagina vediamo.asp

VEDIAMO.ASP
Se il browser accetta i cookie, la pagina precedente ha avuto modo di memorizzarne uno sul computer dell’utente. Quindi ora non ci rimane che controllare che tale cookie sia presente.
Anche in questo caso, come già visto per il file index.asp, utilizziamo il comando request.cookie… per prelevarne le inrformazioni contenute e memorizzarle nella variabile verifica.
Mentre però nel file index.asp avevamo richiamato il valore presente nella chiave nome, in questa pagina prendiamo il valore della chiave test.

<%
verifica = request.cookies(“ilmio”)(“test”)

A questo punto non ci rimane che controllare la variabile verifica: se la variabil è vuota significa che il cookie non è stato creato e che quindi il browser non li supporta; visualizziamo così una pagina di errore chiamata nocookie.asp. In alternativa il browser accetta i cookie e quindi possiamo continuare con le pagine seguenti (benvenuto.asp).
Per controllare che il cookie sia stato creato e che nel suo interno sia memorizzata la data corrente utilizziamo il comando datediff, mediante il quale otteniamo la differenza, espressa in giorni, tra due date. La struttura è la seguente:

datediff(“d”, prima_data, seconda_data)

Nel nostro caso prima_data è la data odierna (ottenuta mediante Date() ) mentre la seconda data prelevata dal cookie è contenuta nella variabile verifica. Se il computer dell’utente accetta i cookie, la differenza fra le due date deve essere uguale a zero, in quanto il cookie è stato creato e subito dopo ci siamo trasferiti su questa pagina. Se la variabile verifica è vuota la differenza fra le due date è sicuramente diversa de zero: quindi il computer non accetta i cookie. Pertanto nel caso incui datediff sia diversa da zero, indirizziamo l’utente verso la pagina di errore nocookie.asp. In caso contrario (else…) carichiamo la pagina di benvenuto.

if datediff(“d”, date(), verifica) <> 0 then
response.redirect “nocookie.asp”
else
response.redirect “benvenuto.asp”
end if
%>

NOCOOKIE.ASP
Questa pagina viene richiamat solo nel caso in cui il computer dell’utente non sia in grado di gestire i cookie: pertanto è sufficiente visualizzare un messaggio di errore, invitando l’utente ad impostare il proprio browser inmodoche accetti i cookie, consentendogli così di continuare la navigazione sul nostro sito.

<html>
<head>
<title>Attenzione</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″>
</head>

<body bgcolor=”#FFFFFF”>
<p align=”center”><font size=”2″ face=”Verdana, Arial, Helvetica, sans-serif”><b><font color=”#c60000″>Attenzione!</font></b></font></p>
<p align=”center”><font size=”2″ face=”Verdana, Arial, Helvetica, sans-serif”>Il
tuo browser non accetta i cookie, quindi non puoi visitare il mio sito.</font></p>
</body>
</html>

BENVENUTO.ASP
Se però il computer dell’utente accetta i cookie viene caricata questa pagina. E’ una semplice pagina (avrebbe potuto avere anche estensione html…) che contiene un modulo in cui l’utente deve inserire il proprio nome.

<html>
<head>
<title>Benvenuto</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″>
<script language=”javascript”>
<!–//
function Controlla(){
if (document.nome_form.nome.value==””){
alert(“E’ necessario inserire il nome”);
return false;
}
return true;
}
//–>
</script>
</head>

<body bgcolor=”#FFFFFF”>
<p align=”center”><font size=”2″ face=”Verdana, Arial, Helvetica, sans-serif”>Ciao.
Consentimidi presentarmi:</font> <font face=”Verdana, Arial, Helvetica, sans-serif” size=”2″><br>
io sono Darty e tu? Come ti chiami?</font></p>

<form name=”nome_form” method=”POST” action=”aggiungi.asp” language=”javascript” onSubmit=”return Controlla()”>
<div align=”center”>
<input type=”text” name=”nome”>
<br>
<input type=”submit” name=”Submit” value=”Presentati!”>
</div>
</form>
<p>&nbsp; </p>
</body>
</html>

Una volta inserito il nome, il modulo viene inviato alla pagina aggiungi.asp, la quale dovrà memorizzare il nome del visitatore in nella chiave nome del cookie chiamato ilmio.

AGGIUNGI.ASP
Come prima cosa dobbiamo recuperare il nome inserito nel modulo e memorizzarlo nella variabile nome. Se tale variabile è vuota carichiamo una pagina di errore.

<%
nome=request.form(“nome”)
if nome = “” then
response.redirect “errore.htm”
end if

In caso contrario scriviamo nel cookie il nome del visitatore. Come abbiamo già fatto in precedenza utilizziamoil comando response.cookie(“nome_cookie”)(“chiave”) = “testo da scrivere” dove “testo da scrivere” altro non è che la variabil nome stessa.

response.cookies(“ilmio”)(“nome”)=nome

Abbiamo detto che, nel caso in cui non sia specificata una data di scadenza, il cookie viene eliminato non appena si chiude il browser. Se così fosse tutto questo sistema non avrebbe senso, in quanto non saremmo in grado di riconoscere l’utente al suo prossimo ritorno.
Pertanto ricordiamo di specificare sempre una data di scedenza per il nostro cookie: per far questo è sufficiente scrivere

response.cookies(“ilmio”).Expires=”01/01/2010″

In questo modo il cookie appena creato sarà eliminato solo il primo gennaio del 2010!
Se però volessimo fare in modo che il cookie venisse eiliminato dopo un certo numero di giorni? In questo caso occorre sostituire la stringa appena vista con la seguente:

response.cookies(“ilmio”).Expires=Date() + 365

dove Date() è la data attuale e 365 è il numero di giorni aggiuntivi. In questo caso il nostro cookie resisterà un anno a partire da oggi. Fra un anno quel cookie sarà automaticamente eliminato dal computer dell’utente.

response.cookies(“ilmio”).Expires=Date() + 365

Una volta memorizzato il nome dell’utente nel cookie, carichiamo finalmente la pagina di ingresso del nostro sito:

response.redirect “primapagina.asp”
%>

PRIMAPAGINA.ASP
Questa è la pagina inziale del nostro sito: abbiamo infatti visto che se il file index.asp trova un cookie con memorizzato il nome dell’utente, questi verrà indirizzato verso questa pagina. Solo nel caso in cui il cookie non sia ancora presente occorre eseguire tutte le altre pagine viste finora.
Anche in questo caso conviene però verificare che il cookie con il nome dell’utente sia presente: infatti potrebbe succedere che l’utente acceda direttamente a questa pagina, eludendo quindi il sistema di controllo dei cookie analizzato finora.
Pertanto nel caso in cui il cookie non esistesse, indirizzeremo l’utente verso la pagina check.asp eseguendo così tutto il percorso per verificare che il browser accetti o meno i cookie.

<%
if request.cookies(“ilmio”)(“nome”) = “” then
response.redirect “check.asp”
end if
%>

In caso contrario (ovvero il cookie esiste e al suo interno è memorizzato il nome dell’utente, visualizziamo una frase di benvenuto personalizzata con il nome del visitatore, utilizzando il comando

response.write request.cookies(“ilmio”)(“nome”)

mediante il quale mostriamo a schermo il nome del visitatore stesso.

<html>
<head>
<title>Benvenuto nel mio sito</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″>
</head>

<body bgcolor=”#FFFFFF”>
<p align=”center”><font size=”2″ face=”Verdana, Arial, Helvetica, sans-serif”>Benvenuto
<font color=”#c60000″> <b><% response.write request.cookies(“ilmio”)(“nome”) %> </b></font></font></p>
<p align=”center”>&nbsp;</p>
<p align=”center”><font size=”2″ face=”Verdana, Arial, Helvetica, sans-serif”>Questa
&egrave; la prima pagina del sito </font></p>
</body>
</html>

IN CONCLUSIONE
Riepilogando quanto detto finora ricordiamo che:

– per leggere un cookie utilizziamo il comando:
request.cookies(“nome_del_cookie”)(“nome_chiave”)

per scrivere un cookie utilizziamo il comando:
response.cookies(“nome_del_cookie”)(“nome_chiave”)=”testo”

Se non è specificata una data di scadenza, il cookie viene eliminato alla chiusura del browser.

– per impostare una scadenza precisa occorre scrivere:
response.cookies(“ilmio”).Expires=”01/01/2010″

– per impostare un certo numero di giorni di validità invece scriveremo:
response.cookies(“ilmio”).Expires=Date() + 365

Luca M.

Luca M.

Classe 1982, Luca scrive su Amicopc.com e segue la parte tecnica sin dalla fondazione (2000), appassionato di Tecnologia, Smartphone, Videogames e tutte le novità dal mondo Tech.