![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Hola BuRtOn,
por lo que estoy comprendiendo del tema, tu problema es como determinar si el usuario es registrado o no. Tu problema es del tipo lógico/diseño. Lo más natural es que al momento en que se ejecuta el aplicativo se dispare una función que se encargue de ello. Por simplicidad asumamos una función UsuarioRegistrado() que devuelve un boleano:
Bueno, esa función de ejemplo lo que hace es emitir una consulta contra la base de datos en busca de un registro en particular (un ID_Registro). El algoritmo está diseñado para que siempre y cuando exista un y solo un registro en la tabla TABLA_REGISTRO se de por válido que el usuario se registró. ¿Cuando se ejecuta esta función? Lo más obvio (y sencillo) podría sugerir en el OnCreate de la forma principal. Se podría hacer algo como esto: procedure FrmMainOnCreate(Sender: TObject); begin UserValido := UsuarioRegistrado; end; Siendo UserValido una propiedad, o variable. Y bueno, nos resta ahora solamente el tema de operar en base a este resultado. Lo más sencillo de hacer es como señala Dec:
Ahora bien, ¿que se necesita para que ejecute normalmente la función UsuarioRegistrado? Que haya una conexión establecida.... por tanto, antes de ejecutar dicha función deberá asegurarse de esto. Que quiero hacerte notar, que tu problema es del tipo lógico. Sugiero que realices una búsqueda en los foros, porque este tema se ha tratado en otras ocasiones. Saludos, |
|
#2
|
||||
|
||||
|
Saludos delphius....gracias por tu tiempo...pues en si mi problema es como hago, para mostrar el formulario de seguridad solo una vez y listo, que no saliera mas despues que el usuario se registre.....eso es todo....y que siempre haga la comsulta que el ID que esta en la base de datos corresponda al ID de la maquina donde se instalo la aplicacion.....Gracias por tu tiempo prestado Delphius....
|
|
#3
|
||||
|
||||
|
Cita:
Sería oportuno que nos respondas a estas preguntas: 1. ¿Todas tus formas están en Auto-Create o por el contrario la creas por demanda? 2. ¿Es un diseño MDI? 3. ¿En que consiste y como está diseñada la tabla en donde se registrará el ID? 4. ¿Quien crea a quien? 5. ¿Quien libera a quien? 6. ¿Por casualidad haces usos de datamodules? Sería muy útil que nos detallases mejor tu situación. Dependiendo de como estés estructurando tu diseño se deberá darte alternativas para resolver tus problemas. No veo donde está el problema BuRtOn. La solución por lo general se lleva haciendo esto: 1. Al momento de ejecutar la aplicación se chequea si el usuario es registrado 2. Si no está regitrado 2.1. "Mostrar" la forma de registro 2.2. En otro caso (si esta registrado) se habilitan el trabajo normalmente. ¿Cuál creo que es tu problema? Que no estás repartiendo bien la lógica: ¿Quien determina si el usuario es registrado? El form principal ¿Quien se encarga de llamar al form de registro? El form principal ¿Quien se encarga de registrar al usuario adecuadamente? El form de registro Una vez que el usuario ha sido registrado el form se libera. La cuestión es que el form de registro sea crea y/o muestra sólo cuando se comprueba que en la base de datos no existe dicho registro. Existe (y debería existir) un sólo punto en donde se comprueba la validez de la registración: al momento de crearse el form principal. Y en base a esto, el diseño que tienes debería ser capaz de determinar que hacer. Como he dicho antes, tu problema es de diseño como de lógica. Lamentablemente necesitamos que nos detalles mejor tu situación porque asi no te podremos ser de ayuda. Saludos, Última edición por Delphius fecha: 12-07-2008 a las 16:45:01. |
|
#4
|
|||
|
|||
|
como dice Delphius, creo que es un problema de diseño
1.- iniciar aplicación 2.- comprobar si tenemos algun registro de id de disco duro / usuario 2.1.- si no lo tenemos: creamos la form de registro y lo registramos con un user y con el ID de disco duro 2.1.- si lo tenemos, pero es invalido, avisar y salir (posible reinstalación en otro pc) 2.2.- si lo tenemos, y es valido, continuar... ... creo que esta es tu idea. Siguiendo esta idea, si te fijas, solo habra un único registro, y por lo tanto un único usuario, por lo que no tiene mucho sentido crear un registro de usuarios. Lo mejor seria simplemente, olvidarse del 'usuario'y del form del registro, que es lo que te esta creando confusión pues son innecesarias, y registrar la aplicación con el ID del disco duro. 1.- iniciar aplicación 2.- comprobar si tenemos el id del disco duro (por ejemplo, en un fichero, grabado en un recurso o bien en el registro como indicaba dec) 3.- si no lo tenemos, lo leemos y lo grabamos en nuestro programa (o registro, fichero, etc...) 3.- si lo tenemos, lo recogemos y comparamos con el del disco duro 3.1 - fallo : avisamos y salimos 3.2 - no fallo : se continua... .... PD: si por el contrario aun quieres que se registren los usuarios (varios de ellos) entonces forzosamente te tiene que aparecer el form de registro o login al principio de la aplicación para comprobarlo con tu base de datos. PDD : aun, si quieres q tu aplicación corra en varias maquinas, un usuario por maquina, deberia ser algo asi 1.- iniciar aplicación 2.- leer id de disco duro 3.- comprobar en base de datos si existe ese id 3.1 - si no existe : posible nueva instalación. Se abre el form de registro, pidiendo user y el id, y se graba en base de datos 3.2 - si existe se continua como ves, este ultimo ejemplo registraria una nueva instalación con un nuevo usuario, pero si te fijas no sirve absolutamente de nada, al menos como protección de copia, pues si lo reinstalas en otro pc simplemente te pediria un nuevo usuario y continuaria. si por el contrario la lista de usuarios ya te es conocida, entonces lo mejor seria: 1.- iniciar aplicación 2.- pedir usuario 3.- comprobar usuario en base de datos 3.1.- existe : pedir id 3.1.1.- leer id de disco duro y comparar con la entregada 3.1.1.1.- fallo : aviso y salir 3.1.1.2.- no fallo : continuar normalmente 3.2.- no existe : pedir nuevo usuario o bien avisar y salir este ultimo caso seria para proteger 'cada pc', para que usuarios que no sean el habitual no tengan acceso (aunque claro esta conociendo el usuario, ya se entraria, por lo que no es tampoco demasiado eficiente). Creo q lo mejor es que nos digas de q quieres proteger el programa : de copia digamos ilegal o de acceso de usuarios invalidos. Última edición por coso fecha: 12-07-2008 a las 16:48:21. |
|
#5
|
|||
|
|||
|
un ejemplo (aunque es casi lo mismo que puso dec)
no se... creo que poco mas se puede decir ![]() a ver si te sirve entre todos saludos |
|
#6
|
||||
|
||||
|
Saludos amigos, muchisimas gracias Coso por colaborarme en el codigo, y ati delphius como siempre me ayudas, jeje, miren lo que yo quiero, es proteger mi aplicacion de lo siguiente:
Vendi mi aplicacion a un Gimnasio, le di el instalador y listo, el instalo el .exe de mi aplicacion en su pc y las bases de datos correspondientes, ...pero hay un problema si el dueño del Gimnasio coje y copia mi aplicacion o simplemente coje el Cd de instalacion que yo le di, e instala mi aplicacion en otro pc, o mejor dicho vende mi aplicacion a otro Gimnasio....entonces necesito seguridad de que si otra persona va a instalar mi aplicacion no pueda...que la aplicacion solo corra en los Gimnasios autorizados, osea los que me compran la aplicacion....y que una vez este instalada la aplicacion y el le de copiar al .exe y a las bases de datos y los pase a otro pc no pueda...pues ahi es donde emepieza a funcionar el Id del disco duro.....entonces miren lo que estoy tratando de hacer: 1. Para evitar que los Gimnasios que tengan mi cd de instalacion y traten de instalarlo no puedan, pues facil, siempre que vendemos la aplicacion y se instala ella genera el formulario que les digo que es el formulario de seguridad....este Formulario contiene lo siguiente: * Serial: el serial es un codigo standar que nostros grabamos, para que se pueda instalar la aplicacion....ejemplo de lo que estoy explicando:
como se pueden dar cuenta el serial esta predefinido en tiempo de programacion y el codigo seria es xxxxxx, entonces ese codigo siempre lo colocamos nostros apenas instalemos la aplicacion, por que eso es lo bueno, que nostros mismos vamos e instalamos nuestra aplicacion....asi que ese codigo solo lo sabemos mi compañero y yo...por ese lado evitaria que me copien la aplicacion desde el cd de instalacion que yo doy... * Id: el Id del disco duro lo que me ayudaria a evitar es que me copien la aplicacion despues de instalarla en el pc del Gimnasio obtenga la aplicacion....ejemplo de lo que digo: Me compran la aplicaicon, la instalo en el pc del gimanasio, el dueño le da copiar a mi .exe y a las bases de datos, y le da pegar en otro pc, y listo queda de una mi aplicacion en otro pc, entonces si tengo el Id del disco duro, en una Base de datos o un archivo, como sea mas facil, pues simplemente que me genere la consulta siempre que se ejecute la aplicacion que si el Id es <> no me deje ejecutar la aplicacion. Pero una de las cosas que quiero hacer y a lo mejor no me explique es lo que mencione anteriormente lo del Serial y el Id, ya saben por que el serial y por que el Id, lo que deseo es pues cuando la aplicacion se ejecute por primera vez me arroje el formulario de Seguridad e inmediatamente proceda a insertar los datos de Serial e Id...y se ejecute la consulta respectvia si los datos son correctos permita continuar con la aplicacion si no, pues simplemente emitir un shomessage('Datos de registros incorrectos'); y cierre la aplicacion, a eso se le puede agregar lo que decia coso, que si el numero de intentos es > 5 cierre la aplicacion---, lo otro es que una vez registrado el cliente no vuelva a salir el formulario, pero que siempre que se ejecute la aplicacion se ejecute la consulta de que si el Id es correcto....y si algun caso el Id no llega a ser correcto eso indica que la aplicacion esta en otro pc.... e inmediatamente vuelva a generar el formulario de ingrese Serial e Id.... ....eso es lo que nesecito....y Coso, por archivos me parece como mas facil, segun tu codigo, pero no soy tan avanzado como tu, me gustaria que me pasaras un tutorial de archivos, pues tu das una buena opcion de almacenar el Id en un archivo pero no tengo ni idea como crearlo...no se como es la sintaxis, ni los parametros del archivo que mencionas, en fin espero que me puedas explicar con plastilina, jejeje, es que el tiempo apremia me toca entregar la aplicacion este martes, y necesito eso para que no me la roben, ya basta que aqui en Colombia, piratean todo...hay que tener cuidado con eso...les agradesco que me puedan colaborar....y espero que esta vez me hallan entendido mas....me demore mucho planteando bien mi pregunta...ha y por ultimo, esta es la funcion que tengo para extraer el Id:
Posdata: Tengo una aplicacion aparte que me extrae y me muestra por pantalla el Id del pc, entonces solo es insertar el Id de mi aplicacion en mi formulario de seguridad y comprobar si ese Id corresponde al del Pc...Gracias amigos por todo su tiempo prestado... |
|
#7
|
|||
|
|||
|
Hola, me da la impresion que el problema no es que te demores planteando la pregunta, sino que no escuchas las respuestas
si tienes otro programa donde coger la id, personalmente usaria este para 'marcar' tu aplicación con el id del disco duro (comprobando el serial) y luego al cargar la aplicación que se leyera directamente de ella misma y comprobase que es la misma. Para grabar en un archivo, te dejo este link Hoy es domingo, pero si tengo tiempo ya preparare un ejemplo (yo de ti por eso, no me esperaria ) Saludos. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Abrir un formulario hijo solo una vez | Walterdf | Varios | 5 | 08-04-2008 17:15:01 |
| dll + mostrar formulario | albertoP | OOP | 1 | 04-12-2006 08:21:20 |
| mostrar sólo 5 caracteres de un varchar(75) | Giniromero | Firebird e Interbase | 4 | 19-09-2006 12:37:41 |
| mostrar solo dos decimales | clanmilano | Varios | 1 | 15-11-2005 23:31:52 |
| mostrar SOLO cliente de los que tengo un sólo registro | Giniromero | SQL | 15 | 11-06-2004 12:33:19 |
|