Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-04-2012
camiz camiz is offline
Miembro
 
Registrado: ene 2012
Posts: 69
Poder: 13
camiz Va por buen camino
Smile Login en delphi

Hola amigos nuevamente por aqui, buscando ayuda nesecito hacer un Login para el ingreso a una aplicacion con base de datos firebird he probado varios metodos y no funciona, la base de datos es firebird y consta asi.


Código SQL [-]
CREATE TABLE USUARIO
(
  CODUSUARIO Integer NOT NULL,
  NOMBRE Char(50),
  DIRECCION Char(70),
  USUARIO Char(20) NOT NULL,
  CLAVE Char(20) NOT NULL,
  PRIMARY KEY (CODUSUARIO)
);





lo que quiero es validar el Usuario y clave para luego ingresar al sistema he estado probando este codigo con la ayuda de unos Tutoriales
pero no funciona.
la consulta del IBQuery es esta

Código SQL [-]
select CODUSUARIO, USUARIO, CLAVE from USUARIO WHERE CODUSUARIO=:USER

Código Delphi [-]
begin
frmConeccion.Login.Params.ParamByName('USER').Value:= txt_usuario.Text;
frmConeccion.Login.Active:= True;
If frmConeccion.Login.RecordCount < 1 then
begin
  Cuenta := Cuenta + 1;
  Application.MessageBox('Usuario no encontrado', 'Atención', MB_ICONINFORMATION or MB_OK);
  txt_usuario.Text := '';
  txt_clave.Text := '';
  frmConeccion.Login.Active := False;
  If Cuenta = 3 then Close;
end
 else
 If txt_clave.Text = frmConeccion.LoginCLAVE.AsString then
 Begin
   frmPrincipal.Show;
   frmConeccion.Login.Active := False;
   frmLogin.Visible:= False;
   end
   else
   begin
   Cuenta := Cuenta + 1;
   Application.MessageBox('Clave incorrecta, intente de nuevo', 'Atención', MB_ICONERROR or MB_OK);
   txt_clave.Text := '';
   frmConeccion.Login.Active := False;
   If Cuenta = 3 then Close;
   end;



a ver si me dan una manito se lo agradecere.

Última edición por Casimiro Notevi fecha: 04-04-2012 a las 10:37:12.
Responder Con Cita
  #2  
Antiguo 04-04-2012
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Hola,

¿pero donde falla?, ¿cual es el error que te lanza?, haz una ejecución paso a paso y ve comprobando el valor de los objetos para saber si están rellenos adecuadamente o si rescatan bien la información de la tabla.

Saludos.
__________________
Confórmate con lo que tienes pero anhela lo que te falta.
Responder Con Cita
  #3  
Antiguo 04-04-2012
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Primero, como dijo el compañero:
  • ¿Cuál es el error que te da?
  • ¿En qué línea?
Solo un detalle:
Estos campos creo que deberían ser de tipo VARCHAR.
  • USUARIO VARCHAR(20) NOT NULL,
  • CLAVE VARCHAR(20) NOT NULL,
De lo contrario se rellenaran con espacios hasta llegar a 20 caracteres y la comparación podría fallar.
'ADMIN____________________' <> 'ADMIN'
Responder Con Cita
  #4  
Antiguo 04-04-2012
camiz camiz is offline
Miembro
 
Registrado: ene 2012
Posts: 69
Poder: 13
camiz Va por buen camino
tenias razon duilioisola

el error era que la clave era incorrecta,

pero gracias a tu observacion he cambiado "CHAR" por "VARCHAR" y funciona muy bien

Gracias mi estimado duilioisola por tu aporte, el problema està resuelto.
Responder Con Cita
  #5  
Antiguo 04-04-2012
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Ese metodo de login es inseguro. Se presta para una inyección de sql:

http://es.wikipedia.org/wiki/Inyecci%C3%B3n_SQL



Ademas, es mejor guardar las claves como un hash, e implementar el login con un procedimiento almacenado, o en su defecto, usar sustitución de parámetros:

http://mc-computing.com/databases/De...tml#parameters

Cita:
SELECT * FROM MATABLE
WHERE MT_ID IN (:MYPARAM)

Al menos hasta aqui es un buen primer intento para una app local, monousuario. Si es una app web o la BD se expone en una red amplia es mejor implementar un esquema mas seguro...
__________________
El malabarista.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
login delphi rcd_a Varios 2 27-01-2012 18:13:32
Como hacer un Login en Delphi php kurono Varios 0 29-06-2011 04:26:08
Login delPhi 7 Yensis22 C++ Builder 2 10-06-2008 16:05:38
Login-Delphi TKW04 OOP 39 22-08-2007 05:08:55
Login via base de datos en Delphi eudy.net Conexión con bases de datos 1 08-06-2007 07:28:14


La franja horaria es GMT +2. Ahora son las 01:54:47.


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
Copyright 1996-2007 Club Delphi