Foros del Web » Programando para Internet » PHP »

Evitar Conexiones Simultaneas

Estas en el tema de Evitar Conexiones Simultaneas en el foro de PHP en Foros del Web. Que tal amigos, tengo un sistema de consulta de datos hecho en php en el cual los usuarios pueden ver y modificar sus datos personales ...
  #1 (permalink)  
Antiguo 23/10/2008, 15:47
 
Fecha de Ingreso: marzo-2008
Ubicación: Guayana, Venezuela
Mensajes: 23
Antigüedad: 16 años, 1 mes
Puntos: 0
Pregunta Evitar Conexiones Simultaneas

Que tal amigos, tengo un sistema de consulta de datos hecho en php en el cual los usuarios pueden ver y modificar sus datos personales entre otras cosas! Para ingresar el usuario utiliza un ID único y su password.

El problema que tengo es que algunos usuarios han compartido su password y en varias ocasiones tengo al mismo usuario conectado dos veces al mismo tiempo desde ubicaciones distintas, entonces el usuario 1 guarda unos datos y el usuario 2 (que ingreso con lo datos de usuario 1) cuando guarda sobre escribe lo que guardo el usuario 1.

Antes de tomar alguna otra decisión sobre cambios de password a los usuarios y todo eso, quisiera saber si existe una forma de evitar esto, o sea si el usuario 1 se conecta y viene otro usuario y quiere ingresar con los datos de usuario 1 el sistema pueda darle un mensaje que diga que la sesión de usuario 1 ya esta iniciada y que no puede acceder. Espero haberme explicado bien amigos, así como espero puedan ayudarme
  #2 (permalink)  
Antiguo 23/10/2008, 15:51
 
Fecha de Ingreso: abril-2008
Mensajes: 453
Antigüedad: 16 años
Puntos: 16
Respuesta: AYUDA! Evitar Conexiones Simultaneas

si lo podes hacer antes de loguearse, cuando guardas $_SESSION['id'] si $_SESSION['id'] existe le pones ese mensaje
  #3 (permalink)  
Antiguo 23/10/2008, 15:52
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: AYUDA! Evitar Conexiones Simultaneas

Hola Monchiss,

Sí es posible hacerlo, pero requiere de que extiendas tu sistema, necesitaras manejar tus sesiones en la base de datos, así al iniciar sesión insertas en la base de datos con un flag que esta dentro, y al salir pones ese flag en 0.

Es un poco complicado el estar rastreando en la base de datos pero es la única forma para realizar lo que pides.

Saludos.
  #4 (permalink)  
Antiguo 23/10/2008, 16:03
Avatar de mag377  
Fecha de Ingreso: octubre-2008
Mensajes: 17
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: AYUDA! Evitar Conexiones Simultaneas

podrias guardar la ip y la hora del ultimo cambio, cuando guardes hacer una pequeña comparacion entre tiempos y si son my cortos comparas ip's esta comparacion la puedes hacer con funciones javascript al igual que las consultas, si las ip's son distintas mandas un alert diciendo que otra maquina hizo cambios
  #5 (permalink)  
Antiguo 24/10/2008, 06:58
 
Fecha de Ingreso: marzo-2008
Ubicación: Guayana, Venezuela
Mensajes: 23
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Evitar Conexiones Simultaneas

Gracias amigos por sus respuestas, las 3 están interesantes voy a intentarlo. Espero poder resolverlo, luego les comento.

Muchas gracias de verdad!
  #6 (permalink)  
Antiguo 29/10/2008, 13:29
 
Fecha de Ingreso: marzo-2008
Ubicación: Guayana, Venezuela
Mensajes: 23
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: AYUDA! Evitar Conexiones Simultaneas

Cita:
Iniciado por GatorV Ver Mensaje
Hola Monchiss,

Sí es posible hacerlo, pero requiere de que extiendas tu sistema, necesitaras manejar tus sesiones en la base de datos, así al iniciar sesión insertas en la base de datos con un flag que esta dentro, y al salir pones ese flag en 0.

Es un poco complicado el estar rastreando en la base de datos pero es la única forma para realizar lo que pides.

Saludos.
Que tal amigos, he estado intentando y me incline un poco mas hacia la opción de GatorV, analicé el método y es bastante bueno, me surge una duda al respecto:

La ventana del sistema muestra un botón para salir del sistema, puedo controlar por allí que se restablezca el valor del campo, simplemente llamando a una funcion, que realice un UPDATE en la base de datos y luego cierre la ventana. La duda que tengo es ¿Como controlar si el usuario cierra la ventana del navegador? como todos sabemos clickeando en la 'X' que poseen todos los navegadores cerramos la ventana. Si alguien sabe como le agradeceria su ayuda!
  #7 (permalink)  
Antiguo 29/10/2008, 13:59
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Respuesta: Evitar Conexiones Simultaneas

Buena elección. El campo de tu db ponelo en int y no como booleano, en el mismo guardas un timestamp. Ahora bien, cuando loguea en vez de validar que esta en cero validarás que ese tiemstamp sea menor al time() actual + $variableDuracionSessionEnSegundos.

Entonces, si se va, automaticamente pasados los $variableDuracionSessionEnSegundos segundos quedará liberado nuevamente el registro. Lo que si, este método te fuerza a que en todas las paginas estés permanentemente haciendo un update de este campo con el timestamp actual, y si queres hacerlo bien hasta por ajax podés controlar que cada $variableDuracionSessionEnSegundos segundos pida un reconteo (un nuevo update), así si esta leyendo más de $variableDuracionSessionEnSegundos segundos una pagina sin recargarla no lo deslogueará.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 17:09.