Page 178 - Programador-PHP
P. 178

Programación Procedural de Aplicaciones Web de baja complejidad
        PHP Experto – Tomo I                                                                                                                                                  Eugenia Bahit


          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á




                                             178
   173   174   175   176   177   178   179   180   181   182   183