PHP - EXPIRAR SESION

 
Vista:
sin imagen de perfil
Val: 79
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

EXPIRAR SESION

Publicado por Jonathan (40 intervenciones) el 30/08/2020 04:32:43
Tengo un archivo sesion.php que se incluye en cada pagina del proyecto, para validar tanto si la sesión esta activa, como si la sesión a expirado , hasta ahí ningún problema, estoy haciendo pruebas con 30 segundos para no tardar tanto. El problema surge que el código se ejecuta cada ves que visito una pagina, por lo tanto si estoy navegando sobre la misma pagina, como por ejemplo haciendo click o registrando datos, la sesión aun así expira,. ya que no eh recargado la pagina o de fondo no eh visitado alguna otra pagina del proyecto.

Como podría solucionar este problema ? , Adjunto codigo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
setlocale(LC_ALL,"es_ES");
include("conexion.php");
$con = new Conexion();
session_start();
if(!isset($_SESSION['usuario'])){
	mysqli_close($con->conexion);
	header('Location: '.$raiz);
}else{
	$ahora = time();
	if($ahora > $_SESSION['sesion-expire']){
		$liberar = mysqli_query($con->conexion,"UPDATE usuarios SET sid = NULL WHERE usuario = '".$_SESSION['usuario']."'");
		unset($_SESSION['fecha']);
		unset($_SESSION['usuario']);
		unset($_SESSION['nombre']);
		unset($_SESSION['apellido']);
		unset($_SESSION['genero']);
		unset($_SESSION['rol']);
		unset($_SESSION['sesion-start']);
		unset($_SESSION['sesion-expire']);
		mysqli_close($con->conexion);
		session_regenerate_id();
		session_destroy();
		header('Location: '.$raiz);
	}else{
		$_SESSION['sesion-expire'] = time() + (0.5 * 60);
		$host = $_SERVER["HTTP_HOST"];
		$url = substr($_SERVER["REQUEST_URI"],21,-4);
		$query = "SELECT * FROM permisos WHERE rol = '".$_SESSION['rol']."'";
		$permisos = $con->obtenerdatos($query);
		$filas = $con->numerofilas2($query);
		for($i=0,$filas;$i<$filas;$i++){
			$ruta = $permisos[$i]['ruta'];
			$permiso = $permisos[$i]['permiso'];
			if($ruta == $url and $permiso == 0){
				header('Location: '.$raiz.'logica/acceso_denegado.php');
			}
		}
	}
}
 
?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de javier
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

EXPIRAR SESION

Publicado por javier (547 intervenciones) el 30/08/2020 08:19:47
Hola,

con PHP no puedes ya que trabaja del lado del servidor y si el usuario no recarga la pagina no se ejecuta nada.

Tendrias que usar java script e ir recogiendo los eventos del raton y asi poder calcular el tiempo que esta sobre la misma pagina sin recargar.

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

EXPIRAR SESION

Publicado por Mauro (1034 intervenciones) el 01/12/2020 20:27:29
Hace un tiempo tuve un problema similar a este e implementé una solución como comenta Javier.

Aquí los detalles por si los quieres revisar.

Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar