Foros del Web » Programando para Internet » PHP »

Problema con sesiones en Explorer

Estas en el tema de Problema con sesiones en Explorer en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 20/08/2006, 15:35
 
Fecha de Ingreso: septiembre-2005
Mensajes: 94
Antigüedad: 18 años, 6 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!
  #2 (permalink)  
Antiguo 20/08/2006, 15:44
 
Fecha de Ingreso: septiembre-2005
Mensajes: 94
Antigüedad: 18 años, 6 meses
Puntos: 0
Gracias por adelantado...!
  #3 (permalink)  
Antiguo 21/08/2006, 15:00
 
Fecha de Ingreso: septiembre-2005
Mensajes: 94
Antigüedad: 18 años, 6 meses
Puntos: 0
Solucionado

Hola a todos,
YA HE SOLUCIONADO EL PROBLEMA.
Parece ser que IE6 tiene problemas con las cookies, así que para parchear este problema, hay que poner, después de cada session_start() el siguiente código (no me preguntéis qué significa, ni qué hace, ni nada de nada, que no tengo ni idea):

header('P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"');

Esto lo he encontrado en www.php.net/session en la sección que los usuarios contribuyen con sus experiencias.

Espero que os sirva de ayuda, un saludo y ¡hasta pronto!
  #4 (permalink)  
Antiguo 21/08/2006, 15:05
 
Fecha de Ingreso: julio-2006
Mensajes: 45
Antigüedad: 17 años, 9 meses
Puntos: 0
Cita:
Iniciado por raul123 Ver Mensaje
Hola a todos,
YA HE SOLUCIONADO EL PROBLEMA.
Parece ser que IE6 tiene problemas con las cookies, así que para parchear este problema, hay que poner, después de cada session_start() el siguiente código (no me preguntéis qué significa, ni qué hace, ni nada de nada, que no tengo ni idea):

header('P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"');

Esto lo he encontrado en www.php.net/session en la sección que los usuarios contribuyen con sus experiencias.

Espero que os sirva de ayuda, un saludo y ¡hasta pronto!
el IE no tiene problema ,el codigo tiene que empezar asi

<?php
session_start();
  #5 (permalink)  
Antiguo 21/08/2006, 15:06
 
Fecha de Ingreso: julio-2006
Mensajes: 45
Antigüedad: 17 años, 9 meses
Puntos: 0
Cita:
Iniciado por raul123 Ver Mensaje
Hola a todos,
YA HE SOLUCIONADO EL PROBLEMA.
Parece ser que IE6 tiene problemas con las cookies, así que para parchear este problema, hay que poner, después de cada session_start() el siguiente código (no me preguntéis qué significa, ni qué hace, ni nada de nada, que no tengo ni idea):

header('P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"');

Esto lo he encontrado en www.php.net/session en la sección que los usuarios contribuyen con sus experiencias.

Espero que os sirva de ayuda, un saludo y ¡hasta pronto!
el IE no tiene problema ,el codigo tiene que empezar asi

<?php
session_start();

jmm, no vi que tu problema es en cookies.
  #6 (permalink)  
Antiguo 21/08/2006, 15:18
 
Fecha de Ingreso: septiembre-2005
Mensajes: 94
Antigüedad: 18 años, 6 meses
Puntos: 0
De acuerdo

Tienes razón, exist, poniendo el session_start al principio ya funciona perfectamente.

Me quedo con tu solución porque con la otra no sé ni qué estaba haciendo. Muchas gracias!
  #7 (permalink)  
Antiguo 18/11/2007, 06:29
Avatar de Tilens  
Fecha de Ingreso: febrero-2007
Ubicación: España
Mensajes: 41
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Problema con sesiones en Explorer

pues a mi no me funciona, con ie6. tengo una web no puedo poner el vinculo, pero es traducantrust punto com y no me guarda las sessiones abajo podeis ver que la variable de session num siempre añade uno. solo ocurre en ie6.
y si tengo el session_start() puesto al inicio de la página
  #8 (permalink)  
Antiguo 19/11/2007, 12:52
Avatar de Tilens  
Fecha de Ingreso: febrero-2007
Ubicación: España
Mensajes: 41
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Problema con sesiones en Explorer

ya podria contestar alguien no?, me trae bastante de cabeza estoy seguro que de el codigo va bien y funciona en ff y en ie7 pero en el ie6 no.
  #9 (permalink)  
Antiguo 20/11/2007, 12:49
Avatar de Tilens  
Fecha de Ingreso: febrero-2007
Ubicación: España
Mensajes: 41
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Problema con sesiones en Explorer

pues nada creo que tendré que buscar alguna alternativa.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 21:39.