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:
Ver ejemplo de código
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:
Ver ejemplo de código
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.
Ver ejemplo de código
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.
Ver ejemplo de código
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)