Foros del Web » Programando para Internet » PHP »

Refrescar y cerrar sesion por inactividad

Estas en el tema de Refrescar y cerrar sesion por inactividad en el foro de PHP en Foros del Web. Saludos Tengo un script que cierra sesion por la inactividad de un minuto, pero necesito que la pagina se refresque automaticamente en ese minuto y ...
  #1 (permalink)  
Antiguo 04/07/2013, 14:14
 
Fecha de Ingreso: enero-2012
Mensajes: 109
Antigüedad: 12 años, 3 meses
Puntos: 0
Refrescar y cerrar sesion por inactividad

Saludos

Tengo un script que cierra sesion por la inactividad de un minuto, pero necesito que la pagina se refresque automaticamente en ese minuto y se redireccione a logout.php

Código PHP:
$timeout 1;
    
$logout_redirect_url "logout.php"

    
$timeout $timeout 60
    if (isset(
$_SESSION['start_time'])) {
        
$elapsed_time time() - $_SESSION['start_time'];
        if (
$elapsed_time >= $timeout) {
            
header("Location: $logout_redirect_url");
        }
    }
    
$_SESSION['start_time'] = time(); 
El script cierra sesion al minuto pero haciendo clic en F5, necesito que lo haga automaticamente cuando exista un minuto de inactividad.
  #2 (permalink)  
Antiguo 04/07/2013, 14:47
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Refrescar y cerrar sesion por inactividad

Eso debes hacerlo con Javascript.

Cada vez que navegues en alguna página debes calcular el tiempo restante y generer setTimeOut con JS para que ejecute la accíon, por ejemplo:

Código HTML:
Ver original
  1. <script language="javascript">
  2. <?php
  3. $timeout = 1;
  4.    $logout_redirect_url = "logout.php";  
  5.  
  6.    $timeout = $timeout * 60;  
  7.    if (isset($_SESSION['start_time'])) {
  8.        $elapsed_time = time() - $_SESSION['start_time'];
  9.        $elapsed_time*=1000; // Suponiendo que el tiempo lo tienes en segundos debes multiplicar por 1000 ya que JS funciona con milisegundos
  10.        echo "setTimeOut(location.href('$logout_redirect_url'),$elapsed_time);"
  11.    }
  12.    $_SESSION['start_time'] = time();
  13. ?>

Espero no haberme equivocado en anda, no lo he probado, pero es algo así

setTimeOut realiza una accion del lado cliente tras cierta cantidad de tiempo.

location.href define una url tambien para el cliente.

Ambas cosas puedes darselas a JS usando PHP como he puesto en el ejemplo :)
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #3 (permalink)  
Antiguo 04/07/2013, 20:51
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Respuesta: Refrescar y cerrar sesion por inactividad

Holas,

Es mejor asi como lo menciona @stramin, dale el trabajo desde PHP al cliente (Javascript) para que se encargue el de realizar el conteo cada cierto tiempo de inactividad.

Saludos,
__________________
.: Gildus :.
  #4 (permalink)  
Antiguo 04/07/2013, 21:09
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Refrescar y cerrar sesion por inactividad

Si deshabilitan JS .... PHP deberia saberlo imagino

Podrian hacer que JS cree un campo oculto que PHP lee o bien enviarse una variable por POST... de alguna forma avisar a PHP que JS fue deshabilitado


PD: el problema de JS es que todos los controles que implementes ahi debes tenerlo tambien del lado del servidor
__________________
Salu2!
  #5 (permalink)  
Antiguo 04/07/2013, 21:34
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Respuesta: Refrescar y cerrar sesion por inactividad

Exacto,

Lo de controlar si tienes activo el JS, es lo primordial, sino no funciona tu aplicacion o no?.

Yo mas me iria a evitar llamar a cada rato al servidor cada cierto tiempo, cuando hasta cierta parte (en teoria) puedes controlarlo en el cliente. Y bueno opino tambien lo mismo que mencionan.

Saludos,
__________________
.: Gildus :.

Etiquetas: cerrar, inactividad, refrescar
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 17:20.