setcookie() è la funzione
predefinita di php per inviare un "Set-Cookie
HTTP Response Header", cioè la richiesta al
client da parte del server di memorizzare un
cookie; tale header deve contenere 6
parametri che corrispondono ai possibili
argomenti della funzione.
sintassi
di
setcookie()
boolean
setcookie ( string name [, string value [, int
expire [, string path [, string domain [, int
secure]]]]])
Soltanto i primi due
argomenti sono obbligatori mentre gli altri
parametri, se non specificati, verranno impostati
automaticamente secondo i valori di default che
vedremo tra poco.
Name
e
Value
rappresentano
rispettivamente la variabile con cui è
identificabile il cookie ed il suo
contenuto.
Fornire un Value vuoto ("")
nel 99% dei casi equivale a cancellare un cookie
già esistente identificato con Name (vedi pù
avanti "Eliminare i cookie").
Expire
(default =
0)
la
scadenza determina per quanto tempo il
cookie rimarrà memorizzato dal client: impostarla
a 0 o tralasciare questo valore equivale a settare
un "magic cookie".
Path
(default= directory
corrente)
Indica
il percorso sul server per il quale il
cookie sarà valido. Una stringa come "/mydoc"
stabilirà la leggibilità anche all'interno delle
directory "mydoc", "mydocuments", "mydoc_new" e
loro sottodirectory; al contario
"/mydocs/pagina.php" renderà i dati ricevibili
soltanto nella pagina indicata esplicitamente.
A differenza di quanto accade per il
DOMAIN, è possibile settare un ambito diverso da
quello in cui viene eseguito lo script che invia
l'header: in parole povere ciò significa che uno
script può creare un cookie che non sarà poi in
grado di leggere.
Se Path non verrà
specificato il cookie si intenderà valido solo per
i percorsi compresi nell'ambito della directory in
cui si trova la pagina che lo ha inviato.
All'opposto il percorso "/" è il più ampio
immaginabile, e rappresenta l'intera
documentRoot del webserver.
Il parametro
Path è stato pensato per evitare che, ad esempio,
una pagina presente nel percorso "/utenti/utente1"
possa leggere il cookie inviato da una pagina
presente in "/utenti/utente2".
Domain
(per default il domain completo del server, es.
www.html.it)
Indica
il dominio per il quale il cookie è valido,
può trattarsi di un nome dominio come un indirizzo
IP. La verifica sul dominio avviene in modo
molto rigoroso: uno script appartenente a
www.dominio1.com non vedrà accettata dal client
la sua richiesta di memorizzare un cookie con
un parametro domain differente (ad esempio
www.dominio2.com). Allo stesso tempo un cookie
impostato in un dominio non sarà leggibile da un
altro.
La verifica viene detta per
"tail match", ovvero "corrispondenza di
coda": il confronto su di essa da parte del
browser procede da destra verso sinistra, inoltre
la stringa del Domain deve contenere almeno due
caratteri "." (punto).
Quindi ad
esempio "html.it" sarà una stringa valida sia per
freephp.html.it che freeasp.html.it (ed i cookie
risulteranno condivisibili tra i diversi dominii)
ma non per "myhtml.it".
E' bene ricordare
che uno stesso domain non può settare più di 20
cookie e che la dimensione massima accettata
dal client è di 4 kilobyte ciascuno
(incluso lo spazio occupato dai parametri).
Secure
(default= 0)
Se
impostato su "1" (TRUE) il cookie potrà essere
inviato soltanto se si tratta di una
connessione sicura (HTTPS).
Consiglio anche la lettura delle specifiche di Netscape: vengono
dati per scontati alcuni degli aspetti che abbiamo
appena visto ma se ne svelano altri piuttosto
interessanti.