Se nel file di configurazione di Php
l'opzione register_globals è settata su
"On" i valori inseriti si possono reperire
facilmente attraverso il nome del cookie stesso,
tuttavia per le ben note ragioni di sicurezza questa
opzione è ora deprecata ed è consigliabile
utilizzare l'array associativo
$HTTP_COOKIE_VARS oppure $_COOKIE
(quest'ultimo introdotto a partire dalla versione
4.1 di Php).
Esempio
<?php
/*** Se non esiste alcun cookie
***/ if(empty($HTTP_COOKIE_VARS)){
$message="Visita freephp.html.it!" ;
/*** Invia un cookie temporaneo
***/ setcookie("adv",$message) ;
/*** Refresh della pagina per poter
leggere i dati appena inviati ***/
header("Location: ".$_SERVER["PHP_SELF"]) ;
}
/*** Se il cookie esiste e
register_globals= On ***/
elseif(isset($adv)){
echo($adv) ;
}
/*** Se esiste l'array
$_COOKIE (php >= 4.1) e se l'array non è
vuoto (cioè se il cookie è stato inviato con
successo) ***/ elseif
(isset($_COOKIE)&& !empty($_COOKIE)){
echo($_COOKIE["adv"]) ;
}
/*** Se nessuna delle ipotesi
precedenti si avvera ricorriamo all'array
$HTTP_COOKIE_VARS ***/ else{
echo($HTTP_COOKIE_VARS["adv"]) ;
}
?>
Le
poche righe di codice appena esaminate impostano
il cookie "adv" se questo già non esiste,
altrimenti tentano di leggerlo fornendoci diversi
esempi su come rendere disponibile all'interno
dello script il valore memorizzato. In questo
caso, svolgendosi all'interno della stessa pagina
sia l'invio che il recupero, dopo la chiamata di
setcookie() diventa necessario effettuare un
refresh. Sfortunatamente un cookie non
è immediatamente leggibile durante la stessa
elaborazione che lo ha creato.
L'esempio
tuttavia presenta un grosso difetto poichè
genererebbe un loop infinito qualora il
client rifiutasse i cookie e, se così fosse, tutti
i tentativi di invio fallirebbero senza neppure
permetterci di intercettare un messaggio di
errore.