Qué son las cookies y cómo usarlas en PHP

Resumen

Las cookies en PHP son pequeños fragmentos de información que un sitio web guarda en el navegador del usuario para recordar datos no sensibles, como preferencias de color, historial de visitas o sesiones activas. Aprender a usarlas con setcookie te permite personalizar la experiencia de cada visitante desde el backend.

¿Qué son las cookies y por qué piden tu consentimiento?

Una cookie es un pedacito de la memoria del navegador que tu sitio web pide prestado para guardar información sobre el usuario. Como esa memoria pertenece a la computadora de quien navega, la ley exige pedirle permiso antes de escribir nada ahí. Por eso te aparece ese aviso de “¿Aceptas las cookies?” cada vez que entras a una página.

Tú, como programador, no puedes guardar cookies por capricho. Necesitas el consentimiento explícito del usuario, y por eso existen los banners de cookies que ves en casi todos lados.

¿Qué información guarda una cookie? Datos no sensibles como preferencias visuales, idioma, historial de visitas o un identificador de sesión. Nunca contraseñas ni datos bancarios en texto plano.

¿Para qué se usan las cookies en la vida real?

Un ejemplo clásico son las aerolíneas. Cuando entras a buscar un vuelo y luego cierras la pestaña, la página guarda una cookie que recuerda tu visita. La próxima vez que entres, el sitio sabe que ya viste cierto precio y, en muchos casos, te muestra uno más alto. Esa es la “magia” (y a veces la trampa) detrás del rastreo con cookies.

También sirven para recordar el tema oscuro que elegiste, mantener tu sesión iniciada o personalizar el contenido que ves en portada.

¿Cómo manejo cookies en PHP con setcookie?

PHP ofrece una variable superglobal llamada $_COOKIE para leer cookies y la función setcookie (o setrawcookie) para crearlas. Con setcookie puedes definir el nombre, el valor, el tiempo de vida, en qué directorios estará disponible la cookie y si debe viajar solo por conexiones seguras.

¿Cuál es la diferencia entre $_COOKIE y setcookie? $_COOKIE se usa para leer cookies que ya existen en el navegador. setcookie se usa para crear o actualizar una cookie nueva.

¿Cómo creo una cookie paso a paso?

El ejercicio de la clase consiste en cambiar el color del header de una réplica de Platzi usando una cookie personalizada por usuario. La estructura básica es esta:

php

<?php setcookie(name: 'header_color', value: '#12373D'); $color = $_COOKIE['header_color'] ?? '#121F3D'; ?>

Lo que está pasando aquí es lo siguiente:

  • setcookie define una cookie llamada header_color con un valor en código hexadecimal.
  • El operador de fusión null (??) revisa si la cookie ya existe; si existe, usa ese valor, y si no, aplica el color por defecto de Platzi (#121F3D).
  • La variable $color luego se imprime dentro del atributo style del HTML para pintar el header.

¿Cómo aplico el valor en el HTML?

Dentro de la etiqueta del header, imprimes la variable directamente con sintaxis embebida de PHP:

html

<header style="background: <?= $color ?>"> <img src="logo.webp" alt="Platzi"> </header>

La primera vez que cargas la página, se crea la cookie. Al recargar por segunda vez, el navegador ya envía esa cookie al servidor, $_COOKIE['header_color'] la detecta y el header aparece con el nuevo color.

¿Por qué la cookie solo funciona para un usuario?

Las cookies se guardan en el navegador de cada visitante, no en el servidor. Eso las vuelve personales: el cambio de color que tú hiciste no afecta a nadie más. Si abres una pestaña de incógnito, verás el color original porque ahí no existe ninguna cookie definida.

Puedes verificarlo abriendo las DevTools del navegador, yendo a la pestaña Application y revisando el apartado Cookies bajo localhost. Ahí aparece header_color con el valor exacto que asignaste.

¿Para qué me sirve esto en proyectos reales?

  • Personalizar temas visuales como modo oscuro o claro.
  • Recordar el idioma seleccionado por el usuario.
  • Guardar productos vistos recientemente en un ecommerce.
  • Mantener filtros aplicados entre recargas de página.
  • Identificar visitantes recurrentes sin requerir login.

No es buena práctica dejar que un usuario cambie colores arbitrarios de tu marca, pero el ejercicio te muestra el mecanismo. Lo importante es entender que con una sola función puedes empezar a construir experiencias adaptadas a cada visitante.

Dentro del ejercicio aparecen varios conceptos que vale la pena tener claros. Los named arguments [04:32] son una sintaxis de PHP que te permite pasar argumentos a una función indicando su nombre, como name: 'header_color', lo que mejora la legibilidad. El operador de fusión null [05:18] (??) devuelve el primer valor si existe, y si no, el segundo, ideal para valores por defecto. La variable superglobal $_COOKIE [03:45] está disponible en cualquier parte del script y contiene todas las cookies enviadas por el navegador. Y el formato .webp [02:38] que se usa para el logo es una extensión optimizada para web que reduce el peso de las imágenes sin perder calidad.

¿Ya intentaste crear tu primera cookie? Cuéntame en los comentarios qué información personalizarías para tus usuarios.