Comunidad de diseño web y desarrollo en internet online

Temporizador

Citar            
MensajeEscrito el 10 Jun 2010 01:55 pm
Hola a Todos
Quisiera Saber si se puede hacer un temporizador de sessiones en php, especificamente lo que necesito es que cuando se haya abierto una session y el usuario este inactivo cierto tiempo se cierre la session y el usuario tenga que volver a digitar sus datos nuevamente.

Me gustaria saber el codigo y en que parte puedo ponerlo.

Agradezco su ayuda

Por ksav_0923

0 de clabLevel



 

msie
Citar            
MensajeEscrito el 11 Jun 2010 01:17 pm
Hola, para realizar eso que planteas podemos hacer lo siguiente (creo que se puede mejorar, pero que sirva como base):
Cuando el usuario (durante su sesion) visita una página guardamos la fecha/hora de visita:
Realizamos el siguiente cálculo:

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:

Código PHP :

<?
session_start();

//antes de hacer los cálculos, compruebo que el usuario está logueado
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;
   }
}
?> 

Por bucle_infinito

Claber

166 de clabLevel

1 tutorial

 

.NET Developer

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.