Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/08/2006, 15:35
raul123
 
Fecha de Ingreso: septiembre-2005
Mensajes: 94
Antigüedad: 18 años, 7 meses
Puntos: 0
Problema con sesiones en Explorer

Hola amigos,
Mi problema es el siguiente:

En mi página web tengo una sección de acceso restringido, he usado sesiones con cookies y me he dado cuenta de que en Firefox puedo acceder a la sección restringida, pero en Explorer no. Intentadlo en www.solucioninmobiliaria.net/acceso.php
. Si ponéis como nombre de usuario "invitado", podréis entrar (sólo en firefox).

El código del script que controla el acceso es el siguiente

Código PHP:
<?
include("includes/conexionBBDD.php");
//Sentencia SQL para buscar un usuario con esos datos
$pwd $_POST["pwd"];
$pwd md5($pwd);
$userid $_POST["userid"];
$ssql "SELECT * FROM admin WHERE nombre='$userid' and pwd='$pwd' ";

//Ejecuto la sentencia
$rs mysql_query($ssql);

//vemos si el usuario y contrase&ntilde;a es váildo
//si la ejecución de la sentencia SQL nos da algún resultado
//es que si que existe esa conbinación usuario/contrase&ntilde;a
if ($row mysql_fetch_array($rs) || $userid == "invitado"){
        
//usuario y contrase&ntilde;a válidos
        //defino una sesion y guardo datos
        
session_name("plantillaInmobiliaria");
        
session_start();
        
        
//sesión con cookies
        
$nombreCookie 'inmoCookie';
        
//creamos un número aleatorio entre 0 y el nº de segs del momento actual, y le aplicamos md5
        
$valorCookie md5(rand(0,time()));
        
        
//asignamos una validez a la cookie de 1 día
        
$tActual time(); //marca de tiempo en segundos
        
$tActualMasUnDia $tActual + (60*60*24) ; //sumamos 1 día en segundos
        
$validezCookie $tActualMasUnDia;
        
        
//creamos la cookie
        
setcookie($nombreCookie,$valorCookie,$validezCookie);
        
        
//metemos el nombre de usuario en la sesión, para trarar como admin o invitado
        
$_SESSION["userID"]=$userid;
        
        
//asignamos un identificador de sesión
        
$_SESSION["sessionID"]=$valorCookie;
        
        
//asignamos una variable del último acceso de la sesión
        
$_SESSION["tUltAcceso"]=$tActual;
        
///////
        
$url="Location: admin.php";
        
header ($url);
}else {
    
//si no existe le mando otra vez a la portada
    
header("Location: acceso.php?err=usr");
    exit();
    
}
mysql_free_result($rs);
mysql_close($conn); 
?>
y el script que añado al principio de cada página de acceso restringido es este:

Código PHP:
<?
//Inicio la sesión
session_name('plantillaInmobiliaria');
session_start();
$valorCookie $_COOKIE["inmoCookie"];

function 
destruirSesion(){
    
session_unset();
    
//destruimos la variable de sesión
    
$_SESSION= array();
    
//destruimos la posible cookie
    
setcookie('inmoCookie','',time()-3600);
    
session_destroy();

    
header("Location: acceso.php");
    exit();
}

if(!(
$_SESSION["sessionID"] == $valorCookie) || 
    !(isset(
$_SESSION["sessionID"]))){
    
destruirSesion();
}

//si hemos llegado aquí es que el usuario está identificado
//comprobaremos si han pasado 30 minutos desde su último acceso

$tActual time();
$tUltAcceso $_SESSION["tUltAcceso"];
//tiempo que se permite de inactividad
//30 minutos = 30*60=1800 segundos
$periodoInactividad 1800

//para comprobar (quitar comentarios):
//echo "tiempoActual:".$tActual;
//echo "--tiempoUltimoAcceso:".$_SESSION["tUltAcceso"];
//echo "--resta Tactual-TultAcceso:".($tActual-$tUltAcceso);

//comprobamos que estamos dentro del periodo tolerado
if(($tActual $tUltAcceso)>$periodoInactividad){ 
    
//si se ha pasado el tiempo, salimos
    
destruirSesion();
}else{
    
//si estamos dentro, actualizamos el valor de 
    //la variable correspondiente en la sesión
    
$_SESSION["tUltAcceso"]=$tActual;
}

?>
Espero que alguien me pueda ayudar con este problema...
Un saludo y muchas gracias!