PHP – Session – TimeOut
Función que comprueba si la sessión de un usuario está caducada después de un número determinado de minutos sin actividad, y si esta caducada, la destruye y elimina todos los valores de la sesión.
Para detectar los minutos de expiración, guardamos la fecha y hora en un campo de la sesión.
Cada vez que hay una recarga, se actualiza la fecha y hora guardada,
/**
* Class HelperSession
*/
abstract class HelperSession
{
/**
* Comprobar si la sessión esta caducada.
* Si despues de N minutos, no ha habido una recarga,
* se destruye la sesión.
* Cada recarga de sessión se actualiza el tiempo.
*/
public static function isTimeOut(): void
{
/* Comprobar que el usuario esta autenticado */
$minutosExpiracion = 30;
// Sólo si hay caducidad y esta logeado
if ($minutosExpiracion > 0) {
// Comprobar también que haya un usaurio logeado
$dtUltimaAccion = HelperSession::getValue('_ULTIMA_ACCION_');
/* Existe control de tiempo */
if (!empty($dtUltimaAccion)) {
// Tiempo de inactividad
$segundos_inactivo = time() - $dtUltimaAccion;
// Segundos de timeout
$expirar_despues_de = $minutosExpiracion * 60;
if ($segundos_inactivo >= $expirar_despues_de) {
// Sesión caducada
HelperSession::destroy();
// redireccionar a otra página
die();
}
}
HelperSession::setValue('_ULTIMA_ACCION_', time());
}
}
}
Funciones relacionadas:
- HelperSession::setValue: Guardar un valor en la variable supeglobal de sesión $_SESSION
- HelperSession::getValue: Obtener un valor u objeto del array de session $_SESSION
- HelperSession::destroy: Destruir la sessión $_SESSION y eliminar todos su valores
