Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Si cambia un valor en la BD que desconecte a un usuario

Estas en el tema de Si cambia un valor en la BD que desconecte a un usuario en el foro de Frameworks JS en Foros del Web. Hola buenas! Soy nuevo en éste foro, y mediocremente novato en la programación (ahora estoy más bien centrado en php). Daos por saludados todos los ...
  #1 (permalink)  
Antiguo 13/10/2010, 17:07
 
Fecha de Ingreso: octubre-2010
Mensajes: 6
Antigüedad: 13 años, 6 meses
Puntos: 0
Sonrisa Si cambia un valor en la BD que desconecte a un usuario

Hola buenas!

Soy nuevo en éste foro, y mediocremente novato en la programación (ahora estoy más bien centrado en php). Daos por saludados todos los que leáis éste post ;)

Bueno pues, estaba escribiendo un sistema de logueo, y ya que quería idear una manera de que un mismo usuario no puediera loguearse dos veces, algo que leí por ahí era hacer un campo en la BD que sea "login" y así, cuando logueara el usuario, éste se volviera TRUE y cuando deslogueara se vuelva FALSE (y si intenta meterse mientras tanto, que al estar en TRUE no le deje).

Pero claro, evidentemente la "pega" a ésto es, cuando el usuario cierra el navegador y punto. Sí, las sesiones se cierran (¡adiós cookies!), pero en mi BD evidentemente el campo login seguía como "TRUE". Pero ésto también lo he solucionado, ya que, simplemente cuando el usuario loguee y se compruebe el estado del campo "login", si está en TRUE, simplemente lo cambia a FALSE (y más adelante vuelve a ponerlo en TRUE).

La petición es, un código en ajax para implementarlo en las páginas siguientes después de todo el proceso de logueo, para que esté continuamente revisando de la DB el estado del campo "login", y si éste retorna FALSE (porque esté intentando conectarse de nuevo con la misma cuenta, y como dije, si se lo encuentra en estado true lo cambia a false), que éste código en ajax le cierre las sesiones y le expulse a expulsado.php donde sólo se imprimirá en pantalla "Has sido desconectado del servidor" (por ejemplo, para ponerlo sencillo).


Espero haya quedado claro lo que intento decir; y sino, perdonadme por mi torpeza!

Desde ya, muchas gracias!! =)

Última edición por Mogutaru; 13/10/2010 a las 17:16
  #2 (permalink)  
Antiguo 14/10/2010, 07:52
Avatar de Naguissa  
Fecha de Ingreso: junio-2008
Mensajes: 37
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Si cambia un valor en la BD que desconecte a un usuario

Creo que la solución es poco fiable.

Ahora se me ocurre que podrías hacerlo con dos campos:
Uno de IP, que guarda la última IP conectada.
Otro "lastseen", que guarda la última vez que el usuario tuvo actividad estando logueado.

Con ésto puedes no dejar conectar al usuario con otra IP a no ser que hayan pasado, por ejemplo, 10 minutos.
  #3 (permalink)  
Antiguo 14/10/2010, 12:19
 
Fecha de Ingreso: octubre-2010
Mensajes: 6
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Si cambia un valor en la BD que desconecte a un usuario

En primer lugar, gracias por leerlo y responder.

Pero es que no es eso lo que quiero que haga. Porque si, está teniendo actividad mientras se vuelve a meter en la cuenta desde otra pestaña, por ejemplo, no me borraría las sesiones.

Sólo, que verifique si el campo "login" de la db está en false, y cierre todas las sesiones. Con eso sería perfecto.
  #4 (permalink)  
Antiguo 15/10/2010, 10:46
 
Fecha de Ingreso: abril-2001
Ubicación: Puerto Montt
Mensajes: 89
Antigüedad: 23 años
Puntos: 1
Respuesta: Si cambia un valor en la BD que desconecte a un usuario

a mi se me ocurre la siguiente idea, cuando un usuario se conecta puedes generar un codigo aleatorio de, por ejemplo, 10 digitos, que guardas en la bbdd y en una cookie o variable de sesion , en cada pagina comparas el campo, si es el mismo codigo, no hay problema , si el codigo cambia, se sale de la sesion, de este modo, cuando un nuevo usuario se loguee, automaticamente el que estaba conectado antes sale de la sesion y le puedes poner un mensaje que diga "Otro usuario ha iniciado sesion desde otra ubicacion"....
  #5 (permalink)  
Antiguo 15/10/2010, 19:09
 
Fecha de Ingreso: octubre-2010
Mensajes: 6
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Si cambia un valor en la BD que desconecte a un usuario

Hola arlin, gracias por leerlo y responder.

Pero me temo que eso ya lo pensé, y no tiene sentido por lo siguiente:

Las sesiones, como bien sabes, se sobre-escriben si le das un nuevo valor. Entonces, si primero te logueas con un usuario, y luego en otra ventana te logueas con el mismo usuario, el valor de la session del segundo se hará global para los dos; de modo que el primero tendrá el mismo valor session que el segundo. Por lo tanto no sirve.

Sobre las cookies. Eso está bien si es en el mismo pc. Pero, ¿Qué apsa si intenta conectarse desde dos pcs diferentes a la misma cuenta?. Tampoco sirve.

Pero por favor, que no se entienda mi respuesta como un "ya lo sabía", sino que, respondo a lo que decís para que veáis que esa tampoco es una solución, y que, a menos que se le ocurra a otro otra, la única más fiable, y que creo que irá perfecta para el caso, es la que propongo (aunque de nuevo, cualquier idea que os surje, comentadla sin problemas; que a lo mejor no se me había ocurrido y dais con una solución mucho más sencilla que la que yo he propuesto!).

El problema, es que para generar el código en ajax que digo, no tengo conocimientos aún, pues no sé nada de javascript (estoy empezando por php, y apenas soy un mediocre novato que ha empezado hace unos meses). Por eso digo que, si alguien que tuviera idea de ajax pudiera sacar un ratín para generar un código para lo que pido, se lo agradecería, porque me parece que, aunke quizás éste problema pueda tener otras soluciones (no lo sé!), me parece un esquema básico de ajax que a muchos puede servirle.

Muchas gracias a todos!

Etiquetas: ajax, bd, usuarios, cambios
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:45.