Genesis Vargas J

Como Poner Tiempo a las Sesiones PHP + Javascript

Comparte:

Hola amigos, en este tutorial les enseñaré un truco para ponerle un tiempo determinado a nuestras sesiones en PHP (en realidad es javascript), ya sea si queremos que los usuarios de nuestra aplicación no demoren mucho tiempo conectados al servidor o si queremos saber si ellos mismo están inactivos mientras usan la aplicación.

Bueno, mi truco se trata de entender bien como funciona la web, porque digo esto: He visto en muchos "tutoriales" en internet que se enredan con este tema y hay que tener bien claro los conceptos; cuando un usuario da click o entra a nuestra aplicacion web o sitio web en ese preciso instante esta trabajando el lenguaje PHP (porque el usuario esta haciendo una petición al servidor), cuando la página esta cargando ya PHP se durmió por decirlo así; y ahí es donde juega un papel muy importante el otro lenguaje: JavaScript (el lenguaje en el lado del cliente).

Según esta explicación podremos deducir que el que se debe encargar de saber si nuestros usuarios estan inactivos o de ponerles tiempo en nuestra aplicación es JavaScript.

Para codificar esto debemos contar con un archivo php que se llamara: "logout.php", el cual se encargar de destruir la sesión activa PHP; y obviamente nuestro index.php.

<?php
session_start();
if (isset($_SESSION['usuario'])) {
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>BIENVENIDO A NUESTRA APLICACIÓN</title>
<script>
function TiempoActividad()
{
    setTimeout("DestruirSesion()", 600000);
}
function DestruirSesion()
{
    location.href = "logout.php";
}
</script>
<body onload="TiempoActividad()">
<h1>HOLA: <?php echo $_SESSION['usuario']; ?> '</h1>
<p>Te has logueado exitosamente!!! hemos colocado 10 minutos de actividad en esta sesión si estas inactivo</p>
</body>
</html>';
<?php
}else{
header('Location: login.php');
}
?>

Como pudiste ver, después del autenticamiento de los usuarios y al momento de cargarse la página, se esta ejecutando una función javasctipt que se llama TiempoActividad() la cual se encargará de correr un timer de 10 minutos (600.000 milisegundos) para ejecutar otra función llamada: DestruirSesion() que a su vez se encargará de redirigirnos a la página donde se hace el respectivo cierre de sesión PHP.

<?php
session_start();
session_destroy();
echo 'Ha terminado la session';
echo '<script>location.href = "login.php"</script>';
?>

Aquí solo llamamos la función: session_destroy() y ejecutamos un script de JavaScript para redirigir al usuario a la página de login.

Bueno amigos eso fue todo. Espero les sirva y no se olviden de comentar que les pareció.

PD: no use AJAX porque es algo demostrativo y por lo general no lo utilizo para cosas como estas.

Comentarios


genesis vargas

Soy Genesis Vargas Jiménez, autor de éste blog. Me gusta desarrollar software en todas las plataformas (web, móvil y desktop) y compartir conocimiento para ayudar a muchas personas.

Desde el 2015 soy MVP Microsoft en Visual Studio y tecnologías de desarrollo, reconocimiento que me enorgullece mucho.

MVP Genesis Vargas J

A PHP Error was encountered

Severity: Core Warning

Message: Module 'timezonedb' already loaded

Filename: Unknown

Line Number: 0

Backtrace: