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