Foros del Web » Programando para Internet » PHP »

Como expirar un session por inactividad

Estas en el tema de Como expirar un session por inactividad en el foro de PHP en Foros del Web. Hola a todos. Como puedo hacer para que una session expire o se destruya despues de un determinado tiempo en que el usuario no haga ...
  #1 (permalink)  
Antiguo 21/02/2013, 20:08
(Desactivado)
 
Fecha de Ingreso: octubre-2011
Ubicación: Medellin
Mensajes: 19
Antigüedad: 12 años, 6 meses
Puntos: 0
Pregunta Como expirar un session por inactividad

Hola a todos.
Como puedo hacer para que una session expire o se destruya despues de un determinado tiempo en que el usuario no haga nada en la web?, es decir, que si esta haciendo cosas en la web, la session no expira nunca, pero si deja de hacer acciones en la web entonces si me expire la session, hacer que la session caduque por un tiempo haga o no haga algo el usuario ya se como hacerlo, pero como saber si un usuario esta inactivo sin mover nada en el pc para cerrarle la sesion?.
Alguien sabe como hacerlo?
Muchas gracias por su ayuda.
  #2 (permalink)  
Antiguo 21/02/2013, 20:30
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Como expirar un session por inactividad

Por el lado del servidor:
Mantén en la sesión un timestamp.Si cuando llega una request, ha pasado mas de x segundos desde el timestamp, redireccionas a la página de "sesion caducada".Si no, actualiza el timestamp.
Por el lado del cliente:
En el onload, pon un timer que, en x segundos, carga la página de sesión caducada.

El control por el lado del servidor es obligatorio.El control por el lado del cliente, opcional.
  #3 (permalink)  
Antiguo 21/02/2013, 21:23
ruben_chirinos_1985
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Como expirar un session por inactividad

Hola como estas si quieres me envias un mensaje a este correo y te paso el archivo que tengo para eso q pide, que en tu sistema se cierre la sesion por inactividad, yo realice una consulta a la bd de la tabla configuracion que es donde tengo un campo q se llama tiempo de cierre de sesion mi correo [email protected]
  #4 (permalink)  
Antiguo 21/02/2013, 22:56
 
Fecha de Ingreso: mayo-2012
Ubicación: República Dominicana
Mensajes: 37
Antigüedad: 11 años, 10 meses
Puntos: 4
Respuesta: Como expirar un session por inactividad

Bueno, puedes hacer algo como esto ;)

Código PHP:
<?php
$time 
3600// una hora en mili-segundos

// verificamos si existe la sesión
// el nombre "session_name" es como ejemplo
if(isset($_SESSION["session_name"]))
{
      
// verificamos si existe la sesión que se encarga del tiempo
      // si existe, y el tiempo es mayor que una hora, expiramos la sesión 
      
if(isset($_SESSION["expire"]) && time() > $_SESSION["expire"] + $time)
      {
           unset(
$_SESSION["expire"]);
           unset(
$_SESSION["session_name"]);
      }
      
// si no existe la creamos
      
else
      {
           
$_SESSION["expire"] = time();
       }
}
?>
Espero ayudar, saludos.
  #5 (permalink)  
Antiguo 22/02/2013, 09:22
(Desactivado)
 
Fecha de Ingreso: octubre-2011
Ubicación: Medellin
Mensajes: 19
Antigüedad: 12 años, 6 meses
Puntos: 0
Mensaje Respuesta: Como expirar un session por inactividad

Gracias a todos por sus respuestas y ayudas, pero lo que me han dicho es algo que yo se hacer, lo que necesito es que el usuario sea sacado del sistema sin que tenga que hacer ninguna operación, por ejemplo, si son 5 minutos el tiempo de expiración de una sesion, entonces que a los 5 minutos de inactividad, el sistema destruya la sesion y mande al usuario a la pagina de login igual como pasa en los sistemas web de los bancos, lo que ustedes me plantean si sirve pero el usuario debe hacer una operación en la web para avisarle que la session expiro porque si no hace nada entonces queda siempre mostrando la misma pagina y lo que necesito es que sea automatico, si alguien me puede dar mas pistas o ayudas, estaré muy agradecido.
  #6 (permalink)  
Antiguo 22/02/2013, 09:28
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Como expirar un session por inactividad

...Lo que necesitas es leer mejor los mensajes....Vuelve a leer mi respuesta..sobre todo la parte javascript..
  #7 (permalink)  
Antiguo 22/02/2013, 10:54
(Desactivado)
 
Fecha de Ingreso: octubre-2011
Ubicación: Medellin
Mensajes: 19
Antigüedad: 12 años, 6 meses
Puntos: 0
Mensaje Respuesta: Como expirar un session por inactividad

Gracias dashtrash por tu aclaración, pero no entiendo para que poner que una pagina se recargue cada determinado numero de tiempo, si necesito que se recargue pero cuando ya la session este expirada, que es lo que necesito, hacer algo apenas la sesion expire y lo que me indicas en javascript es hacer algo cada determinado tiempo, seria como un ciclo infinito, podria ser algo efectivo pero no creo que sea un buen apunte de programación eso de estar recargando.

Gracias por tu ayuda.
  #8 (permalink)  
Antiguo 22/02/2013, 11:43
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Como expirar un session por inactividad

Quien dice que se recargue? Ciclo infinito?
Si en X segundos se llama al callback javascript, ha hecho timeout.
A partir de ahi:
- Se le muestra una ventana en js, que le diga "sesion desconectada", y por ajax, se carga "disconnect.php" , que destruye la sesion.Luego, por js, redireccionas a index.
- Se redirecciona la pagina a disconnect.php, que destruye la sesion, y redirecciona a index.php

Donde está el ciclo infinito?
  #9 (permalink)  
Antiguo 22/02/2013, 13:53
(Desactivado)
 
Fecha de Ingreso: octubre-2011
Ubicación: Medellin
Mensajes: 19
Antigüedad: 12 años, 6 meses
Puntos: 0
Mensaje Respuesta: Como expirar un session por inactividad

aaaaaaaaa bueno, es que ahora si explicaste mucho mas detalladamente la idea dashtrash, muchas gracias, ahora si entendí mucho mejor lo que querías dar a entender, ahora intentare ponerla en practica junto con el script php que me envió ruben_chirinos_1985 a quien también le agradezco enormemente su ayuda, igual si alguien tiene mas ideas serán bien recibidas también, mientras mas información se recopile mas se agranda el conocimiento, ahora si creo que podre lograr el objetivo de hacer expirar la session de la forma que tenia pensado, publicare aquí el método que utilice para que les pueda servir a otros.
Gracias a todos.

Etiquetas: session, session_start
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 20:29.