Foros del Web » Programando para Internet » PHP »

Interferencia entre SESSIONES !!!!

Estas en el tema de Interferencia entre SESSIONES !!!! en el foro de PHP en Foros del Web. Hola a todos. De antemano, agradesco a quienes me puedan ayudar. Tengo un problema bastante grave, ya que si abro 2 ventanas de FIREFOX, e ...
  #1 (permalink)  
Antiguo 17/08/2005, 02:53
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 13 años
Puntos: 2
Exclamación Interferencia entre SESSIONES !!!!

Hola a todos.

De antemano, agradesco a quienes me puedan ayudar.

Tengo un problema bastante grave, ya que si abro 2 ventanas de FIREFOX, e ingreso a mi sitio con 2 usuarios diferentes, noto que existen interferencias explicitas entre ambos. Estoy algo preocupado, ya que si bien esto puede ser un problema del firefox, local, que no me daria problemas en el sitio, tambien puede ser lo contrario.

(Al final del mensaje mis scripts de LOGIN y LOGOUT.)

El problema:
Caso 1: En la ventana "A" ingreso como usuario "PEDRO". En la ventana "B", ingreso a mi sitio, y ya aparesco logeado como "PEDRO" !!

Caso 2: En la ventana "B" hago LOGOUT, ya que encontre la session iniciada. Actualizo la ventana "B" y tambien estoy LOGOUT!!

Caso 3: En ventana "A" ingreso como "PEDRO". En ventana "B" intento ingresar con los datos de "JORGE", pero aparece logeado el usuario PEDRO y no JORGE!

y asi muchos casos mas...

Si sirve de algo, tengo configurado en el login.php:
session_set_cookie_params(0, "/");
(No se 100% que hace, solo lo tuve q usar por problemas con firefox)

Al logout hago:
session_unset();
session_destroy();


Espero me puedan ayudar, estoy algo preocupado ya q no tengo forma de probarlo desde varias pc en internet hace la prox. semana...


Gracias !!!!!!!!!!!!

/* LOGIN.PHP */

<?php
if(($user = $_POST['user']) != "" || ($password = $_POST['pass']) != "") {

include($_SERVER['DOCUMENT_ROOT'].'/include/bd.php');

$link = conectar_bd();
$sql = "select * from usuarios where user = '$user' and password = '$pass'";
$query = mysql_query($sql) or die('Imposible realizar consulta!');

if(mysql_num_rows($query) > 0) {
$data = mysql_fetch_array($query);
}

if ($data['user'] == $user && $data['password'] == $pass) {

if ($data['u_level'] < 1) {
echo 'Su cuenta ha sido bloqueada.<br>';
exit();
} else {
$sql = "SELECT * FROM usuarios WHERE user='$user' AND login_last < CURDATE()";
$query = mysql_query($sql) or die('Imposible realizar consulta!');
if(mysql_num_rows($query) > 0) {
$sql = "update usuarios set cmts='0' where user='$user'";
$query = mysql_query($sql) or die('Imposible realizar consulta!');
}

$fecha = date('Y-n-d');
$sql = "update usuarios set login_last='$fecha' where user='$user' and password='$pass'";
$query = mysql_query($sql) or die('Imposible realizar consulta!');

session_set_cookie_params(0, "/");
session_start();
$_SESSION['user'] = $user;
$back = $_SERVER['HTTP_REFERER'];
header("Location: $back");
}
} else {
echo 'Los datos ingresados son incorrectos.';
}



} else {
header('Location: /msg/loginfail1.html');
}


mysql_close($link);
?>



/* LOGOUT.PHP */

<?php
session_start();
if (! $_SESSION['user']) {
echo 'Imposible salir. No hay usuario ingresado.';
exit();
}

session_unset();
session_destroy();
$back = $_SERVER['HTTP_REFERER'];
header("Location: $back");

?>
  #2 (permalink)  
Antiguo 17/08/2005, 06:30
 
Fecha de Ingreso: junio-2002
Mensajes: 243
Antigüedad: 15 años, 6 meses
Puntos: 1
Pues solo decirte que tienes razón y me pasa esactamente lo mismo...

no es q sea un gran problema ya q en un mismo pc novan a ver dos usuarios a la vez...

además no lo he probado pero en el remoto caso de q usaran algo como terminal server seguro q si abren dos firefox desde conexiones distiantas no conserva la sesion entre ambos firefox.

también decirte q he probado con explorer y no sucede..

no se si habrá algún modo de desactivarlo en el navegador...

pq desde php dudo...no he visto nada...

Salu2.
  #3 (permalink)  
Antiguo 19/08/2005, 05:04
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 13 años
Puntos: 2
Si, yo note todo lo que contas tambien.
Igualmente creo que session_start() tambien deja informacion en la PC del usuario, mas precisamente el browser del usuario.

Por ende, si entran a nuestra pagina diferentes usuarios desde un Cyber Cafe (donde los usuarios tendran la misma IP ya q comparten conexion), desde maquinas diferentes con cualquier tipo de browser incluido el firefox, este problema *NO SUCEDE*.

No esta probado, pero en cuanto se levanten mis hermanas voy a probar con la PC de ellas y la mia, con firefox, ambas al mismo tiempo.

Te dejo un saludo y gracias por aportar :)
  #4 (permalink)  
Antiguo 19/08/2005, 09:57
 
Fecha de Ingreso: diciembre-2001
Ubicación: Asuncion
Mensajes: 143
Antigüedad: 16 años
Puntos: 1
A mi nunca me paso eso, pero es interesante el dato. te dire como yo trabajo con las sesiones.

1. creo un archivo de control que verifica si el usuario ya esta autenticado. Una estructura básica de este archivo podria ser algo como:

control.inc
Código PHP:
//-- Si no existe la variable de sesion 'autenticado' o la variable 'autenticado' no posee la cadena 'si', redireccionar a login.php
if ( !isset($_SESSION['autenticado']) || $_SESSION['autenticado'] != "si" ) {
    
header('location: login.php');

2. En cada pagina restringida realizo una llamada a dicho archivo. Podria ser:

pagina_restringida.php
Código PHP:
require_once 'control.inc';
<
html>
//-- contenido de la pagina
</html
Por supuesto que al momento aceptar a un usuario como registrado, se crea la variable 'autenticado' y se le asigna la cadena 'si'
Código PHP:
$_SESSION['autenticado'] = 'si'
Prueba y cuentanos si te sirvio de algo :)
  #5 (permalink)  
Antiguo 19/08/2005, 10:07
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 13 años
Puntos: 2
A ver... creo que lo que vos haces tambien lo hago pero de otra forma...
Yo controlo que exista la variable "$_SESSION['user'];"
(Cada vez q un usuario hace login, cargo entonces esa variable con su nombre de usuario)

Cada una de mis pagians empieza con lo siguiente:

<?php
if (!$_SESSION['user']) {
echo "No estas logueado";
exit();
}
?>

Eso lo tengo en TODAS las paginas... yo igualmente creo que el problema es por Firefox.... vos estas TOTALMENTE seguro de que no te pasa esto utilizando FIREFOX 1.0 o superior, en la misma web?

un saludo.

PD: Cual es la diferencia con utilizar mi codigo en un include como haces vos?
  #6 (permalink)  
Antiguo 19/08/2005, 10:08
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 13 años
Puntos: 2
PD: Solo controlo que exista la variable, y no su contenido, ya que al salir con logout hago "unset" a la session y luego "destroy".

saludos
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




La zona horaria es GMT -6. Ahora son las 15:35.