Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   validar dos campos (password y usuario) (https://www.clubdelphi.com/foros/showthread.php?t=24987)

Yessy 08-09-2005 14:04:43

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

Sirkius 08-09-2005 14:09:36

Bueno, pero como lo haces??

EDITO: o todavia no has empezado? no lo entendí bien...

DarKraZY 08-09-2005 16:03:08

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.

Maury Manosalva 09-09-2005 17:49:45

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.

el_barto 09-09-2005 18:11:39

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

Yessy 11-09-2005 17:57:42

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

vtdeleon 11-09-2005 18:12:00

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

Yessy 11-09-2005 19:23:55

Hola
Gracias a todos por la ayuda.
Ya entendi y la aplicacion funciona muy bien :)

Ade 28-07-2006 03:09:21

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

xander 28-07-2006 03:56:02

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...

Ade 28-07-2006 15:41:05

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.....

Ade 28-07-2006 16:37:08

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

vtdeleon 28-07-2006 17:10:01

Ztable está Activo? Antes de realizar el Locate (Ztable.Open)

Saludos

Ade 28-07-2006 18:07:36

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

Ade 28-07-2006 18:15:21

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,

xander 28-07-2006 19:39:24

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.

vtdeleon 28-07-2006 21:33:48

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?

xander 28-07-2006 21:57:14

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...:cool:

Ade 28-07-2006 21:59:15

gracias vtdeleon, pensaba que debia de salir en negrita como String, jejjjjejjje


La franja horaria es GMT +2. Ahora son las 02:20:34.

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