A la hora de guardar los datos de navegación de un usuario de nuestra web el uso de sesiones se torna esencial. Las sesiones son una forma fácil y práctica de almacenar estos datos del usuario (los almacena en una cookie de sesión que gestionará el propio navegador), de forma individual, para trabajar con ellos.
La idea es simple: cuando llamamos a la función session_start() PHP comprueba si existe un ID de sesión, en caso negativo crea una sesión nueva y en caso afirmativo mantiene los datos de la creada. Con la sesión activa podremos utilizar la variable array superglobal $_SESSION para almacenar los datos que queramos relativos a la navegación. Piensa en el carrito de la compra de cualquier tienda on-line, que va almacenando los items que vas comprando hasta que haces el pago, creo que es el mejor ejemplo de cómo funcionan estas variables.
Vamos a ver un ejemplo donde creamos una sesión y almacenamos la hora de la última conexión y de la última acción:
@session_start(); //iniciamos la sessión if(!isset($_SESSION["first_connection"])){ //comprobamos si existe la variable y si no, inicializamos $_SESSION["first_connection"] = time(); //asignamos a la variable la fecha de creación }else{ $_SESSION["lastAction"] = time(); //sobreecribimos la fecha de la última acción }
Un ejemplo tonto, pero básico.
Para destruir una sesión, por ejemplo al pulsar un botón de logout, usaríamos la función @session_destroy(). Y para acceder al id de la misma la función @session_id() nos lo devolverá. Si queremos cargarnos una variable de la sesión sin destruir la sesión basta con usar la función unset(), más o menos como en el ejemplo que va ahora:
//AHORA QUEREMOS DEJAR DE ALMACENAR LA ÚLTIMA ACCIÓN unset($_SESSION["lastAction"]);
Ni se os curra hacer unset($_SESSION) sin indicar variable para cargároslas todas, esto deshabilitará el registro de las variables del array y os romperá un montón la cabeza.
En fin, como siempre si queréis más ejemplos en la web de PHP podéis explorar sobre el uso de sesiones. Un saludo y que os sea provechoso.