Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/04/2009, 17:07
Avatar de @padawan@
@padawan@
 
Fecha de Ingreso: julio-2005
Mensajes: 393
Antigüedad: 18 años, 9 meses
Puntos: 6
Problema con sesiones y el Internet Explorer 7 !

Bueno tengo una aplicacion restringida por modulo de login de usuarios, el sistema es bastante standard, basicamente utiliza sessiones para restringir el ingreso a paginas protegidas, con el Firefox no tengo ningun problema, pero si con el IE7 y el IE6 , se que existe este problema y le ha sucedido a muchos pero no he encontrado una solucion seria y consistente, basicamente es que la session vive solamente en la pagina que la crea pero al pasar a otra pagina la session ya pierde su valor, y por lo que pude averiguar por mi cuenta es que el IE7 bloquea las cookies indiscriminadamente entonces supongo que por eso no debe andar, tambien dicen que al utilizar
Código PHP:
header ("Location: index.php"); 
esto hace perder el valor de la session en internet explorer, con lo cual para solucionar parcialmente este problema lo que utilice fue reemplazar lo anterior Por esto:

Código PHP:
include_once("index.php"); 
Pero esto me puede traer problemas de redifinicion de variables entonces no lo veo como una solucion seria, prolija y consistente.


Pongo mi codigo:

Este es el codigo de la pagina que evalua los datos de usuario y contraseña y decide si dejarlo pasar o no, en donde se inicializa la variable de sesion:
Código PHP:
<?
//NOTA:
require('../inc/acceso_DB.php');

//Recupero variables
$Usuario $_POST["txtUsuario"];
$Contrasena $_POST["txtPass"];


//armo la sentencia sql para encontrar al usuario
$sqlstring "select * from Usuarios where Usuario ='$Usuario' and Password ='$Contrasena'";

//ejecuto la sentencia
$resultset mysql_query($sqlstring);

//procedemos a permitir el acceso en caso de que los datos sean correctos
//en caso contrario procedemos a restringir el acceso  

if (mysql_num_rows($resultset)!=0)
   {

   
session_start();
   
$_SESSION['autentificado']="SI";
   
     
   
$usuario_datos mysql_fetch_array($resultset);
   
//Traigo estos datos para guardarlos en sesiones para usarlos en diferentes procesos
   
$_SESSION['IdUsuario'] = $usuario_datos['IdUsuario']; 
   
$_SESSION['NombreUsuario'] = $usuario_datos['Nombre'];
   
$_SESSION['ApellidoUsuario'] = $usuario_datos['Apellido'];
   
$_SESSION['NickUsuario'] = $usuario_datos['Usuario'];
      
   
header ("Location: Inicio.php");
   
//include_once("Inicio.php"); die(); 
   
   
}
else
   {

   
header ("Location: ErrorLogeo.php");
   
//include_once("ErrorLogeo.php"); die(); 
   
}
   
mysql_free_result($resultset);

?>
Luego tengo la pagina de capa de seguridad que pongo al principio de cada pagina que quiero que este restringida.

Código PHP:
<?
session_start
();

//COMPRUEBA QUE EL USUARIO ESTE AUTENTFICADO
if (!isset($_SESSION['autentificado']))
   {
   
//si es que esta variable no tiene ningun valor lo mando a la pagina de error
   
header ("Location: ErrorLogeo.php");
   
//y finalmente salgo de este script
   
exit();
   }
else
   {
   if (
$_SESSION['autentificado']!="SI")
      {
      
//si no existe lo mando a la pagina de error de logeo 
      
header ("Location: ErrorLogeo.php");
      
//y finalmente salgo de este script
      
exit();
      }
}
?>
Bueno como ven es bastante basico pero no funciona en internet explorer vi por ahi en algunos foros que tambien lo que intentaban hacer era reemplazar la funcion $_session por la vieja y conocida $HTTP_SESSION_VARS
pero tampoco me funciono.

A alguno le paso esto?? lo pudieron solucionar?? agradesco cualquier sugerencia.
Saludos.

Última edición por @padawan@; 20/04/2009 a las 09:01