INTRODUCCIÓN

Las cookies son utilizadas habitualmente por los servidores web para diferenciar usuarios, memorizar las preferencias del usuario como pueden ser colores de fondo, idioma, etc., y así actuar de diferente forma dependiendo de esto.

Sobre las cookies han circulado muchos mitos sobre si son virus, si recopilan información privada, etc., en esta sección no vamos a entrar en desmentir esto, si que es cierto que no son programas que se instalan en el equipo del usuario, sino que son datos que se almacenan y que pueden proporcionar información incluso de que páginas se han visitado…

Resumiendo un poco, cuando un usuario accede a un servidor y este deja datos (cookies) en el navegador ‘del usuario’, si esos datos persisten cuando vuelva al mismo servidor en peticiones posteriores, entonces es cuando si que hay un programa ‘del lado del servidor’ que puede recabar información de esos datos almacenados.

COMO CREAR UNA COOKIE ‘SIMPLE’ EN PHP

Vamos a utilizar las siguiente funciones:

  • mktime ([ int $hour = date(«H») [, int $minute = date(«i») [, int $second = date(«s») [, int $month = date(«n») [, int $day = date(«j») [, int $year = date(«Y») [, int $is_dst = -1 ]]]]]]] )
  • setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] )
  • $_COOKIE[‘name’]

setcookie() define una cookie para ser enviada junto con el resto de las cabeceras de HTTP. Al igual que otras cabeceras, las cookies deben ser enviadas antes de que el script genere ninguna salida (es una restricción del protocolo). Esto implica que las llamadas a esta función se coloquen antes de que se genere cualquier salida, incluyendo las etiquetas <html> y <head> al igual que cualquier espacio en blanco.

mktime() Devuelve la marca de tiempo Unix correspondiente a los argumentos dados. Esta marca de tiempo es un entero que contiene el número de segundos entre la Época Unix (1 de Enero del 1970 00:00:00 GMT) y el instante especificado. Los argumentos pueden omitirse de derecha a izquierda; cualquier argumento que se omita será establecido al valor actual según la fecha y hora locales.

$_COOKIE[‘name’] Variable tipo array asociativo, para establecer el valor de la cookie.

Para nuestro ejemplo vamos a construir una cookie que establezca un color para poder usarlo en el atributo style.

Pasos:

  • Crear y grabar cookie.
  • Usar cookie.
  • Eliminar cookie

Creamos la cookie, en las primera líneas de nuestro documento, en este ejemplo, la cookie expira en el año 2025 y a continuación la vamos a utilizar (no tiene porqué ser a continuación), pero como es un ejemplo nos vale.

<?php

$expiracion = mktime(0, 0, 0, 1, 1, 2025); //Expiracion por fecha.
setcookie('color', '#FF0000', $expiracion);

$color = $_COOKIE['color'];
echo "<div style='color:$color'>Color seleccionado: $color</div>";

?>

El resultado sería:

Color seleccionado: #FF0000

Ahora vamos a explicar como se elimina la cookie creada.

Para esto tenemos que cambiar la fecha de expiración a una fecha anterior a la actual.

<?php

$expiracion = mktime(0, 0, 0, 1, 1, 2000); //Expiracion por fecha.
setcookie('color', '#FF0000', $expiracion);

?>

Al establecer con setcookie nuestra cookie a una fecha pasada, esta ya deja de usarse.