Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/12/2010, 13:22
ramiromd
 
Fecha de Ingreso: agosto-2010
Mensajes: 100
Antigüedad: 14 años, 2 meses
Puntos: 2
Problema con caducidad de sesion.-

Buenas, ando probando este tema de las sesiones en PHP y me quede en un punto.
Hasta ahora logré crearlas y que su fin se concrete (evitar el acceso a secciones restringidas sin previa identificación). El tema es que se me ocurrió armar al script para que expire la sesión pasados 5 minutos de inactividad. Y realmente no lo estoy pudiendo conseguir.
A continuación dejo los códigos explicando qué quise hacer.

- check.php:

Código PHP:
<?php
session_start
();
/* conexiona a la bd  blablablabla*/

if (mysql_num_rows($resultado) <> 1){
    echo 
"Usuario o contraseña no válidos:<br>Solicitud rechazada!.<br>";
}else{
  
$_SESSION["auth"] = "true"// usuario autorizado.
  
$_SESSION["lastAcces"] = date(); // timestamp del ultimo movimiento del usuario.
  
header ("Location: http://localhost/laucha/login/auth/private.php"); // redirecciono a la seccion privada.
}
Hasta acá anda todo bien. Luego, la sección restringida y nada raro nuevamente:

- private.php:

Código PHP:
<?php
session_start
();
if (
$_SESSION["auth"] <> "true"){
  echo 
"Estas intentando entrar a un sitio restringido !.<br>";
}else{
echo 
"Bienvenido.<br>";
}
?>
<a href="otra.php" target="_blank" name="ejemplo">otra pagina</a><br>
<a href="quit.php" target="_blank" name="ejemplo">quit!</a><br>
Ahora si. Es acá cuando dejo pasar unos minutos (más de 5, porque es el tiempo máximo de inactividad permitida que quiero) e intento acceder a el enlace de "otra pagina".

- otra.php
Código PHP:
<?php
session_start
();
if (
$_SESSION["auth"] <> "true"){
  echo 
"Estas intentando entrar a un sitio restringido!.<br>";
}else{
  
$time2kill 300// 300 segundos = 5 minutos.
  
$lastAcces $_SESSION["lastAcces"];
  
$now date(); // timestamp actual.
  
$elapsed = ($now $lastAcces); // transcurrido desde el ultimo movimiento.
  
if ($elapsed >= $time2kill) {
      
session_unset();
      
session_destroy();
      
header("Location: notime.php");
  }else{
      
$_SESSION["lastAcces"] = $now;
      echo 
"esta es otra pagina";
  }
}
?>
El problema es que me deja entrar al sitio y visualiza el contenido, cuando por la resta entre $now - $lastAcces me debería dar un número mayor a 300 (digo, si espere 5 minutos o más).
No se si estare aplicando bien la idea en el código o si hay algún error en los else...estoy desde las 9 de la mañana y no lo puedo sacar .
Agradecería cualquier ayudilla.
Saludos