Saltar al contenido

Función setcookie() de PHP: Todo lo que necesitas saber

Como desarrollador de PHP, es posible que necesites establecer cookies para almacenar información en el lado del cliente. La función setcookie() es una función integrada de PHP que se encarga de esto. En este artículo, cubriremos su sintaxis moderna, su uso y cómo leer o eliminar cookies.

¿Qué es la función setcookie()?

La función setcookie() es una función integrada de PHP que te permite establecer una cookie en el lado del cliente.

Cómo usar la función setcookie()

Usar la función setcookie() es sencillo. La sintaxis de opciones basada en arreglos se introdujo en PHP 7.3. En PHP 8.1, la sintaxis posicional heredada de siete parámetros fue marcada como obsoleta. Aquí está la sintaxis moderna:

La sintaxis de PHP de la función setcookie()

php
setcookie($name, $value, $options);

El parámetro $options es un arreglo asociativo que acepta las siguientes claves:

  • expires: La fecha de expiración de la cookie (marca de tiempo Unix).
  • path: La ruta en el servidor en la que la cookie estará disponible.
  • domain: El dominio en el que la cookie estará disponible.
  • secure: Indica si la cookie debe transmitirse solo a través de HTTPS.
  • httponly: Indica si la cookie solo debe ser accesible a través de HTTP.
  • samesite: Restringe la cookie a solicitudes del mismo sitio. Acepta 'Strict', 'Lax', o 'None'.

A continuación, se muestra un ejemplo de cómo usar la función setcookie() para establecer una cookie:

¿Cómo usar la función setcookie()?

php
<?php

$options = [
    'expires'  => time() + (86400 * 30), // 30 días
    'path'     => '/',
    'domain'   => '.example.com',
    'secure'   => true,
    'httponly' => true,
    'samesite' => 'Lax'
];
setcookie('username', 'john', $options);

En este ejemplo, usamos la función setcookie() para establecer una cookie llamada username con el valor john. También especificamos la fecha de expiración como 30 días a partir del momento actual, la ruta en el servidor como /, el dominio como .example.com, y establecemos las banderas secure, httponly y samesite para garantizar que la cookie solo se transmita a través de HTTPS, no sea accesible mediante scripts del lado del cliente y esté restringida a solicitudes del mismo sitio, respectivamente.

Leer cookies

Las cookies establecidas con setcookie() están disponibles automáticamente en el arreglo superglobal $_COOKIE en las solicitudes posteriores de la página. Puedes verificar su existencia y leer sus valores de la siguiente manera:

php
if (isset($_COOKIE['username'])) {
    echo "Bienvenido, " . htmlspecialchars($_COOKIE['username']);
}

Eliminar cookies

Para eliminar una cookie, debes establecer su fecha de expiración en una marca de tiempo pasada. El valor puede dejarse vacío o establecerse en null.

php
setcookie('username', '', [
    'expires' => time() - 3600,
    'path'    => '/',
]);

Notas importantes

  • Valor de retorno: setcookie() devuelve true en caso de éxito y false en caso de error (incluido cuando los encabezados ya se han enviado).
  • Encabezados ya enviados: Las cookies deben establecerse antes de enviar cualquier salida al navegador (incluyendo HTML, espacios en blanco o echo). De lo contrario, PHP generará una advertencia de "Encabezados ya enviados".
  • Codificación automática: setcookie() codifica automáticamente los valores de las cookies en formato URL, por lo que la codificación manual generalmente no es necesaria.

Conclusión

La función setcookie() es una herramienta útil para establecer cookies en tu aplicación web PHP. Al comprender la sintaxis moderna y el uso de la función, podrás gestionar fácilmente los datos del lado del cliente. Esperamos que este artículo haya sido informativo y útil para entender cómo establecer, leer y eliminar cookies en PHP.

Práctica

What factors can affect a setcookie function in PHP?

¿Te resulta útil?

Vista previa dual-run — compárala con las rutas Symfony en producción.