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
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


0