Cómo hacer caducar una sesión de usuario con un time out

Código PHP

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: