Home | Clases | Programación en PHP | Headers, Cookies y Sesiones

Headers, Cookies y Sesiones


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:


header("Location: http://jairogarciarincon.com");
exit(); //para evitar que se ejecute más código de forma inesperada


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:


header("Cache-Control: no-cache, must-revalidate");
header("Expires: Thu, 31 May 1984 04:35:00 GMT"); //poniendo una fecha pasada, nos aseguramos de que nunca almacene la página en la caché

$date = gmdate("D, j M Y H:i:s", time() + 2592000); // 30 días desde ahora
header("Expires: " . $data . " UTC");


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.


//Set cookie
setcookie("nombre", "Jairo", time() + 86400); //Almacena la cookie 1 día
setcookie("productos[0]", "Pan", time() + 86400); //Almacena la cookie 1 día
setcookie("productos[1]", "Fruta", time() + 86400); //Almacena la cookie 1 día
setcookie("productos[2]", "Leche", time() + 86400); //Almacena la cookie 1 día

//Get cookie
$nombre = $_COOKIE['nombre']; //Cadena de texto
$productos = $_COOKIE['productos']; //Array

//Delete cookie
setcookie("nombre", "", -1);


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.


//Inicializo sesión
session_start();

//Almaceno datos en sesión
$_SESSION['nombre'] = "Jairo"; //Cadena de texto

//Después de recargar la página y mientras no cierre el navegador, podré acceder a la variable
$nombre = $_SESSION['nombre'];


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 una cookie llamada micookie 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.

Fecha de publicación: 06/09/2019
Asignaturas: desarrollo web en entorno servidor
Temas: php variables bucles arrays
Utilizamos cookies propias y de terceros para mejorar su experiencia en la navegación. Al seguir navegando entendemos que acepta su uso.
Si lo desea, consulte nuestras políticas de privacidad y cookies
ENTENDIDO
[X] Cerrar

Contacta conmigo


[X] Cerrar

Acceso alumnos