Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Crear Un Login (https://www.clubdelphi.com/foros/showthread.php?t=90396)

Belen12 31-05-2016 03:53:00

Crear Un Login
 
hola buenas noches necesito un poco de ayuda y orietacion en este tema.Como dice el titulo tengo que crear un login.
El login ya lo cree utilizando el siguiente codigo:

Código Delphi [-]
begin
try
  fModulo.conexion.User := trim(eUsuario.Text);
  fModulo.conexion.Password := trim(eContrasenia.Text);
  fModulo.conexion.Connected := True ;
  fPrincipal.Caption := fprincipal.Caption + 'Usuario Conectado: ' +eUsuario.Text;
  except on Exception do
  begin
   Application.MessageBox('No se pudo establecer la conexion. Revise usuario o contraseña','Drugstore',MB_ICONERROR+MB_OK) ;
fLogin.ModalResult :=   mrNone;
  fLogin.eUsuario.SetFocus;
  end;
  end;
end;

el tema es que solo entra utilizando la contraseña root.Necesito ahora que se conecte a la tabla Cuentas de mi base de datos por el cual utilizo un tzTable asociado a esta tabla y su datasoucer. El tema es que no se como asociarlo e probado varios códigos que vi en foros pero no tuve resultados.
Desde ya muchas gracias

jeremiselxi 31-05-2016 14:54:38

Buen día
 
Buen día y Dios te bendiga mucho.

No sé cual base de datos estas utilizando, pero esto que quieres hacer del login, puedes hacerlo de dos maneras:

1) creas un usuario en la base de datos, luego das los permisos necesarios para la base de datos y de ahí en adelante, como ya tienes configurado cual tabla puede acceder mediante el componente tztable automáticamente podrá modificar esta tabla.

2) creas un usuario de esta aplicación: ejemplo si tu aplicación se llama ADM, creas un usuario ADMusers y le das acceso a la base de datos que contiene la tabla de cuentas. Luego creas una tabla llamada usuarios con los campos usuario, contraseña, nombre usuario etc. Creas un Tzconection y te conectas con este usuario al servidor de base de datos y a la base de datos. Posterior a esto, entonces usas un tzquery para hacer la conección a la tabla usuarios y si es el mismo que está en la base de datos, entonces entras al formulario de las cuentas, de lo contrario muestra un mensaje de que no puede acceder.


Un ejemplo de como te puedes conectar es:

Código Delphi [-]
//Usé un componente adoquery llamado "queryiniciarsession"

//botón conectar.


procedure TForm1_Form_Login_Principal.BitBtn1Click(Sender: TObject);
begin
if (txtusuario.Text='') or (txtpassword.Text='') then
    begin
      ShowMessage('Usuario y/o Contraseña Incorrecta');
    end
else
if (txtusuario.Text <>'') and (txtpassword.Text<>'') then
    begin

      form_tablas.queryiniciarsession.SQL.Clear;
      form_tablas.queryiniciarsession.SQL.add('select * from Usuarios where Usuario =:usu');
      form_tablas.queryiniciarsession.Parameters.ParamByName('usu').Value := txtusuario.Text;
      form_tablas.queryiniciarsession.Open;


      if (txtpassword.Text = form_tablas.queryiniciarsession.Fieldbyname('Password').Asstring) then
        begin

         

          // esto es para saber si el usuario tiene que cambiar la contraseña en el proximo inicio de sesión. 
          if form_tablas.queryiniciarsession.Fieldbyname('CambioProximaSession').Asstring = 'Si' then
           begin
               showmessage('Debes cambiar tu contraseña');
               form_cambiar_contrasena.show
            end
          else
          // esto es para saber si el usuario está bloqueado o inactivo.
          if form_tablas.queryiniciarsession.Fieldbyname('Estado').Asstring = 'Inactivo' then
           begin
               showmessage('Favor contactar al Administrador del Sistema ya que este usuario está inactivo.');
            end

          else
            begin
           // Si todo está bien muestra bienvenida porque todo está bien.
          ShowMessage('Bienvenido(a) ' + form_tablas.queryiniciarsession.Fieldbyname('Nombre_Completo').Asstring);
          formPrincipal.LabeNombredelUsuario.Caption := form_tablas.queryiniciarsession.Fieldbyname('Nombre_Completo').Asstring;
          formPrincipal.Label_posicion.Caption := form_tablas.queryiniciarsession.Fieldbyname('Posicion').Asstring;
          txtpassword.Text := '';



          //este es el formulario de administración.
          formPrincipal.Show;

           //este es el formulario del login
          Form1_Form_Login_Principal.Visible:= false;


            end


        end
      else
      begin
      ShowMessage('Usuario y/o Contraseña Incorrecta');
      end
    end;

end;

Cualquier inquietud o duda me dejas saber.

Belen12 31-05-2016 23:23:25

Gracias
 
Cita:

Empezado por jeremiselxi (Mensaje 505802)
Buen día y Dios te bendiga mucho.

No sé cual base de datos estas utilizando, pero esto que quieres hacer del login, puedes hacerlo de dos maneras:

1) creas un usuario en la base de datos, luego das los permisos necesarios para la base de datos y de ahí en adelante, como ya tienes configurado cual tabla puede acceder mediante el componente tztable automáticamente podrá modificar esta tabla.

2) creas un usuario de esta aplicación: ejemplo si tu aplicación se llama ADM, creas un usuario ADMusers y le das acceso a la base de datos que contiene la tabla de cuentas. Luego creas una tabla llamada usuarios con los campos usuario, contraseña, nombre usuario etc. Creas un Tzconection y te conectas con este usuario al servidor de base de datos y a la base de datos. Posterior a esto, entonces usas un tzquery para hacer la conección a la tabla usuarios y si es el mismo que está en la base de datos, entonces entras al formulario de las cuentas, de lo contrario muestra un mensaje de que no puede acceder.


Un ejemplo de como te puedes conectar es:

Código Delphi [-]
//Usé un componente adoquery llamado "queryiniciarsession"

//botón conectar.


procedure TForm1_Form_Login_Principal.BitBtn1Click(Sender: TObject);
begin
if (txtusuario.Text='') or (txtpassword.Text='') then
    begin
      ShowMessage('Usuario y/o Contraseña Incorrecta');
    end
else
if (txtusuario.Text <>'') and (txtpassword.Text<>'') then
    begin

      form_tablas.queryiniciarsession.SQL.Clear;
      form_tablas.queryiniciarsession.SQL.add('select * from Usuarios where Usuario =:usu');
      form_tablas.queryiniciarsession.Parameters.ParamByName('usu').Value := txtusuario.Text;
      form_tablas.queryiniciarsession.Open;


      if (txtpassword.Text = form_tablas.queryiniciarsession.Fieldbyname('Password').Asstring) then
        begin

         

          // esto es para saber si el usuario tiene que cambiar la contraseña en el proximo inicio de sesión. 
          if form_tablas.queryiniciarsession.Fieldbyname('CambioProximaSession').Asstring = 'Si' then
           begin
               showmessage('Debes cambiar tu contraseña');
               form_cambiar_contrasena.show
            end
          else
          // esto es para saber si el usuario está bloqueado o inactivo.
          if form_tablas.queryiniciarsession.Fieldbyname('Estado').Asstring = 'Inactivo' then
           begin
               showmessage('Favor contactar al Administrador del Sistema ya que este usuario está inactivo.');
            end

          else
            begin
           // Si todo está bien muestra bienvenida porque todo está bien.
          ShowMessage('Bienvenido(a) ' + form_tablas.queryiniciarsession.Fieldbyname('Nombre_Completo').Asstring);
          formPrincipal.LabeNombredelUsuario.Caption := form_tablas.queryiniciarsession.Fieldbyname('Nombre_Completo').Asstring;
          formPrincipal.Label_posicion.Caption := form_tablas.queryiniciarsession.Fieldbyname('Posicion').Asstring;
          txtpassword.Text := '';



          //este es el formulario de administración.
          formPrincipal.Show;

           //este es el formulario del login
          Form1_Form_Login_Principal.Visible:= false;


            end


        end
      else
      begin
      ShowMessage('Usuario y/o Contraseña Incorrecta');
      end
    end;

end;

Cualquier inquietud o duda me dejas saber.

Hola Buenas tardes gracias por responder mira ya lo habia logrado luego de investigar un poco mas y jugar con el codigo me quedo de la siguiente forma

Código Delphi [-]
procedure TfLogin.bAceptarClick(Sender: TObject);
begin
fModulo.qCuentas.close;
fModulo.qCuentas.ParamByName('usuario').Value:= eUsuario.Text;
fModulo.qCuentas.ParamByName('contrasenia').Value:= eContrasenia.Text;
fPrincipal.Caption := fprincipal.Caption + 'Usuario Conectado: ' +eUsuario.Text;
 fModulo.qCuentas.Open;
 if fmodulo.qCuentas.IsEmpty then
 begin
     Application.MessageBox('No se pudo establecer la conexion. Revise usuario o contraseña','Drugstore',MB_ICONERROR+MB_OK) ;
     fLogin.ModalResult :=   mrNone;
     fLogin.eUsuario.SetFocus;
 end;
end;

me gusto mucho tu codigo en especial la parte que comprueba si el usuario esta inactivo muchas gracias mejorare el mio


La franja horaria es GMT +2. Ahora son las 16:41:50.

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