Indice

Utilizzare i cookie in Php

Autore: Fabio Di Matteo
Ultima revisione: 09/05/2009

I cookie sono stringhe inviate da un webserver ad un browser e successivamente reinviate dal browser al server. Servono di solito per memorizzare preferenze oppure tenere traccia del login di un utente, ma anche a molto altro, dipende dall' esigenza.
Utilizzare i cookie in php e' molto facile infatti si usa soltanto una funzione per scriverli ,ovvero setcookie(), e poi vengono riletti tramite l'array $_COOKIE[] .

L'utilizzo base di setcookie e' il seguente, per la casistica piu' avanzata vi rimando al manuale php

 setcookie('ricorda', 'si', time()+4000); 

dove:

* ovvero in questo caso la data attuale piu' 400 secondi, in pratica il cookie ha quindi durata pari a 400 secondi.
E' importante sottolineare che una volta generato il cookie questo potra' essere letto a partire dalla pagina web successiva a quella contenente la funzione setcookie()

I cookie, come gia' detto, vengono letti tramite l'array $_COOKIE[] nella seguente maniera:

 $valore_cookie = $_COOKIE["ricorda"] 

dove ricorda e' il nome del cookie;

Un pratico esempio

Di seguito un pratico esempio di come sia possibile implementare una pagina che possa gestire la scelta tra due client web per la posta ricordando le scelte effettuate dall'utente tramite un cookie. La scelta in questo caso e' tra Roundcube e Horde Webmail. Una volta memorizzata la scelta alla successiva visita della pagina l'utente verra reindirizzato entro 3 secondi verso la webmail preferita.

<?php
 if (!isset( $_GET["roundcube"] )  && !isset($_GET["horde"])  ){
 
	if (isset($_COOKIE["ricorda"]))
	{
			echo "Il cookie e' stato settato.<br>";
			echo "Il cookie ha valore ". $_COOKIE["ricorda"] ; 
 
			$checked="1" ;
			if ($_COOKIE["ricorda"]=='roundcube') $redirect_url="http://www.miosito.it/roundcubemail/";
			if ($_COOKIE["ricorda"]=='horde') $redirect_url="http://www.miosito.it/horde/";
 	}	
 
 echo'
<html>
  <head>
     <title>Webmail miosito</title>
 	 <meta http-equiv="refresh" content="3; URL='.$redirect_url.'"> 
  </head>
 <body>
<div align="center"><br><img src="logoposta.jpg" alt="logoposta"><br>Benvenuti nella <b>Webmail</b> <br><br>
da adesso e\' possibile scegliere tra due diversi programmi per la gestione della posta elettronica,<br> <b>Roundcube</b> <i>semplice ma efficente</i> e <b>Horde</b> <i>completo e piu\' avanzato.</i>
<br><br><br><br>
<b>Seleziona il client da utilizzare:</b><br><br>
 
	<form action="index.php" method="get">
	<button  name="roundcube" type="submit"><img src="roundcube.jpg" border="0" alt="Roundcube"></button>
	<button  name="horde" type="submit"><img src="horde.jpg" border="0" alt="Horde"></button>
	<br><br><input type="checkbox" name="ricorda" value="1"  ';  
 
	if ($checked=='1') echo 'checked ';
 
	echo' >Ricorda le impostazioni';  
	echo '</div></body>	</html>';
 
 
 
}else{
		if (isset($_GET["ricorda"]) )
		{
			if (isset($_GET["roundcube"])) setcookie('ricorda', 'roundcube', time()+400000);
			if (isset($_GET["horde"])) setcookie('ricorda', 'horde', time()+400000);
		}else{
			setcookie('ricorda', '0', time()+400000);
		}
 
		if (isset($_GET["roundcube"])) header('Location: http://www.miosito.it/roundcubemail');
		if (isset($_GET["horde"])) header('Location: http://www.miosito.it/horde');
}
?>