|
I valori delle variabili sono normalmente temporanei, ovvero durano finché non viene completata l'elaborazione di una
pagina. Per questo motivo le informazioni che debbono essere mantenute da una richiesta alla successiva vengono
solitamente mantenute nella pagina utilizzando i campi delle form di tipo hidden.
A questo scopo consideriamo un semplice esempio: nella form del paragrafo precedente, è possibile prima selezionare
un contatto da modificare, poi premere Modifica Contatto. La form che presenta i dati del contatto conosce quale
contatto deve visualizzare, ma siccome l'aggiornamento del database verrà fatto al passo successivo, è necessario
"ricordare" quale contatto si sta modificando. In questo modo chi gestirà l'azione richiesta da Salva Contatto potrà
operare correttamente. L'informazione del contatto corrente viene infatti mantenuta in un campo di tipo hidden:
// File: contact.inc
<? echo "<input type=hidden name=Contact[idContact] value='$Contact[idContact]'>"
?>
In questo modo l'informazione contenuta nella variabile Contact[idContact] viene mantenuta tra due successive
invocazioni: il valore è noto quando l'utente preme Modifica Contatto, ma deve venire utilizzato quando l'utente
preme Salva Contatto.
In generale tutte le informazioni che devono persistere da una invocazione all'altra richiedono di essere salvate con l'uso
di campi hidden. In realtà questo è abbastanza scomodo perché le informazioni possono anche essere molto numerose.
Pertanto l'uso dei campi hidden viene ristretto al mantenimento di informazioni temporanee, che devono essere usate
per una sequenza di passaggi ma che a un certo punto verranno abbandonate. Per il mantenimento di informazioni che
invece devono essere mantenute a lungo, e che possono essere considerate in un certo senso come "variabili globali"
dell'applicazione, si utilizzano i cookie.
I cookie sono informazioni di stato sui documenti che vengono mantenute dal browser. È da notare che perché il
meccanismo dei cookie funzioni è necessaria la "collaborazione" del browser: il server richiede il mantenimento di una
certa informazione ma poi sta al browser mantenerla od ignorarla. Poiché i cookie possono essere disattivati, una
applicazione che sfrutti i cookie potrebbe non funzionare. In generale però i cookie si rivelano così utili che la maggior
parte dei siti presenti su Internet li usano. Disabilitarli non è consigliabile.
Quando si utilizzano bisogna però tenere presente che c'è un limite nella quantità di informazioni che possono essere
mantenute dal browser, limite che può essere anche di poche centinaia di byte. Per questo motivo le applicazioni
devono utilizzare i cookie nella maniera più contenuta possibile. Spesso viene mantenuta una sola variabile che serve a
rintracciare nella memoria del server tutte le altre.
I cookie e la sicurezza
I cookie sono un argomento molto controverso per il fatto che vengono utilizzati da alcune agenzie di pubblicità come
strumento per costruire dei "profili" di utenti in base ai siti che visitano. Il meccanismo si basa sull'assegnamento di un
identificatore ad un utente che viene mantenuto in un cookie. Ogni volta che l'utente visita un sito, fornendo
(involontariamente) il proprio identificatore, è possibile creare una base di dati dei siti visitati dall'utente (o almeno dei
siti che sono sotto il controllo della stessa agenzia di pubblicità). Queste informazioni se da un lato sono utili alle
agenzie stesse in quanto possono inviare certi messaggi pubblicitari a persone che rispondono a certi requisiti dall'altro
sono una violazione della privacy. A nessuno piace l'idea che da qualche parte esista un database che contiene
informazioni sui siti che si sono visitati. Da queste informazioni infatti si possono dedurre (o almeno ipotizzare) dati sui
propri interessi politici, culturali e religiosi.
Tecnicamente i cookie funzionano nel seguente modo: quando una applicazione desidera impostare un cookie, invia
come risposta una intestazione di questo tipo:
Set-Cookie: mask=1; expires=Friday, 27-Aug-99 19:18:40 GMT
Un cookie contiene in generale un assegnamento di variabili, una data di scadenza, e opzionalmente un dominio e un
path. Se browser accetta il cookie (e in generale può anche non farlo o addirittura chiedere all'utente se accettarlo o
meno), fornirà nelle successive richieste rivolte al path e al dominio specificati, entro la data di scadenza, una
intestazione come questa:
Cookie: mask=1
In questo modo il browser comunica all'applicazione le variabili di stato che l'applicazione stessa gli ha detto di
mantentere.
|