Limit session time

3

I need help to limit the time of inactivity in HTML PHP My code is as follows:

inicio-php<br>
session_start();<br>
if (isset($_SESSION['usuario']))
{<br>
?>
   <p>Aqui va mi codigo HTML</p>
inicio-php<br>
}else{<br>
 echo '<script>location.href = "index.php";</script>';<br>
}<br>
    
asked by Erick Paul Lozada Peñarreta 15.08.2017 в 00:16
source

2 answers

0

I have a code that I use to destroy the session after spending some time. This code is implemented in your global file.

<?php
session_start();

// Máxima duración de sesión activa en hora
define( 'MAX_SESSION_TIEMPO', 3600 * 1 );

// Controla cuando se ha creado y cuando tiempo ha recorrido 
if ( isset( $_SESSION[ 'ULTIMA_ACTIVIDAD' ] ) && 
     ( time() - $_SESSION[ 'ULTIMA_ACTIVIDAD' ] > MAX_SESSION_TIEMPO ) ) {

    // Si ha pasado el tiempo sobre el limite destruye la session
    destruir_session();
}

$_SESSION[ 'ULTIMA_ACTIVIDAD' ] = time();

// Función para destruir y resetear los parámetros de sesión
function destruir_session() {

    $_SESSION = array();
    if ( ini_get( 'session.use_cookies' ) ) {
        $params = session_get_cookie_params();
        setcookie(
            session_name(),
            '',
            time() - MAX_SESSION_TIEMPO,
            $params[ 'path' ],
            $params[ 'domain' ],
            $params[ 'secure' ],
            $params[ 'httponly' ] );
    }

    @session_destroy();
}

Once the user has logged in and wants to access a file that needs to be authenticated:

<?php 
require_once 'fichero-global.php';    

if ( isset( $_SESSION['usuario'] ) ) {

   // Sesión activa
}
else{

   // Sesión inactiva  
   header('Location: /');
}

The global file with the session control code is renewed each time the user does an activity in the same file, otherwise the session will be destroyed when the set time passes and it should start again.

    
answered by 15.08.2017 / 12:08
source
0

Good morning.

The basics of your HTML:

<html>
   <head>
   /* title, meta, link, style.... */
   <script>
     /*
       A continuación se asume lo siguiente:
         - La rutas son ilustrativas y relativas; son sugerencias a tu sitio
         - El nombre del PHP es significativo a lo que se debe hacer.
         - El tiempo se reinicia cada vez que se vuelve a cargar la página.
         - Puedes implementarlo más a fondo usando eventos keypress, mousemove o cualquiera 
           que indique el usuario este haciendo algo a fin de reiniciar el tiempo.
     */

     /* 
       En la raíz de tu sitio existe carpeta "Login" con archivo "cerrarSesion.php", 
       en este archivo tienes las instrucciones para cerrar sesión (finalizar todo lo que 
       a la sesión corresponda) y al finalizarse redireccionas a la pantalla de 
       logeo/autenticación */
      var cierraSesionIrLogeo = "/Login/cerrarSesion.php"; 
      /* 
        Cada mil es un segundo; 60000=1 minuto; aqui coloca el tiempo de espera antes 
        de cerar la sesión; esto se inicializara cada vez que se carge la página */
      setTimeout(function(){ windows.location=cierraSesionIrLogeo; }, 60000); 
      /*
         Claro esta que conforme la estructura/patrón de diseño que estes usando será 
         donde lo colocaras a fin que se repita/coloques en todas las páginas donde
         quieras forzar el cierre de sesión.
      */
   </script>
   </head>
   <body>
      <!-- Todo lo que compone el cuerpo de tu página -->
   </body>
</html>

I hope you find it useful or I give you an idea of what to do.

This is a simple implementation; the truth at the moment I have not touched systems with such behavior, usually I ask that the session lasts as long as it can open (user responsibility to explicitly close it): D

    
answered by 15.08.2017 в 05:31