> **Atención:** Este artículo fue escrito hace muchos años y parte de la información puede ser obsoleta o incorrecta. Téngalo en cuenta al leerlo.
Las cookies son pequeños fragmentos de información textual que se almacenan en el navegador del visitante de un sitio web. Siempre se transfieren con cada página que se recarga, y pueden ser borrados, modificados y leídos por el usuario en cualquier momento, por lo que no son adecuados para almacenar información personal.
*Advertencia: si su sitio web utiliza cookies para rastrear a los usuarios o complementos de terceros (por ejemplo, el botón "Me gusta" de Facebook, el medidor de tráfico de Google Analytics, los anuncios de banner), debe informar al usuario al respecto.
"Una nota más: su sitio no debe contener publicidad ni códigos de medición hasta que haya obtenido el consentimiento. Y eso apesta".
-- David Grudl
Todas las cookies se almacenan en la variable superglobal $_COOKIE
, que almacena cada clave como un array.
Por ejemplo, si hemos almacenado el nombre del usuario actualmente conectado bajo la clave user
en la cookie, podemos recuperarlo fácilmente:
echo $_COOKIE['usuario'];
Tenga en cuenta: es posible que no siempre existan cookies (por ejemplo, si es un usuario nuevo). Por lo tanto, debemos comprobar siempre la existencia de cookies antes de cualquier anuncio y ofrecer un mensaje de error alternativo si es necesario.
if (isset($_COOKIE['usuario']) && $_COOKIE['usuario']) {echo 'Usuario registrado:' . $_COOKIE['usuario'];} else {echo 'No se ha registrado nadie.';}
Dado que todas las cookies se almacenan en la variable superglobal $_COOKIE
, se pueden listar fácilmente:
var_dump($_COOKIE);
O, alternativamente, recorrer el ciclo y obtener todas las claves y valores:
foreach($_COOKIE as $key => $value) {echo $key . ':' . $value; // escribir la clave y el valorecho '<br>'; // envolver la línea}
La función setcookie()
se utiliza para almacenar datos en las cookies.
El primer parámetro es la clave de la cookie, que se utiliza para leerla desde el campo $_COOKIE
, y el segundo parámetro son los datos en sí mismos como cadena.
Con el tercer parámetro podemos (opcionalmente) establecer el periodo de validez durante el cual la cookie estará disponible. La hora de disponibilidad se da como timestamp, por lo que si queremos establecer una cookie con una validez de 1 hora a partir de este momento, sólo tenemos que escribir time() + 3600
.
$data = 'Algunos contenidos que queremos almacenar.';setcookie('TestCookie', $data);setcookie('TestCookie', $data, time() + 3600);
Las cookies no son adecuadas para almacenar datos de mayor tamaño (los navegadores suelen permitir que se almacenen sólo 4 kB y un máximo de 20 cookies, el tamaño también incluye los nombres de las cookies, los ajustes de validez, etc.).
Es mejor almacenar datos más grandes en el servidor y sólo poner un identificador en la cookie, por el cual podemos saber a qué usuario pertenece. Este método se llama $_SESSION
y se discute en un artículo separado.
Si no necesitas almacenar los datos siempre de forma sincrónica en el servidor, puedes utilizar el almacenamiento localstorage disponible en javascript. Su capacidad es del orden de MB y los datos no están sujetos a caducidad.
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | es