Foros del Web » Programando para Internet » PHP »

Tiempo De Inactividad

Estas en el tema de Tiempo De Inactividad en el foro de PHP en Foros del Web. 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.... ...
  #1 (permalink)  
Antiguo 28/08/2007, 14:37
 
Fecha de Ingreso: noviembre-2002
Mensajes: 147
Antigüedad: 21 años, 5 meses
Puntos: 0
Tiempo De Inactividad

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
  #2 (permalink)  
Antiguo 28/08/2007, 14:37
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Tiempo De Inactividad

Estas contando las sessiones en una base de datos?

Saludos.
  #3 (permalink)  
Antiguo 28/08/2007, 14:55
 
Fecha de Ingreso: noviembre-2002
Mensajes: 147
Antigüedad: 21 años, 5 meses
Puntos: 0
Re: Tiempo De Inactividad

No, no guardo nada en la base de datos...
Tienes idea de como hacerlo?
  #4 (permalink)  
Antiguo 28/08/2007, 15:15
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Tiempo De Inactividad

Necesitarias entonces en dado caso guardar los accesos en la base de datos para que calcules el tiempo desde el ultimo request.

Saludos.
  #5 (permalink)  
Antiguo 03/09/2007, 08:06
 
Fecha de Ingreso: noviembre-2002
Mensajes: 147
Antigüedad: 21 años, 5 meses
Puntos: 0
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;
}
}
?>
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:22.