
1 minute read
Funciones para verificación y validación de sesiones
Esta función, solo se encargará de destruir la sesión del usuario tal cual se indicó cuando hablamos sobre como desconectar a un usuario del sistema, y finalmente, redirigirá al usuario al formulario de login, haciendo uso de una función que crearemos más adelante.
# Destruir sesión function logout() { unset($_SESSION); $datos_cookie = session_get_cookie_params(); setcookie(session_name(), NULL, time()-999999, $datos_cookie["path"], $datos_cookie["domain"], $datos_cookie["secure"], $datos_cookie["httponly"]); goto_page(PAGINA_LOGIN); }
Advertisement
Funciones para verificación y validación de sesiones
Primero, me encargaré de obtener los datos del último acceso del usuario. Para eso, voy a recurrir a la variable de sesión llamada login_date:
/* Primero verifico que la variable de sesión login_date, existe. De ser así, obtengo su valor y lo retorno. Si no existe, retornará el entero 0 */ function obtener_ultimo_acceso() { $ultimo_acceso = 0; if(isset($_SESSION['login_date'])) { $ultimo_acceso = $_SESSION['login_date']; } return $ultimo_acceso; }
El siguiente paso, será verificar el tiempo de inactividad de la sesión y actualizarlo:
/* Esta función, retornará el estado de la sesión: sesión inactiva, retornará False mientras que sesión activa, retornará True. Al mismo tiempo, se encarga de actualizar la variable de sesión login_date, cuando la sesión se encuentre activa
function sesion_activa() { $estado_activo = False; $ultimo_acceso = obtener_ultimo_acceso(); /* Establezco como límite máximo de inactividad (para mantener la sesión activa), media hora (o sea, 1800 segundos). De esta manera, sumando 1800 segundos a login_date, estoy definiendo cual es la marca de tiempo más alta, que puedo permitir al usuario para mantenerle su sesión activa. */ $limite_ultimo_acceso = $ultimo_acceso + 1800;
/* Aquí realizo la comparación. Si el último acceso del usuario, más media hora de gracia que le otorgo para mantenerle activa la sesión, es mayor a la marca de hora actual, significa entonces que su sesión puede seguir activa. Entonces, le actualizo la marca de tiempo, renovándole la sesión */ if($limite_ultimo_acceso > time()) { $estado_activo = True; # actualizo la marca de tiempo renovando la sesión $_SESSION['login_date'] = time(); } return $estado_activo; }
Finalmente, crearemos una pequeña función, que llame a la anterior, y en caso de recibir como resultado que la sesión está inactiva, desconectará al usuario del sistema.
# Verificar sesión function validar_sesion() { if(!sesion_activa()) { logout(); } }