1 minute read

Funciones para verificación y validación de sesiones

Next Article
Diseño de la API

Diseño de la API

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(); } }

Esta función, será la que invocaremos desde todas y cada una de las páginas, a las cuales querramos restringir su acceso.

This article is from: