Contenido del curso
Cookies y sesiones
Manejo de excepciones
Trabajando con fechas
Modularización
- 16

Modularización de código en PHP con archivos
18:41 min - 17

Namespaces en PHP para evitar clases repetidas
16:15 min - 18

Autocarga de archivos con Composer y PSR-4
15:05 min - 19

Qué es un front controller en PHP
08:56 min - 20

URLs limpias con htaccess en PHP
17:28 min - 21

Traits en PHP: reutiliza métodos sin herencia
17:13 min
Cierre
Atributos de setcookie en PHP
Resumen
Trabajar con cookies en PHP va mucho más allá de guardar un nombre y un valor. La función setcookie ofrece parámetros como expires, path, domain, secure y HttpOnly que definen dónde, cuándo y cómo vive una cookie en el navegador. Si desarrollas con PHP y quieres controlar mejor la sesión y seguridad de tus usuarios, dominar estos atributos es clave.
Qué hace la función setcookie en PHP
La función setcookie envía una cookie al navegador y acepta varios parámetros que determinan su comportamiento. Aunque muchas veces solo usamos name y value, hay configuraciones que cambian por completo cómo se almacena y accede a esa cookie [01:05].
¿Qué es setcookie en PHP? Es una función nativa que envía una cookie al navegador del cliente. Recibe parámetros como nombre, valor, tiempo de expiración, ruta, dominio y banderas de seguridad.
Un ejemplo básico se ve así:
php
<?php if (!isset($_COOKIE['example_cookie'])) { setcookie( 'example_cookie', 'un michi salvaje', 0, '/', 'localhost', false, true ); echo 'Cookie creada'; } var_dump($_COOKIE); La validación con `isset` evita reescribir la cookie si ya existe, lo cual es una buena práctica para no sobrescribir valores válidos en cada recarga [07:30]. ## Cómo defino el tiempo de expiración de una cookie El parámetro *expires* controla cuánto tiempo vive una cookie en el navegador y se mide con una marca de tiempo Unix [02:45]. Si le pasas `0`, la cookie expira al cerrar la pestaña. Si quieres una duración específica, usas la función `time()`, que devuelve los segundos actuales, y le sumas el tiempo deseado en segundos. - `time() + 60` expira en 60 segundos. - `time() + 60 * 60` expira en una hora. - `time() + 60 * 60 * 24` expira en un día. - `time() + 60 * 60 * 24 * 30` expira en 30 días. Esta operación es simple aritmética: segundos por minutos por horas por días. Definir bien la expiración importa porque una cookie eterna puede ser un riesgo, y una que expira muy pronto rompe la experiencia. ## Cómo controlo dónde está disponible una cookie con path y domain El atributo *path* le dice al navegador en qué ruta de tu sitio la cookie estará accesible [04:50]. Si pones `/`, la cookie estará disponible en cualquier parte del sitio. Si pones `/configuracion`, solo estará disponible dentro de esa carpeta y sus subrutas. > **¿Qué hace el parámetro path en una cookie?** Define la ruta del sitio donde la cookie es accesible. Una cookie con path `/configuracion` estará disponible en `/configuracion` y en cualquier subruta como `/configuracion/admin`, pero no en la raíz. El detalle importante: el *path* es jerárquico hacia adelante. Si configuras una cookie en `/configuracion`, también estará disponible en `/configuracion/admin`, `/configuracion/usuarios`, y cualquier subcarpeta [11:20]. ### Y cómo restringir por dominio El parámetro *domain* indica en qué dominio o subdominio estará disponible la cookie. Puedes definirlo así: - `platzi.com` para todo el dominio. - `cookie.platzi.com` para limitar a un subdominio específico. - `localhost` cuando trabajas en desarrollo local. Esto te permite separar cookies entre diferentes secciones de un sitio o evitar que se compartan donde no deben. ## Qué hacen las banderas secure y HttpOnly Estos dos parámetros son banderas booleanas que controlan la seguridad de la cookie y muchas veces se subestiman. *Secure* en `true` significa que la cookie solo se enviará si el sitio usa HTTPS, es decir, si tiene un certificado SSL válido [06:40]. Como `localhost` no tiene SSL por defecto, en desarrollo local lo dejas en `false`. *HttpOnly* en `true` impide que JavaScript del lado del cliente lea la cookie. Esto es fundamental para cookies con información sensible, como tokens de sesión, porque protege contra ataques tipo XSS [07:00]. > **¿Cuándo debo usar HttpOnly en true?** Siempre que la cookie contenga información sensible que no necesite ser leída desde el front-end, como identificadores de sesión o tokens de autenticación. Si pones *HttpOnly* en `false`, lenguajes como JavaScript pueden acceder al contenido de la cookie con `document.cookie`, lo cual abre puertas a vulnerabilidades. ## Cómo verifico que una cookie funciona correctamente Una forma práctica de inspeccionar tus cookies es usar `var_dump($_COOKIE)` en PHP, que imprime el arreglo con todas las cookies disponibles para ese path y dominio. También puedes abrir las herramientas de desarrollador del navegador, ir a la pestaña de *Application* o *Storage*, y revisar la sección de Cookies. Ahí ves nombre, valor, dominio, path, expiración y banderas activas. Una prueba útil: crea una cookie con path `/configuracion`, luego navega a la raíz del sitio y haz `var_dump($_COOKIE)`. Verás que esa cookie no aparece. Pero si entras a `/configuracion/admin`, sí aparece, porque el path se hereda hacia las subrutas [12:15]. Entender estos parámetros te da control real sobre el comportamiento de las cookies en tu aplicación. ¿Has tenido algún problema con cookies que aparecen donde no deberían? Cuéntame en los comentarios cómo lo resolviste.