Pregunta

Quiero que mis usuarios pueden registrar de forma automática después de X minutos de inactividad. También quiero tener todas las sesiones destruidas.

¿Cómo puede hacerse esto? ¿Cómo puedo comprobar por inactividad a continuación, realizar una función para registrar a cabo ???

¿Fue útil?

Solución

También puede hacer:

$_SESSION['loginTime'] = time();

En cada página, y cuando el usuario está tratando de navegar y que ha estado inactiva durante veinte minutos se le puede salir de esta manera:

if($_SESSION['loginTime'] < time()+20*60){ logout(); }

Otros consejos

I Michiels cansados ??acercan y no hay donde consiguieron. En la sierra que la investigación que la sentencia if simplemente añade el período de expiración hasta el momento actual para la declaración nunca se disparó.

Esta es mi versión alterada:

establecer este al iniciar la sesión de usuario o la carga de una página segura:

 $_SESSION['expire'] = time()+1*60;

Y usar esto para ver si el tiempo de vencimiento es menor que el tiempo actual (es decir que estamos más allá del límite de caducidad):

if(time() > $_SESSION['expire']){
 $user -> logout();
}

Se puede configurar el tiempo de sesión a cabo límite como:

ini_set('session.gc_maxlifetime',30);

Aquí es la posible solución para usted.

En función de la velocidad de su servidor es y la cantidad de usuarios que tiene, puede tener que enviar una petición al servidor cada vez que un usuario hace nada (navega, hace clic en un botón, lo que sea). A partir de esta solicitud, actualizar una tabla de SQL con su última vez la actividad.

Tener una carrera de trabajo cron través de la mesa en algún intervalo regular y eliminar las sesiones de los usuarios que han estado inactivas por lo que su umbral va a ser.

Si el servidor es lento o si tiene una gran cantidad de usuarios, puede hacer que este script se ejecute con poca frecuencia.

mecanismo de la sesión de PHP ya tiene un recolector de basura basado en el tiempo de espera de inactividad. Usted no tiene que preocuparse.

Se puede configurar la última vez activo por $ _SESSION [ 'lastactive'] = tiempo () y actualizarlo cada vez que navega por el usuario a una nueva página. A continuación, puede tener un tiempo de espera de la función () en cada página.

function timeout()    
{
    $maxtime = 60*2; // Here , maxtime has been set to 2 minutes

if(isset($_SESSION['lastactive']) and (time() - $_SESSION['lastactive'] > $maxtime )) // subtracting current time from lastactive time and seeing if it exceeded timeout limit.
{
    signout(); //logging out        
}

if(isset($_SESSION['lastactive']) and (time() - $_SESSION['lastactive'] < $maxtime )) // subtracting current time from lastactive time and seeing if it exceeded timeout limit.
{   
    return 1; // timeout limit not exceeded     
}   
else
{
    if(!isset($_SESSION['lastactive']))
    {

        $_SESSION['lastactive'] = time(); //if lastactive is not set
    }
}
}

Uso unset($_SESSION['NAME']); o session_destroy();. También podría cambiar el valor de la sesión.

Para hacer esto en un momento determinado, se tendría que establecer una marca de tiempo en la base de datos y, a continuación, llamar para comprobar si está más allá de X minutos. Mira el enlace en la parte inferior.

Me había personalmente sólo tiene que utilizar las cookies y hacer que se vencen en un momento determinado, pero lo que flota su barco.

Si tiempo actual es más de 30 segundos últimos tiempo X (de la base de datos)


$ (Document) ready (function ()
{
    setTimeout (function () { LLAMADA logout.php VIA AJAX }, 720 000);

});

720000 medios 12 minutos (para propósitos ilustrativos)
poner este script en el encabezado y establecer ur propio tiempo de inactividad
 se puede establecer a qué hora u quiere, será un trabajo como si se establece 5 minutos y luego cuando u regístrese para sistema, entonces se inicia el recuento durante 5 min. pero si u clic en cualquiera de los módulos de este script se volverá a cargar, ya que cuando vueltas de página a continuación cabecera es también vuelven a cargar cuando la escritura es de recarga entonces se inicia el recuento de 0 (inicial), pero si u no puede acceder al sistema en 5 minutos. a continuación, se carga el logout.php y el sistema hará registros de salida

así es como lo hago:

//set timeout period in seconds
$idleTime= 60*2;
//check to see if $_SESSION['timeout'] is set
if(isset($_SESSION['timeout'])){
$session_life = time() - $_SESSION['timeout'];
if($session_life > $idleTime){
// your logout code here*
     }
}
$_SESSION['timeout'] = time();

Esto hace $ _SESSION [ 'tiempo de espera'] ajustes por defecto cada vez que una página se vuelve a cargar, tengo esto en un archivo de inclusión en la cabecera de cada página submarino, que funciona para mí al menos.

La forma más sencilla es la siguiente. Enviar al usuario a una página de cierre de sesión si no están activando ciertos elementos en su sitio web

$secondsWait = 300; // these are seconds so it is 300s=5minutes
header("refresh:$secondsWait; logout.php");

contenidos para la redirección ... logout.php, destruir las sesiones y tal vez también enviar un mensaje alertando al usuario por la que se registraron a cabo

<?php
session_start();
session_unset();
session_destroy();  
?>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top