Corso PHP/ Lezione 9: I cookies

In questa lezione vediamo come funzionino i famigerati cookies e come sia possibile gestirli attraverso il linguaggio PHP


Ogni utente di Internet ha sentito parlare, una volta o l’altra, dei cookies;
l’argomento è tradizionalmente piuttosto controverso, risultando difficile
stabilire in modo definitivo se i "biscotti" (questo il significato
del termine) siano da considerarsi buoni o cattivi. Cerchiamo di capire, allora,
di cosa si tratta.

La definizione originale dei cookies li descrive come un meccanismo mediante
il quale delle applicazioni lato server posso memorizzare e recuperare
informazioni sul lato client (rappresentato dal browser); in questo modo è
possibile associare ad ogni visitatore un rudimentale "stato". Vediamo
adesso come si manipolano i cookies con il linguaggio PHP.

Tutte le operazioni di scrittura, modifica o cancellazione di cookies in PHP
avvengono mediante una stessa funzione, setcookie() . Tale funzione deve
obbligatoriamente essere invocata prima che qualsiasi contenuto venga inviato al
browser; i cookies, infatti, vengono trasmessi tra client e server sotto forma
di intestazioni (headers) HTTP.

La funzione prevede solo due argomenti obbligatori: il nome da assegnare al
cookie ed il suo valore. Ad esempio, se vogliamo memorizzare nel browser di un
visitatore un cookie, che chiameremo $nomeutente , contenente la stringa
"latoserver", l’istruzione da utilizzare sarà la seguente

// Imposto un cookie: $nomeutente = "latoserver.it";

setcookie( "nomeutente", "latoserver.it" );

E’ possibile specificare anche altri argomenti (facoltativi); nell’ordine
abbiamo: scadenza del cookie, percorso, dominio e secure . Per una
discussione dettagliata si rinvia alla sitografia in fondo alla pagina.

Quando un cookie è stato impostato, il suo valore può essere modificato
richiamando nuovamente la funzione setcookie() ed associando allo stesso
nome il nuovo valore. La cancellazione di un cookie, infine, può avvenire in
due modi: assegnandogli un valore nullo o impostando la scadenza ad una data
passata.

Resta da vedere in quale modo si possano leggere da uno script PHP le
informazioni memorizzate nei cookies; in questo compito siamo molto facilitati,
in quanto l’interprete PHP analizza automaticamente i cookies inviati dal
browser e li rende disponibili in altrettante variabili globali e nell’array
associativo $HTTP_COOKIE_VARS .


Passiamo ad analizzare un esempio pratico di utilizzo dei cookies, realizzando una semplice pagina PHP che ricorda la data e l’ora dell’ultimo accesso del visitatore. A tale scopo impostiamo sul browser un cookie
$ultimavisita , la cui scadenza determina quanto a lungo viene conservata tale
"memoria". Nel nostro esempio non è stata specificata alcuna scadenza, in modo da far scomparire il cookie alla chiusura del browser.

Il valore assegnato di volta in volta al cookie $ultimavisita è il risultato della funzione
time() e consiste nel numero di secondi trascorsi dalla cosiddetta "Unix
epoch" (primo gennaio 1970).

<?php

// file `saluto.php'

// Il saluto predefinito

$saluto = "Benvenuto!";

// Controllo se esiste il cookie...

if (isset($HTTP_COOKIE_VARS["ultimavisita"])) {

// Cambio il saluto con uno piu' appropriato

$saluto = "Bentornato!";
}

// Imposto il cookie relativo a questa visita

setcookie( "ultimavisita", time() );

?>

<html>

<head>

<title><? echo $saluto ?></title>

</head>

<body>

<h1><? echo $saluto ?></h1>

<?php

if (isset($HTTP_COOKIE_VARS["ultimavisita"])) {

// Stampo la data dell'ultima visita

echo "L'ultima volta sei stato qui il " . date( "d/m/Y"); 

echo " alle ore " . date( "H:i:s.", $ultimavisita );

// Link per cancellare il cookie

echo "<p><a href="cancella.php">Cancella il cookie</a>";

} else {

echo "Non sei mai stato qui prima?";

}

?>

</body>

</html>

Lo script cancella.php , richiamabile cliccando sul link "Cancella il
cookie", non fa altro che cancellare il cookie $ultimavisita , assegnandogli un valore nullo, e dirottare il browser di nuovo alla pagina precedente.

<?

// file `cancella.php'

setcookie( "ultimavisita", "" );

header( "Location: saluto.php" );

?>

L’esempio proposto, sebbene di improbabile utilità, dovrebbe aver chiarito le modalità d’impiego dei cookies; pur nella sua semplicità, inoltre, può essere il punto di partenza per lo sviluppo di funzionalità personalizzate, lasciate alla vostra fantasia.

Ancora una volta, per questa puntata è tutto. Alla prossima!

Luca Balzerani , studente di
Informatica, è fondatore e presidente di LatoServer.it ,
sito dedicato alla programmazione server-side ed al backend in generale.

La tua email sarà utilizzata per comunicarti se qualcuno risponde al tuo commento e non sarà pubblicato. Dichiari di avere preso visione e di accettare quanto previsto dalla informativa privacy

Chiudi i commenti