12. Cookies

Una Cookie, o Cookie permanente, es una variable que se guarda en el navegador con un periodo de vida. Lo sabroso de esta funcionalidad es si el usuario abandona nuestro sitio y vuelve más adelante podremos recuperar la información. A no ser que haya borrado las Cookies de nuestra web.

A pesar de la mala fama que tienen son útiles y seguras para los programadores, otra cosa es que exista empresas sin escrúpulos que quieran aprovecharse de sus virtudes. Poseen muchos usos:

  • Guardar tu configuración para mejorar la experiencia (autologin, cambiar idioma que elegiste la primera vez, la última búsqueda que realizaste, evitar mostrar avisos que ya aceptaste...).
  • Usos comerciales (sugerencias personalizadas dependiendo de que buscaste en la última ocasión, guardar tu carrito de compra...)
  • Crear estadisticas.

Crear

Sintaxis tradicional:

setcookie('nombre', 'valor', 'caducidad');
// Caducará en 60 segundos
$caducidad = time() + 60;
setcookie('idioma', 'es', $caducidad);

Sintaxis moderna (PHP 7.3+):

Desde PHP 7.3 podemos usar un array de opciones para una configuración más clara y segura:

setcookie('idioma', 'es', [
    'expires' => time() + 60,
    'path' => '/',
    'domain' => '',
    'secure' => true,      // Solo por HTTPS
    'httponly' => true,    // No accesible desde JavaScript
    'samesite' => 'Strict' // Protección contra CSRF
]);

Opciones de seguridad recomendadas:

  • secure: true: La cookie solo se enviará por conexiones HTTPS. Esencial para producción.
  • httponly: true: Previene que JavaScript acceda a la cookie, protegiendo contra ataques XSS (Cross-Site Scripting).
  • samesite: Protege contra ataques CSRF (Cross-Site Request Forgery):
  • 'Strict': La cookie solo se envía en peticiones del mismo sitio (máxima seguridad).
  • 'Lax': Permite enviar la cookie en navegación normal desde otros sitios (balance entre seguridad y usabilidad).
  • 'None': Permite enviar la cookie en peticiones de terceros (requiere secure: true).

Obtener

echo $_COOKIE['idioma'];
// es

Actualizar

setcookie('idioma', 'fr');
echo $_COOKIE['idioma'];
// fr

Borrar

unset($_COOKIE['idioma']);

Otra forma para borrar una Cookie es caducarla: setcookie('idioma', 'es', time() - 1).

This work is under a Attribution-NonCommercial-NoDerivatives 4.0 International license.

Desafíos de programación atemporales y multiparadigmáticos

Desafíos de programación atemporales y multiparadigmáticos

Te encuentras ante un librillo de actividades, divididas en 2 niveles de dificultad. Te enfrentarás a los casos más comunes que te puedes encontrar en pruebas técnicas o aprender conceptos elementales de programación.

Buy the book

Will you buy me a coffee?

Comments

There are no comments yet.

Visitors in real time

You are alone: 🐱