Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/03/2009, 11:51
Avatar de rafaconpu
rafaconpu
 
Fecha de Ingreso: febrero-2006
Mensajes: 331
Antigüedad: 18 años, 2 meses
Puntos: 3
destruir sesiones y cookies

Buenas tardes,

Siguiendo el ejemplo de www.desarrolloweb.com sobre el sistema de autentificación me aparece un problema al intentar destruir la sesión y es que una vez hecho, si vuelvo a acceder a mi página (supuestamente securizada) me sale cuando no debería hacerlo.

el fichero seguridad.php contiene esto:

Código PHP:
ini_set("session.use_only_cookies","1");
    
ini_set("session.use_trans_sid","0");
    
    
//Iniciamos la sesión
    
session_name("loginUsuario");
    
session_start();
    
//Cambio la duración a la cookie de la sesión
    
session_set_cookie_params(0"/"$_SERVER['HTTP_HOST'], 0);
    
    
//Compruebo que el usuario está logueado
    
if ($_SESSION["autentificado"]!="SI"){
        
header("Location: errorvalidacion.php");    
        exit(); 
//Salgo del script
    
}else{
        
//Calculo el tiempo transcurrido
        
$fechaGuardada $_SESSION["ultimoAcceso"];
        
$fechaActual date("Y-n-j H:i:s");
        
$tiempo_transcurrido = (strtotime($fechaActual)-strtotime($fechaGuardada));
        
        
//Compruebo el tiempo transcurrido (medido en segundos)
        
if ($tiempo_transcurrido >= $duracionSesion){
            
session_destroy(); //destruyo la sesión
            
header("Location: errorvalidacion.php");        
        }else{
            
//Actualizo la fecha de la sesión
            
$_SESSION["ultimoAcceso"] = $fechaActual;
        }
    } 
El fichero donde controlo la validación del usuario contiene esto:

Código PHP:
ini_set("session.use_only_cookies","1");
            
ini_set("session.use_trans_sid","0");
        
            
session_name("loginUsuario"); //asigno un nombre a la sesión para poder guardar diferentes datos.
            
session_start(); //inicio la sesión
            //Cambio la duración de las cookies de la sesión
            
session_set_cookie_params(0,"/",$_SERVER['HTTP_HOST'],0);
            
            
$_SESSION["autentificado"] = "SI";
            
//Nombre del usuario validado para mostrar en la cabecera de todo el cPanel
            
$_SESSION["nombre"] = $dato["nombreusuario"];
            
//Defino la fecha y hora de inicio de sesión (formato: aaaa-mm-dd hh:mm:ss)
            
$_SESSION["ultimoAcceso"] = date("Y-n-j H:i:s"); 
            
header ("Location: cpaneladmin.php"); //Aquí poner la página con el cPanel (cpanel.php)
        
}
    }else{
        
//redirijo a admin.php con error de usuario
        
header("Location: errorvalidacion.php");
    } 
Y por último el fichero "salir.php" que destruye las sesiones (supuestamente) tiene esto:

Código PHP:
session_start();
session_destroy(); 
En mi página al pulsar "cerrar sesión" llamo al fichero salir.php que supuestamente destruye la sesión.

Pues bien, si vuelvo a teclear mi página.php no debería dejarme acceder puesto que ya he destruido la sesión y en cambio me sigue saliendo.

¿Puede ser que haya que destruir alguna cosa más? ¿Las cookies? ¿Otras sesiones más que haya creadas?

¿Alguna idea o sugerencia? Gracias.