Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Programa multiusuario, y que pasa si se corta la luz? (https://www.clubdelphi.com/foros/showthread.php?t=53162)

Lucciano 12-02-2008 19:12:35

Programa multiusuario, y que pasa si se corta la luz?
 
Hola amigos como andan? El otro dia se me planteo un problema y no logro resolverlo.

Problema:
  • Como es posible administrar una aplicacion multiusuario, evitando que el mismo usuario habra mas de una sesion del programa en maquinas distintas?
  • Si el usuario esta logueado correctamente y se corta la luz como haria para logearse de nuevo (si es que la solucion fue manejar los accesos por medio de una tabla de la BD).
Espero que me ayuden con ideas o con el metodo correcto para este tipo de aplicaciones. Saludos!!

:confused:

ixMike 12-02-2008 19:34:17

Supongo que el programa tendrá un archivo de configuración por ahí... en ese caso, añade un registro llamado "CerrarCorrectamente" o algo así. Que por defecto almacene un valor booleano en "true" (correcto, vamos). Que al cargar el programa lo tone "false" y lo guarde, y que no se ponga otra vez en true hasta que el programa se vaya a cerrar definitivamente (pero vamos, que sea lo último que ejecute antes de Close o Terminate).
Eso te servirá para saber si se fue la luz (o si el proceso ha sido cerrado por arte de magia, por si se produjo un error...); ya, saber qué usuario estaba es cuestión de que se guarde también en ese fichero de configuración. "ÚltimoUsuario" o algo así, para que te entiendas.

Espero que te sirva de ayuda.


Salu2.

JXJ 12-02-2008 20:11:35

hazle como el messenger.

a mi me ha pasado que dejo. el messenger activo con mi cuenta. jxj@hotmail.com

y voy al ciber de mi amigo, y abro el messenger en una de sus pcs. e inicio sesión
con mi cuenta jxj@hotmail.com
y solo se mantiene activo el ultimo messenger.

marcoszorrilla 12-02-2008 22:21:13

Yo tengo un fichero de usuarios con un campo booleano para cada usuario en donde figura si está conectado o no.

Cada vez que intenta entrar en el sistema se comprueba usuario y contraseña y también si ya está conectado, si está conectado no se le deja entrar.

Solamente el que se conecta como administrador tiene la posibilidad de ver este fichero y marcar a alguién como desconectado si por algún fallo quedó en esa situación y por lo tanto no puede entrar al sistema.

Un Saludo.

maeyanes 12-02-2008 22:38:17

Hola...

Yo lo hago de la siguiente manera:

Cada que un usuario entra creo un registro de entrada, más o menos así: Login (fecha de entrada) - Logout (null) - PCName (nombre del equipo desde el cual ingresa)...

Cuando el usuario cierra la aplicación, establesco el valor de Logout, con eso ya se si el usuario cerró bien la aplicación.

De esta forma puedo saber si un usuario está activo y por medio de otros permisos puedo permitirle tener más de una sesión o no. Obviamente el Admin puede tener más de una sesión activa...

Cuando la aplicación falla y el usuario quiere entrar desde el mismo equipo, el sistema detecta esto y le permite entrar cerrando la sesión que quedó abierta...

Si la última sesión abierta tiene más de un día, hace el mismo procedimiento y deja que el usuario ingrese a la aplicación...

Esto hasta ahora me ha dado buenos resultados...



Saludos...

Lucciano 13-02-2008 20:53:16

Gracias amigos por sus opiniones y consejos, les cuento que estuve probando de hacerlo mediante el siguiente trigger.

Código SQL [-]
CREATE OR REPLACE TRIGGER CISA.TRG_LOGOFF
BEFORE LOGOFF
ON DATABASE
BEGIN
  DELETE FROM TACCESOS WHERE SID_NUMBER = sys_context('userenv','ip_address');
END;

Funciona a medias, ya que si se habre cualquier otra aplicacion de la misma maquina y crea otra instancia en la BD, al cerrar esta aplicacion hace que se me borre el registro para la cual lo estoy creando. Tendria que ponerle un IF <nombre aplicacion > para controlarlo pero todavia no he encontrado nada de como obtener los nombres de los programas que estan conectados a la BD sin ser el administrador de la BD. Gracias por todo!! Saludos!!.
:)


La franja horaria es GMT +2. Ahora son las 19:28:11.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi