PDA

Ver la Versión Completa : Fecha última visita usuario sitio Web


dec
17-07-2006, 00:06:51
Hola,

Supongamos que estoy construyendo un sitio Web en donde será posible que los visitantes se registren como usuarios de tal manera que puedan aprovecharse del servicio que ofrecerá dicho sitio Web.

Bien. El sitio Web habrá de contar con el típico formulario de "login" desde donde el usuario ya registrado podrá autentificarse. En caso de que la autentificación resulte correcta, se redirigirá al usuario a una página del sitio Web en concreto.

Bien. En esta página Web quisiera mostrarle al usuario un mensaje de "bienvenida personalizada", algo así como "Bienvenido NOMBRE_USUARIO".

Hasta lo dicho llego, es decir que ya lo tengo medio hecho y funciona todo como se espera. La pregunta que quiero hacerte es cómo harías tú para añadir al mensaje de bienvenida la fecha de la última visita del usuario.

Este dato no es baladí, puesto que puede servir al usuario alertándole si la fecha de última visita no es la que él esperaría: alguien podría haberle suplantado en el sistema. De este modo el usuario podría cambiar su contraseña, por ejemplo.

Pues bien, no sé cómo hacerlo. No sé qué campo añadir a qué tabla de la base de datos MySQL que pienso utilizar. No sé cómo ni cuándo guardar la fecha de "última visita" del usuario.

¿Utilizo la propia tabla "usuarios" y añado un campo de tipo "timestamp", por ejemplo? ¿Mejor guardar la fecha de última visita en otra tabla? ¿En qué momento guardar la fecha de la última visita? ¿Cuando el usuario se identifica en el sitio Web? ¿Cuando sale del mismo mediante el correspondiente "LogOut"?

¿Necesitaré acaso un par de fechas que poder comparar? En fin. Estoy lleno de dudas y agradecería cualquier empujoncito para conseguir lo que pretendo. Muchas gracias de antemano y disculpad las posibles molestias. :)

vtdeleon
17-07-2006, 07:21:53
No sé cómo ni cuándo guardar la fecha de "última visita" del usuario.
...
¿En qué momento guardar la fecha de la última visita?
En mi opinion, deberias hacerlo como hace vBulletin. Funciona (Creo) de la sigt manera:

Mientras estes navegando en la web, vbulletin lo va monitoreando por cada click qeu das en un enlace, lo guarda en un campo la informacion necesaria(fecha, donde,...), y cuando pasa mas o menos 15 mins sin dar clic hace logout y se queda guardada el ultimo clickazo o actividad que has tenido.

Lo he expressadp de una manera vaga, pero ahi va, a mi entender, el funcionamiento.

dec, puedes hacer esto y cuando el usuario regrese mostrarle este ultima actividad y guardar la siguiente (que es la de login).

kayetano
17-07-2006, 10:09:15
Hola

Yo lo metería en la información del usuario, pondría un nuevo campo "ultimavisita", cuando leas la información del usuario te quedas con el dato y a continuación lo actualizas con un UPDATE para guardar la fecha de la actual visita.

dec
17-07-2006, 19:35:01
Hola,

Bueno. Muchas gracias a ambos por responder. La verdad que lo que dices Troi no me queda muy claro: seguramente porque mis conocimientos son limitados. Me parece una manera de conseguirlo que podría funcionar, pero, me gustaría encontrar una forma menos complicada (al menos tal como yo lo veo). Es igual, muchas gracias por dar la idea.

En cuanto lo que dices Kayetano, vale, que el campo "ultimavisita" esté en la tabla de "usuarios". Ahora voy a tratar de seguir paso por paso lo que creo que habría que hacerse, a ver hasta dónde llego sin pararme:

Primer escenario:

1º El usuario se se autentifica en el sitio Web. Entre otras cosas, recibe un mensaje de bienvenida que incluye la fecha de su última visita, recogido este dato del campo "ultimavisita" de la tabla "usuarios".

2º En el mismo proceso de autentificación, me encargo de actualizar el campo "ultimavisita", de forma que alberge, precisamente, la fecha actual, es decir, la fecha y hora en que el usuario se autentificó en el sitio Web.

2º El usuario pasa unos minutos en el sitio Web y al cabo decide marcharse mediante el correspondiente "LogOut". La próxima vez que inicie su sesión volviendo a autentificarse, recogeré la fecha del campo "ultimavisita" y se lo mostraré.

Creo que hasta aquí todo puede funcionar bien... ¿o se me escapa algo acaso?

Segundo escenario

1º Igual que el primer paso del Escenario 1

2º Igual que el segundo paso del Escenario 1

3º El usuario pasa unos minutos en el sitio Web y al cabo decide marcarse, pero, esta vez no realiza el "LogOut", sino que, simplemente, cierra el sitio Web para marcharse a otro distinto.

4º Puesto que el sitio Web cuenta con unas "Cookies" encargadas de "recordar" al usuario, cuando este volviera al sitio Web y en caso de que decidiera que se le recordarse como usuario, este no tendría que autentificarse de nuevo.

¿Aquí no estoy ante un problema? Porque, ¿qué fecha de última visita le mostraré al usuario de este último escenario? ¿No será una fecha "equivocada", puesto que será la de la última vez que el usuario cerró la sesión?

Me quedan dudas de si estoy planteando el tema correctamente. Quiero decir que el primer escenario puede parecer "válido", y, sin embargo, me quedan dudas al respecto.

Por otro lado, y si estas dudas mías no tuvieran fundamento, tal vez el segundo escenario podría completarse de la siguiente forma: en el proceso de autentificación del usuario por medio de las "Cookies" correspondientes, podría aprovecharse para actualizar la fecha de última visita.

Esto es así porque el proceso de autentificación siempre se lleva a cabo, de una manera o de otra, con o sin intervención del usuario. ¿Y ahora qué os parece de todo esto? ¿Demasiado prolijo? Os pido disculpas y os agradezco las respuestas pasadas y futuras. :)

vtdeleon
18-07-2006, 00:15:45
La verdad que lo que dices Troi no me queda muy claro:Es que me explique como una M....
seguramente porque mis conocimientos son limitados.Y CREES QEU LOS MIOS SON MAS AMPLIOS:eek:?. NO TE CONFIEEEEES

Bueno, vamos a lo qeu vinimos.
Yo me referia a esto (http://mi.verizon.net.do/mvtsoft/clubduvista.jpg) en vBulletin. Será esto lo que deseas?

dec
18-07-2006, 02:20:17
Hola,

Sí Troi, es a ese mensaje al que me refería. Aún no hize nada al respecto, porque estoy con otras cosas, pero, espero en breve decir cómo lo he solucionado... si es que he sido capaz de solucionarlo. Si alguien tiene alguna idea que no dude en comentarla por aquí, por cierto. ¡Y gracias! :)

kayetano
18-07-2006, 09:49:57
Hola

Esto se puede solucionar de muchas formas:
1. Con sesiones: cada vez que entre en la página se creará una sesion con los datos del cliente, nombre, fecha último acceso, ... en el caso de que haya salido sin hacer logout la cookie se mantendrá pero la sesion se destruirá en cuanto cierre el navegador. Cuando vuelva a entrar puedes detectar que es un nuevo acceso ya que la sesión no está creada.

2. Con la cookie: puedes guardar la fecha de último acceso en la cookie, y definirte un periodo de inactividad. La siguiente vez que consultes la cookie si la diferencia entre la fecha que tiene guardada y la fecha actual es superior al periodo de inactividad pues consideras que ha sido un nuevo acceso.

3. Con el evento "onUnload" del tag <body>: con este evento puedes capturar si el usuario cambia de página, lo único que debes hacer es actualizar la fecha de la cookie cada vez que se produce este evento, en este caso guardarás la fecha de salida y no la de entrada pero creo que tampoco hay mucho problema.

Supong que dandole vueltas al coco se podrán sacar muchisimas más opciones.

Creo que el primer caso es el más simple, el único caso que no puedes controlar es si el usuario visita dos veces seguidas tu página sin cerrar el navegador. Otro posible problema es que deje el navegador abierto mucho tiempo sin hacer nada y que la sesión caduque, en este caso se considerará un nuevo acceso si vuelve a navegar por tu web.