Hola Amigos, Necesito Saber El Tiempo Que Lleva Una Persona Inactiva En Mi Pagina, O Sea Que Esta En El Sitio Pero Sin Hacer Nada....
Espero Me Puedan Ayudar
| |||
Re: Tiempo De Inactividad Buenas amigos: Aqui les tengo la repsuesta de como solucionar el problema del tiempo de inactividad. Si no entienden pueden escribirme a [email protected].. Esto me lo mandaron, no se de donde es pero me resulto muy bueno y quiero compartirlo con los amigos de forosdelweb... Slds. Cómo cerrar una sesión autenticada correctamente, por inactividad o por cierre del navegador por parte del usuario. Veremos como cerrar la sesión 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 sesión por inactividad en PHP: módulo 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 algún momento: ¿Cómo caducar una sesión en PHP? Ahora veremos que tan sencillo es. Solo tendremos que: Crear una nueva sesión que guarde una fecha y hora Comprobar en nuestra capa de seguridad el tiempo transcurrido entre la sesión guardada y la hora actual Actualizar la sesión o destruirla según corresponda Lo primero que debemos hacer entonces, es crear la nueva sesión 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 contraseña es váildo if ($_POST["usuario"]=="miguel" && $_POST["contrasena"]=="qwerty"){ //usuario y contraseña válidos session_name("loginUsuario"); //asigno un nombre a la sesión para poder guardar diferentes datos session_start(); // inicio la sesión $_SESSION["autentificado"]= "SI"; //defino la sesión que demuestra que el usuario está autorizado $_SESSION["ultimoAcceso"]= date("Y-n-j H:i:s"); //defino la fecha y hora de inicio de sesión 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 sesión por inactividad en PHP: módulo 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 cálculo 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 sesión (representado como "x"): si (tiempo transcurrido >= x), actúo en consecuencia a lo hallado Para efectuar estos cálculos utilizaremos como unidad de tiempo el segundo. En nuestro ejemplo, caducaremos la sesión, transcurridos 10 minutos de inactividad (donde: 10*60 = 600 segundos). Para efectuar estos cálculos y tomar como unidad de medida el segundo, será necesario convertir las fechas a segundos. Para ello, utilizaremos la función strtotime. Por lo tanto, calcularemos el tiempo transcurrido (tiempo transcurrido = (hora actual - fecha guardada)) de la siguiente manera: <? //iniciamos la sesión session_name("loginUsuario"); session_start(); //antes de hacer los cálculos, compruebo que el usuario está logueado //utilizamos el mismo script que antes if ($_SESSION["autentificado"] != "SI") { //si no está logueado lo envío a la página de autentificación 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 más session_destroy(); // destruyo la sesión header("Location: index.php"); //envío al usuario a la pag. de autenticación //sino, actualizo la fecha de la sesión }else { $_SESSION["ultimoAcceso"] = $ahora; } } ?> |