Sie sind auf Seite 1von 3

Diferentes formas de cerrar sesin en PHP

Diferentes formas de cerrar sesin en PHP


Cmo cerrar sesin por inactividad o por cierre del navegador por parte del usuario.

Veremos como cerrar la sesin del usuario cuando:


El tiempo de inactividad del usuario supere "x" cantidad de tiempo (segundos, minutos, etc...). El usuario cierre el navegador y abandone por completo nuestro sitio.

Cierre de sesin por inactividad en PHP: mdulo de control de datos Algo que puede parecer muy obvio para unos y muy complejo para otros, pero que innegablemente muchos de nosotros nos hemos preguntado en algn momento: Cmo caducar una sesin en PHP? Ahora veremos que tan sencillo es. Solo tendremos que: Crear una nueva sesin que guarde una fecha y hora Comprobar en nuestra capa de seguridad el tiempo transcurrido entre la sesin guardada y la hora actual

Actualizar la sesin o destruirla segn corresponda

Lo primero que debemos hacer entonces, es crear la nueva sesin y asignarle como valor, la hora actual. Esto lo haremos en el momento que el usuario ingresa al sistema con sus datos de acceso. <? //vemos si el usuario y contrasea es vildo if ($_POST["usuario"]=="miguel" && $_POST["contrasena"]=="qwerty"){ //usuario y contrasea vlidos session_name("loginUsuario"); //asigno un nombre a la sesin para poder guardar diferentes datos session_start(); // inicio la sesin $_SESSION["autentificado"]= "SI"; //defino la sesin que demuestra que el usuario est autorizado $_SESSION["ultimoAcceso"]= date("Y-n-j H:i:s"); //defino la fecha y hora de inicio de sesin en formato aaaa-mm-dd hh:mm:ss header ("Location: aplicacion.php"); }else { //si no existe le mando otra vez a la portada header("Location: index.php?errorusuario=si"); } ?>

Cierre de sesin por inactividad en PHP: mdulo de seguridad El segundo paso, ser comprobar el tiempo transcurrido entre la fecha guardada y la hora actual en nuestra capa de seguridad y actuar en consecuencia. Para hacerlo, tendremos que realizar un clculo muy sencillo: tiempo transcurrido = (hora actual - fecha guardada) Y luego, restar saber si el tiempo transcurrido es mayor, menor o igual que el tiempo de caducidad de la sesin (representado como "x"): si (tiempo transcurrido >= x), acto en consecuencia a lo hallado Para efectuar estos clculos utilizaremos como unidad de tiempo el segundo. En nuestro ejemplo, caducaremos la sesin, transcurridos 10 minutos de inactividad (donde: 10*60 = 600 segundos). Para efectuar estos clculos y tomar como unidad de medida el segundo, ser necesario convertir las fechas a segundos. Para ello, utilizaremos la funcin strtotime. Por lo tanto, calcularemos el tiempo transcurrido (tiempo transcurrido = (hora actual - fecha guardada)) de la siguiente manera: <? //iniciamos la sesin session_name("loginUsuario"); session_start(); //antes de hacer los clculos, compruebo que el usuario est logueado //utilizamos el mismo script que antes if ($_SESSION["autentificado"] != "SI") { //si no est logueado lo envo a la pgina de autentificacin header("Location: index.php"); } else { //sino, calculamos el tiempo transcurrido $fechaGuardada = $_SESSION["ultimoAcceso"]; $ahora = date("Y-n-j H:i:s"); $tiempo_transcurrido = (strtotime($ahora)-strtotime($fechaGuardada)); //comparamos el tiempo transcurrido if($tiempo_transcurrido >= 600) { //si pasaron 10 minutos o ms session_destroy(); // destruyo la sesin header("Location: index.php"); //envo al usuario a la pag. de autenticacin //sino, actualizo la fecha de la sesin }else { $_SESSION["ultimoAcceso"] = $ahora; }

} ?>

Das könnte Ihnen auch gefallen