jairogarcíarincón

Headers, Cookies y Sesiones


30.5K

Introducción



Existen 3 funcionalidades básicas que solemos encontrarnos en un proyecto PHP, como son el uso de headers HTTP para redirección, compresión y gestión de la caché, el uso de cookies y el uso de sesiones.

Cualquier transmisión de información digital en general, y una página web en particular, incluye una serie de datos de cabecera o headers que proporcionan información acerca de lo que nos vamos a encontrar en la información posterior.

SI bien PHP y el servidor web se van a encargar de gestionar dichos headers de manera transparente, en ocasiones nos interesará poder manipualrlos para adaptarlos a nuestras necesidades.

Es un proceso sencillo, cuyas únicas particularidades son proporcionar un tipo de header aceptado y bien formado, y hacerlo siempre ANTES de cualquier otra salida, ni siquiera espacios en blanco.

Headers HTTP



El uso más común de header que nos vamos a encontrar es la redirección a otra página:



Por ejemplo, el uso de este tipo de header evita los molestos mensajes de los navegadores acerca de volver a enviar un formulario cuando pulsamos el botón de volver atrás y recargar.

Otros usos para header podrían ser la gestión de la compresión de la página, si bien esto es recomendable realizarlo desde el archivo php.ini de forma que afecte a todo el servidor, y la gestión de la caché, que nos permite indicar al navegador que queremos que almacene la información de nuestro sitio web solo durante un tiempo determinado; 2 ejemplos:



Cookies



Las cookies permiten que nuestras aplicaciones almacenen una pequeña cantidad de datos en formato texto (en torno a 5kB) en el cliente web.

Las utilidades para esto son varias: desde almacenar el estado de la sesión, un carrito de la compra, publicidad, preferencias de configuración de la página, etc. En general, nada susceptible de ser o contener datos confidenciales o privados y podemos usar tanto datos de texto como escalares que posteriormente se conviertan en arrays al recuperarse.

Para almacenar una cookie a través de nuestro script PHP, lo único que debemos hacer es, mediante el método setcookie() indicar su nombre, clave o key, su valor o value, y su tiempo de vida o expiration date en segundos.

Para recuperar una cookie, utilizaremos el array superglobal $_COOKIE de manera simialr a cómo hacíamos con GET y POST.

Para borrar una cookie, debemos utilizar el método setcookie() de nuevo, indicando en este caso el nombre de la cookie con un valor vacío y un tiempo de vida negativo.



Sesiones



El protocolo HTTP por defecto carece de estado, por lo que el servidor no sabe si dos solicitudes diferentes provienen del mismo usuario. Para resolver esto, debemos utilizar sesiones.

Para iniciar una sesión, podemos configurar el archivo php.ini para que por defecto inicie una nueva sesión en cada petición, o llamar explícitamente al método session_start() al principio del script y antes de cualquier otra cosa.

De este modo, podremos recuperar los datos de sesión mediante el array superglobal $_SESSION.

Además y al contrario que en el caso de las cookies, los datos de sesión se almacenan en el servidor, de modo que nunca serán accesibles para el cliente.

Por defecto, la sesión se almacena hasta que se cierra el navegador del cliente, si bien es posible destruirla completamente mediante la instrucción session_destroy() o borrar una variable de sesión mediante unset() o establecer una duración para la misma.



Ejercicios propuestos



  • Accede a la página web http://www.vienaonline.com
  • Busca mediante el inspector una cookie llamada alerta_cookies y comprueba su valor.
  • Recarga la página ¿notas alguna diferencia?
  • Borra la cookie alerta_cookies y recarga la página ¿notas alguna diferencia?
  • Añade 2 productos cualquiera a la cesta
  • Detecta dos cookies recién creadas relativas a la cesta
  • Borra estas cookies y recarga la página ¿notas alguna diferencia?
  • Genera un script con una cookie llamada micookie y con el texto Hola, soy tu cookie amiga por 1 día que dure exactamente 1 día, de modo que al arrancar el script se cree y te diga que recargues la página y que al recargar o si cierras el navegador y lo vuelves a abrir te diga que ya existe.
  • Añade un formulario sencillo que permita borrar la cookie y recargar la página.
  • Genera un formulario sencillo que recoja tu nombre, lo almacene en sesión y, al abrir otro archivo php mediante un enlace, muestre tu nombre recuperando dicha variable.
  • Genera un número aleatorio de 10 dígitos y, mediante un formulario que solo admita un número del 0 al 9 cada vez, desarrolla la lógica necesaria para que se vaya adivinando (y mostrando) el número. Debes llevar además la cuenta de los errores cometidos (dígitos no incluidos en el número aleatorio)


Publicado el 05 de Febrero de 2025

phpvariablesbuclesarrays