Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/02/2008, 11:17
manguiti
 
Fecha de Ingreso: junio-2007
Ubicación: Cádiz
Mensajes: 369
Antigüedad: 16 años, 10 meses
Puntos: 7
problema al cerrar sesion por tiempo de inactividad....

Hola...estoy teniendo problemas a la hora de guardar en variables el tiempo del ultimo acceso a la web para saber si ha pasado el tiempo de inactividad necesario y cerrar la sesion, supongo que será que tengo que cambiar de pagina una vez que haya hecho login, ya que si no, al actualizar la pagina, vuelven a guardarse los mismos tiempos...os paso el codigo, para que veiais a lo que me refiero...


Al darle al boton de enviar, voy al archivo login.php
este contiene esta funcion:

Código PHP:
function valida_usuario()        //Funcion que valida el log y la contraseñas introducidas
{

$login $_POST['login'];        //paso valor del formulario a la variable login
$password $_POST['password']; //paso valor del  formulario a la variable password

$_SESSION['login'] = $login;

$conexion conectar("localhost","root","","golftdb");

$sqlmysql_query("SELECT usuario,passwd FROM usuarios WHERE 1",$conexion);

while (
$row mysql_fetch_array($sql)){
    if (
$login == $row['usuario'] && $password == $row['passwd']){
    
$_SESSION['control']= 1;
    break;
    }
    else
        
$_SESSION['control']= 0;
}
if (
$_SESSION['control'] == 1){
    
$_SESSION['estado']="logeado";
    
$_SESSION['ultimoAcceso'] = date("Y-n-j H:i:s");
    echo 
"Fecha del ultimo acceso al logearse: ".$_SESSION['ultimoAcceso']."<br>";
    }
    else if (
$_SESSION['control'] == 0)    
        
$_SESSION['estado']="no logeado";

y tambien dentro del cuerpo de la web, ejecutaria la funcion siguiente:

Código PHP:
function sesion_activa()            //Controla el periodo de inactividad de la sesion
{
$fechaGuardada $_SESSION['ultimoAcceso'];
echo 
"FECHA GUARDADA en la funcion sesion_activa: ".$fechaGuardada."<br>";
$ahora date("Y-n-j H:i:s");
echo 
"Fecha de la ultima vez que actualizo la pagina: ".$ahora."<br>";
$tiempo_transcurrido = (strtotime($ahora)-strtotime($fechaGuardada));
        
if(
$tiempo_transcurrido >= 1){    // Si pasaron 15 minutos o mas
    
session_destroy();
    
header("Location: index.php");
    }
    else
        
$_SESSION['ultimoAcceso'] = $ahora;

Creo que la causa por la que no me va, es que estan en el mismo archivo y entonces toman el mismo valor los dos tiempos que guardo...no es asi??