Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Hadess_inf en 10 Junio 2009, 05:42 am



Título: Pregunta sobre status de usuario.
Publicado por: Hadess_inf en 10 Junio 2009, 05:42 am
Este es el esenario, se tiene la BD sistema con la tabla usuario

Tabla usuario
 - usuario char(5)
 - clave char(5)
 - conectado char(1)

CUando un usuario se conecte al sistema el campo "conectado" sera actualizado a 1 y cuando el usuario se desconecte media el boton "cerrar sesion" el campo "conectado" sera actualizado a 0. Hasta ahi todo bien .. todo esta programado y listo .. Se ha tomado en cuenta ese campo porque el sistema debe estar validado de forma que si un usuario ( ejemplo JUAN) este conectado no pueda volverse a conectar.

EL problema viene en que: ¿que sucede si el usuario cerro la ventana sin dar click antes en cerrar sesion? ó ¿QUe pasa si se fue el internet y el usuario no puedo cerrar su sesion? .. todo viene a ese tipo de pregunta ...

¿ Quizas haya algun script que se ejecute en el servidor (mysql) que verifique si en realidad el usuario sigue conectado ? ó ¿SE debe programar una funcion en php que verifique si sigue conectado?

... haber si alquien puede darme una mano con esto. POrque la verdad aun no encuentro una salida ..

PD: Estoy usando php y mysql.


Título: Re: Pregunta sobre status de usuario.
Publicado por: Nakp en 10 Junio 2009, 06:21 am
exacto... si cierra la ventana y no cierra "sesión" pues te cagas en el y nunca mas va a entrar al sitio

utiliza sesiones (http://www.php.net/manual/es/ref.session.php) y mientras el usuario tenga una sesión activa, no puede iniciar otra en otra pc :P


Título: Re: Pregunta sobre status de usuario.
Publicado por: [u]nsigned en 10 Junio 2009, 07:21 am
¿QUe pasa si se fue el internet y el usuario no puedo cerrar su sesion?

Nada. Simplemente no pasa nada. El servicio de paginas web es 'desconectado'. Es decir, el usuario pide tu pagina(escribe la direccion en el navegador y apreta 'ENTER'), entonces tu navegador envia una peticion de datos al servidor, lepide que le facilite x pagina .php en este caso.

El servidor recibe la peticion, procesa la pagina PHP, y lo que obtenga como resultado, finalmente se la envia a tu navegador.

Un simil de esto son los SMS de telefonia movil, donde se envia y recibe informacion en forma desconectada, en cambio, cuando llamamos y hablamos estamos intercambiando informacion en tiempo real.

Yo te recomendaria que uses cookies. Asi, aunque el usuario cierre el navegador sin hacer 'LogOuT', o se corte internet o lo que sea, la variable que lo identifica como conectado seguira en su cookie, y cunado vuelva a tu sitio seguira estando conectado.

Cuando el usuario 'se desconecte' desde la pagina, le cambias el valor a la cookie como 'desconectado' y listo.

Tambien deberias, al principio de cada pagina php comprobar el valor de dicha variable en la cookie:
*Si se encuentra como 'desconectado' (0 o FALSE supongamos) o dicha variable no existe(esto quiere decir que es la primera vez que entra a tu sito, o que borro la cookie) podes redirigirlo a la pagina de inicio de sesion.

*Si se encuentra como 'conectado' pues nada...todo sigue como deberia seguir para un usuario registrado.
No soy muy bueno explicandome... :xD espero haberte ayudado en algo..

Saludos



Título: Re: Pregunta sobre status de usuario.
Publicado por: Littl3 en 10 Junio 2009, 12:11 pm
Este es el esenario, se tiene la BD sistema con la tabla usuario

Tabla usuario
 - usuario char(5)
 - clave char(5)
 - conectado char(1)

CUando un usuario se conecte al sistema el campo "conectado" sera actualizado a 1 y cuando el usuario se desconecte media el boton "cerrar sesion" el campo "conectado" sera actualizado a 0. Hasta ahi todo bien .. todo esta programado y listo .. Se ha tomado en cuenta ese campo porque el sistema debe estar validado de forma que si un usuario ( ejemplo JUAN) este conectado no pueda volverse a conectar.

EL problema viene en que: ¿que sucede si el usuario cerro la ventana sin dar click antes en cerrar sesion? ó ¿QUe pasa si se fue el internet y el usuario no puedo cerrar su sesion? .. todo viene a ese tipo de pregunta ...

¿ Quizas haya algun script que se ejecute en el servidor (mysql) que verifique si en realidad el usuario sigue conectado ? ó ¿SE debe programar una funcion en php que verifique si sigue conectado?

... haber si alquien puede darme una mano con esto. POrque la verdad aun no encuentro una salida ..

PD: Estoy usando php y mysql.

Si utilizas variables de session para el login, yo lo que haria seria mirar de comprobar que variables de session existen, nada de la BDD porque si el usuario cierra se te quedaria el dato guardado.... Un saludo


Título: Re: Pregunta sobre status de usuario.
Publicado por: ^Cloud^ en 10 Junio 2009, 14:16 pm
La forma más correcta de hacerlo sería almacenando el timestamp de actividad del usuario y realizando un cálculo del tiempo de máximo de inactividad. De esta forma, si el usuario esta inactivo x tiempo pasa a desconectado.

Un saludo,