viernes, 9 de enero de 2009

Como crear Cookies en PHP

Las cookies son pequeños archivos que se guardan en la maquina del cliente con el objetivo de almacenar información que se necesita mantener entre las diferentes páginas de una web. Estas son utilizadas en páginas en las cuales el usuario configura algunas opciones del web, en paginas de comercio electrónico o en donde se quiere almacenar datos para facilitar la navegación.

Crear una cookie
Para crear una cookie se utiliza la función setcookie que cuenta con cinco parámetros los cuales son: el nombre de la variable que se guardará en la cookie, el valor almacenado, la fecha de expiración, el path o ruta donde sera accesible la cookie, el dominio desde donde se puede acceder y un valor que indica que se podrá acceder si existe una conexión segura (https).

Código
setcookie("nombre", "valor", fecha, "path", 

"dominio"
, segura);

Por ejemplo si deseamos guardar el nombre del usuario y que expire en una hora tendríamos el siguiente código:

Código
setcookie("usuario", "dxpro", time() + 31536000,

"/administracion/");

Ahora si deseamos que la cookie expire al cerrar el navegador, no es necesario especificar la fecha de caducidad:

Código
setcookie("usuario", "dxpro");

Accediendo a las Cookies

Una vez creada la cookie se puede acceder a ella en la siguiente llamada a una página, las cookies son recuperadas de forma automática por el script php cada vez que se carga una página. Para acceder a ellas existe una variable global $_COOKIE que contiene un array con todas la cookies creadas para ese sitio.

Por ejemplo si deseamos recuperar la variable usuario que habíamos guardado en la cookie se tendría:

Código
echo $_COOKIE['usuario'];

Eliminar una Cookie

Para eliminar una cookie se crea una nueva cookie con el mismo nombre pero sin parámetros adicionales.

Código
setcookie("usuario");

Ejemplo
Veamos un ejemplo en el cual le damos la bienvenida al usuario de acuerdo a si ha visitado por primera vez a nuestro sitio web.

Código
<?php

if (isset($_COOKIE['visita'])) {
echo "Gracias por visitarnos nuevamente";
} else {
setcookie("visita", "ok", time() + 31536000);
echo "Bienvenido por primera vez";
}
?>

Recomendaciones
Si bien es cierto se pueden almacenar datos en la cookie, es recomendable no guardar datos sensibles pues como están guardadas en la maquina del cliente estas se pueden visualizar facilmente, por ejemplo no es recomendable guardar claves de acceso, número de tarjeta de credito, etc.

Otra recomendación es que si se guardan algunos datos que son sensibles, primero encriptarlos con algún algoritmo de doble vía, es decir que se pueda desencriptar al momento de recuperarse.