Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-09-2005
Yessy Yessy is offline
Registrado
 
Registrado: sep 2005
Posts: 3
Poder: 0
Yessy Va por buen camino
Thumbs up validar dos campos (password y usuario)

Hola
estoy tratando de validar dos campos, para el login de un programa.

Este me pide el usuario y el password pero de todas forma me da acceso si lo dejo vacio.
Gracias
Responder Con Cita
  #2  
Antiguo 08-09-2005
Sirkius Sirkius is offline
Miembro
 
Registrado: jun 2004
Posts: 83
Poder: 20
Sirkius Va por buen camino
Bueno, pero como lo haces??

EDITO: o todavia no has empezado? no lo entendí bien...
__________________
SIN FIRMA :P
Responder Con Cita
  #3  
Antiguo 08-09-2005
Avatar de DarKraZY
DarKraZY DarKraZY is offline
Miembro
 
Registrado: ago 2003
Posts: 460
Poder: 21
DarKraZY Va por buen camino
Cita:
Empezado por Yessy
Hola
estoy tratando de validar dos campos, para el login de un programa.

Este me pide el usuario y el password pero de todas forma me da acceso si lo dejo vacio.
Gracias
Deberías poner aquí el código, para así poder ayudarte. Hay muchas formas de poder hacerlo.
Responder Con Cita
  #4  
Antiguo 09-09-2005
Avatar de Maury Manosalva
Maury Manosalva Maury Manosalva is offline
Miembro
 
Registrado: ago 2005
Posts: 101
Poder: 19
Maury Manosalva Va por buen camino
Hola Yesi buen dia, lo que entiendo es que tienes dos campos en una BD, y necesitas verificar si este usuario esta creado y si la contraseña es correcta, lo que tienes que hacer desde el form de delphi crear dos objetos de conexion un DataSource que conecta a la BD y otro Query SQL desde donde vas a hacer la consulta. ahora vas a programar las consultas de esta manera:

esto es lo que lleva en el form de acceso.

Código Delphi [-]
 procedure TfrmLogin.cmdAccesarClick(Sender: TObject);
 Var
   consulta : String;
 begin
   with qryUsuario do
   begin
     close;
     SQL.Clear;
     consulta := 'Select * from TabUsuarios where LogUsuario ='+char(39)+
       txtUsuario.Text+char(39)+ 'and ConUsuario ='+chr(39) + txtcontrasena.Text+char(39);
     SQL.Add(consulta);
     Open;
     If (RecordCount=1) then
     Begin
       //siguiente form a mostrar
     End
     else
     Begin
       MessageDlg('Usuario o Contraseña Incorrecta, Por Favor Verifique',mterror,[mbOk],0);
       txtUsuario.SetFocus;
     end ;
   End;
 end;
Esta seria la manera para consultar si el usuario y la contraseña corresponden y la deje pasar al frmprincipal o como la quieras llamar.

P.D. Por favor sea mas explicita en las preguntas para que las respuestas sean muy concretas.

Maury Manosalva.
Bucaramanga, Colombia.

Última edición por dec fecha: 09-09-2005 a las 19:18:20. Razón: Encerrar el código fuente en la etiqueta [DELPHI]
Responder Con Cita
  #5  
Antiguo 09-09-2005
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 19
el_barto Va por buen camino
no subestimes el poder del motor de busqueda del foro, aqui esta un hilo que muy seguramente te ayudara en tu proposito:

http://www.clubdelphi.com/foros/showthread.php?t=21935
__________________
Una forma de alcanzar tus metas es ayudando a otros a alcanzar las suyas
Responder Con Cita
  #6  
Antiguo 11-09-2005
Yessy Yessy is offline
Registrado
 
Registrado: sep 2005
Posts: 3
Poder: 0
Yessy Va por buen camino
Gracias

Gracias por responder.
No habia podido accesar a la pagina despues de ese dia desde mi computadora.
Aqui detallo el código que estoy utilizando.

procedure TPASSWORD.OKClick(Sender: TObject);

begin
if (edit1.Text= '')= true then
begin
showmessage ('Introduzca Su Nombre De Usuario');
edit1.SetFocus;
end;
if (edit2.Text= '')= true then
begin
showmessage ('Introduzca Su Password');
edit2.SetFocus;
end;
if (edit1.Text= '' )and (edit2.Text= '' )= true then
principal.ShowModal;
edit1.SetFocus;
edit1.Text:= '';
edit2.Text:= '';
edit1.SetFocus;
if (TBpassword.FindKey ([edit1.text]) = true ) then
showmessage ('Clave incorrecta');

end;


end.

El cual no me funciona.
Gracias nuevamente
Responder Con Cita
  #7  
Antiguo 11-09-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 23
vtdeleon Va por buen camino
Saludos

Código Delphi [-]
    procedure TPASSWORD.OKClick(Sender: TObject);
     begin
     if trim(edit1.Text= '') then
     begin
        showmessage ('Introduzca Su Nombre De Usuario');
        edit1.SetFocus;
      end else
       if trim(edit2.Text= '') then
        begin
          showmessage ('Introduzca Su Password');
          edit2.SetFocus;
        end else
    {Esto aqui no lo entiendo, ya que esos mismo campos lo evaluaste anteriormente
    Pienso que no va.}
    {
     if (edit1.Text= '' )and (edit2.Text= '' )= true then
      principal.ShowModal;
     edit1.SetFocus;
     edit1.Text:= '';
     edit2.Text:= '';
     edit1.SetFocus;}
  //if (TBpassword.FindKey ([edit1.text]) = true ) then
   {regularmente uso Locate}
   if not TBpassword.locate('usuario;clave',VarArrayOf([edit1.text,edit2.text]),[]) then
            showmessage ('Usuario o Clave incorrecta');
         else 
           {aqui el codigo para abrir tu ventana principal}
         end;
Por ultimo has una busqueda en este foro, yaqeu se ha hablado mucho (o bastante) de este tema.
Suerte
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!

Última edición por vtdeleon fecha: 11-09-2005 a las 19:17:49.
Responder Con Cita
  #8  
Antiguo 11-09-2005
Yessy Yessy is offline
Registrado
 
Registrado: sep 2005
Posts: 3
Poder: 0
Yessy Va por buen camino
Wink

Hola
Gracias a todos por la ayuda.
Ya entendi y la aplicacion funciona muy bien
Responder Con Cita
  #9  
Antiguo 28-07-2006
Ade Ade is offline
Miembro
 
Registrado: jul 2006
Ubicación: Murcia
Posts: 70
Poder: 18
Ade Va por buen camino
hola necesito que alguien me ayude, uso delphi 4 con componentes zeos y mysql, y puse en el boton entrar, lo siguiente;
ZTable1 es mi tabla de usuarios(nombre, usuario, password)

procedure TForm1.Button1Click(Sender: TObject);
begin
if not ZTable1.Locate('usuario', Edit1.Text, []) then
showmessage('Usuario incorrecto.')
else Form2.ShowModal
end;

solo trato de buscar en la tabla el usuario introducido por en el edit pero me sale el siguiente error;

Stack overflow, alguien podria ayudarme, gracias
Responder Con Cita
  #10  
Antiguo 28-07-2006
Avatar de xander
xander xander is offline
Miembro
 
Registrado: jul 2006
Posts: 499
Poder: 18
xander Va por buen camino
Cita:
Empezado por Maury Manosalva

Código Delphi [-]
 procedure TfrmLogin.cmdAccesarClick(Sender: TObject);
 Var
   consulta : String;
 begin
   with qryUsuario do
   begin
     close;
     SQL.Clear;
     consulta := 'Select * from TabUsuarios where LogUsuario ='+char(39)+
       txtUsuario.Text+char(39)+ 'and ConUsuario ='+chr(39) + txtcontrasena.Text+char(39);
     SQL.Add(consulta);
     Open;
     If (RecordCount=1) then
     Begin
       //siguiente form a mostrar
     End
     else
     Begin
       MessageDlg('Usuario o Contraseña Incorrecta, Por Favor Verifique',mterror,[mbOk],0);
       txtUsuario.SetFocus;
     end ;
   End;
 end;
Aguas con las inyecciones SQL!!!!... este código que pusiste es muy susceptible de ser franqueado si en el password uno escribe algo como:
0' or '1'='1

si solo tienes un usuario en tu tabla con eso es suficiente para entrar a tu programa... aguas...
__________________
"Hey, nena, debe ser genial ser tú y verme a mí mismo..."
Responder Con Cita
  #11  
Antiguo 28-07-2006
Ade Ade is offline
Miembro
 
Registrado: jul 2006
Ubicación: Murcia
Posts: 70
Poder: 18
Ade Va por buen camino
Hola y gracias por responder.
Sólo quería comprobar que mi búsqueda fuera correcta y una vez conseguido entonces añadir la validación de la contraseña.
Probaré con ese código, ya tendrán noticias sobre como fue.....
Responder Con Cita
  #12  
Antiguo 28-07-2006
Ade Ade is offline
Miembro
 
Registrado: jul 2006
Ubicación: Murcia
Posts: 70
Poder: 18
Ade Va por buen camino
Vale perfecto ese código es buenisimo, gracias xander, ahora viene mi pregunta;
yo lo estaba haciendo con un table y tan sólo quería buscar en ella un usuario con Locate, por ello:

if not ZTable1.Locate('usuario', Edit1.Text, []) then
showmessage('Usuario incorrecto.')

pero no funciona, y muestra un error tal que:
Starck overflow lei algo sobre ello, desbordamiento de pila podría ser, pero....
si solo uso locate ahi una vez porque ese error??


uso delphi 4 y los componentes zeos y Mysql
Responder Con Cita
  #13  
Antiguo 28-07-2006
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 23
vtdeleon Va por buen camino
Ztable está Activo? Antes de realizar el Locate (Ztable.Open)

Saludos
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #14  
Antiguo 28-07-2006
Ade Ade is offline
Miembro
 
Registrado: jul 2006
Ubicación: Murcia
Posts: 70
Poder: 18
Ade Va por buen camino
gracias vtdeleon por la anotacion, se me olvido el table.open.
las variables de tipo boolean como se definen en delphi??
trate de poner error:Bolean; pero boolean no aparece en negrita
Aki os dejo mi codigo:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
   cadena:String;
   error:String;
begin
     if Edit1.Text =''then
        begin
        cadena:='Debe introducir un Usuario';
        error:= 'TRUE';
        end;
     if Edit2.Text ='' then
          begin
          error:= 'TRUE';
          if cadena <>'' then
          cadena:= cadena +' y  una Contraseña.'
          else  cadena:='Debe introducir una Contraseña.';
          end;
     if error='TRUE'then
          MessageDlg(cadena,mterror,[mbOk],0)
     else
         begin
              ZTable1.Open;
              ZTable1.First;
              if not ZTable1.Locate('usuario', Edit1.Text, []) then
                 MessageDlg('Usuario incorrecto, Por favor verifique',mterror,[mbOk],0)
              else if not ZTable1.Locate('password', Edit2.Text, []) then
                      MessageDlg('Contraseña incorrecta, Por favor verifique',mterror,[mbOk],0)
                   else Form2.showmodal;//aqui tendria que destruirse??
                   ZTable1.Close;
         end
end;]
ahora me gustaría que el form1 desapareciera, probé a poner donde puse la linea de comentario form1.Fee;
y de echo se elimina pero resulta que al cerrar el otro form (form2) me sale un error,
si alguien pudiera ayudarme
Responder Con Cita
  #15  
Antiguo 28-07-2006
Ade Ade is offline
Miembro
 
Registrado: jul 2006
Ubicación: Murcia
Posts: 70
Poder: 18
Ade Va por buen camino
ok yo sóla ya encontre como eliminar el form del login ( form1) , realmente le puse la propiedad visible a false y en el siguiente form2 puse un boton para salir de la aplicacion cuyo codigo es form1.close;
solo necesito saber como declarar variables booleanas,
Responder Con Cita
  #16  
Antiguo 28-07-2006
Avatar de xander
xander xander is offline
Miembro
 
Registrado: jul 2006
Posts: 499
Poder: 18
xander Va por buen camino
Cita:
Empezado por Ade
Vale perfecto ese código es buenisimo, gracias xander
Solo hice el apunte para que alguien le diga al señor Manonsalva que si ese es su código para validar el acceso a sus aplicaciones tiene que componerlo porque cualquier aprendiz de hacker puede entrar fácilmente a sus sistemas.

Algún compadre, amigo, hermano o compatriota que le haga llegar el tip.
__________________
"Hey, nena, debe ser genial ser tú y verme a mí mismo..."
Responder Con Cita
  #17  
Antiguo 28-07-2006
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 23
vtdeleon Va por buen camino
SAludos

Cita:
Empezado por Ade
solo necesito saber como declarar variables booleanas,
Sencillo
Código Delphi [-]
Var
 Error:Boolean;
Cita:
Empezado por Ade
trate de poner error:Bolean; pero boolean no aparece en negrita
No todo tiene que aparecer en Negritas, Integer tampoco sale en negrita.

Cita:
Empezado por xander
Algún compadre, amigo, hermano o compatriota que le haga llegar el tip.
Cita:
Empezado por xander
Aguas con las inyecciones SQL!!!!... este código que pusiste es muy susceptible de ser franqueado si en el password uno escribe algo como:
0' or '1'='1
Creo que con eso se entiende y basta!, no?
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #18  
Antiguo 28-07-2006
Avatar de xander
xander xander is offline
Miembro
 
Registrado: jul 2006
Posts: 499
Poder: 18
xander Va por buen camino
Cita:
Empezado por vtdeleon
Creo que con eso se entiende y basta!, no?
Sip, bastará si se entera que se ha dicho esto en este hilo... no todo mundo revisa todos los hilos del foro ni lee una a una todas las respuestas, por eso decia que si alguien le conoce que le avise por si no revisa esto que aqui he puesto. siendo una cuestión tan grave como la seguridad de su aplicación me parece que vale la pena el comentario de que se le avise... en fin, engranado que es uno...
__________________
"Hey, nena, debe ser genial ser tú y verme a mí mismo..."
Responder Con Cita
  #19  
Antiguo 28-07-2006
Ade Ade is offline
Miembro
 
Registrado: jul 2006
Ubicación: Murcia
Posts: 70
Poder: 18
Ade Va por buen camino
gracias vtdeleon, pensaba que debia de salir en negrita como String, jejjjjejjje
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 18:46: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