Foros del Web » Programando para Internet » PHP »

Problema con variables de sesion

Estas en el tema de Problema con variables de sesion en el foro de PHP en Foros del Web. buenas noches tengo un problema con las variables se sesion, desarrolle un sistema el cual se maneja por acceso a usuario, cuando un usuario hace ...
  #1 (permalink)  
Antiguo 26/03/2013, 00:40
 
Fecha de Ingreso: mayo-2009
Mensajes: 242
Antigüedad: 15 años
Puntos: 2
Pregunta Problema con variables de sesion

buenas noches tengo un problema con las variables se sesion, desarrolle un sistema el cual se maneja por acceso a usuario, cuando un usuario hace login se crean las variables $_SESSION['id'] y $_SESSION['token'], el valor de esta ultima variable se guarda en un campo en base de datos llamado token entonces en cada refresh del sistema verifico lo siguiente:

Código PHP:
Ver original
  1. if(isset($_SESSION['id']) && isset($_SESSION['token'])){
  2.     $existe = mysql_query("SELECT token FROM personal WHERE idPersonal = '".$_SESSION['id']."' AND token = '".$_SESSION['token']."'");
  3.     $total = mysql_num_rows($existe);
  4.     if($total > 0){
  5.       $_SESSION['token'] = md5(rand().$_SESSION['id']);
  6.       mysql_query("UPDATE personal SET token = '".$_SESSION['token']."' WHERE idPersonal = ".$_SESSION['id']);
  7.   }else{
  8.       session_destroy();
  9.       header("Location: login.php");
  10.       exit();
  11.     }
  12. }else{
  13.     header("Location: login.php");
  14.     exit();
  15. }

El problema que estoy teniendo es que cuando dos o mas usuarios estan logueados cada uno con su nombre de usuario y contraseña y en difrentes navegadores y alguno de ellos hace refresh a su navegador en esta parte del codigo que he puesto arriba, me actualiza el token de todos los usuarios logueados no solo del usuario que hizo refresh en su navegador.:

Código PHP:
Ver original
  1. $_SESSION['token'] = md5(rand().$_SESSION['id']);
  2. mysql_query("UPDATE personal SET token = '".$_SESSION['token']."' WHERE idPersonal = ".$_SESSION['id']);


Y no logro resolver cual sea el problema. De antemano gracias.
  #2 (permalink)  
Antiguo 26/03/2013, 01:25
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema con variables de sesion

Imprime la consulta, ejemplo:

Código PHP:
Ver original
  1. $query = "UPDATE personal SET token = '".$_SESSION['token']."' WHERE idPersonal = ".$_SESSION['id'];
  2.  
  3. echo $query;

Está bien la consulta?
Cópiala y ejecútala en PhpMyAdmin para ver si se aplica a todos los usuarios, cosa que dudo.

No está bien la consulta?
Corrígela y regresa al paso anterior.

Si la consulta es correcta, te sugiero comentar las líneas donde haces la actualización y ver si sigue ocurriendo. Tal vez en alguna otra parte de tus scripts estés actualizando el token sin filtrar correctamente.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 26/03/2013, 01:34
 
Fecha de Ingreso: mayo-2009
Mensajes: 242
Antigüedad: 15 años
Puntos: 2
Respuesta: Problema con variables de sesion

Gracias por responder Triby, ya imprimi la consulta y la coloque en phpmyadmin y me hizo correctamente la actualizacion del unico registro, de igual forma comente las lineas donde se hace la consulta y no me actualiza nada en la BD, entonces quiere decir que en ningun otro lado realizo la misma actualizacion, no puedo entrar el problema.
  #4 (permalink)  
Antiguo 26/03/2013, 15:13
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema con variables de sesion

Sigo pensando que en alguna otra parte del sitio hay una consulta "sobrante".

Dependiendo del editor que estés usando, puedes buscar en todo el proyecto para encontrar donde más estás actualizando el token, creo que hasta Notepad++ te permite buscar en todos los archivos de un directorio.
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: mysql, select, usuarios, variables
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 11:35.