Jump to content
Fórum Script Brasil
  • 0

Sistema com Login e Senha


Arlon
 Share

Question

Vou meter uma ajudinha pra galera aki tb.

Bem, nesse tempo em que estive presente aki no fórum percebi que muita gente pergunta como fazer um sistema com login e senha. Eu fiz um aqui bem legalzinho e relativamnente pouco complexo de se entender a lógica. Agora uma pequena explicação:

Crie uma tabela no seu banco de dados com apenas 3 campos: Login, Senha e Cargo (todos os três alfanuméricos, podendo qualquer um ser chave primária).

No DataModule ou no próprio formulário de senha coloque um TTable, um TDataSource e um TQuery. No formulário de senha ponha 2 TEdits e um TButtom (BtnOK) O código está listado abaixo.

procedure TFrmAcesso.BtnOKClick(Sender: TObject);
Var Login, Senha, Tipo : String;
begin
   DM.QrAcesso.Close;
   DM.QrAcesso.SQL.Text := 'Select * from Acesso '+
   'Where Login =:LoginBusca and Senha =:SenhaBusca';
   DM.QrAcesso.Params[0].AsString := (Edit1.Text);
   DM.QrAcesso.Params[1].AsString := (Edit2.Text);
   DM.QrAcesso.Open;
   Login := DM.QrAcessoLogin.Value;
   Senha := DM.QrAcessoSenha.Value;
   Tipo := DM.QrAcessoTipo_Usuario.Value;
   if (Login = Edit1.Text) and (Senha = Edit2.Text) and (Tipo = 'Administrador')then begin
      {Nesse caso é um Administrador que está utilizando o sistema, então habilite todas as funções do sistema} 
      FrmPrincipal.ShowModal;
   end;
   if ( Login = Edit1.Text) and (Senha = Edit2.Text) and (Tipo = 'Usuário')then begin
      {Nesse caso é um Usuário que está acessando o sistema, então desabilite tudo que você não quer que ele tenha acesso, como determinados formulários, botões, consultas, entre outros}
      FrmPrincipal.ShowModal;
   end;
   if (Login <> Edit1.Text) or (Senha <> Edit2.Text) then begin
      ShowMessage('Login ou Senha inválidos.');
      Edit1.Clear;
      Edit2.Clear;
      Edit1.SetFocus;
   end;
   end;

Uma coisa legal dessa rotina é que permite que o programador possa implementar no código o que é permitido fazer por um Usuário do sistema e o Administrador do mesmo.

Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0
Vou meter uma ajudinha pra galera aki tb.

Bem, nesse tempo em que estive presente aki no fórum percebi que muita gente pergunta como fazer um sistema com login e senha. Eu fiz um aqui bem legalzinho e relativamnente pouco complexo de se entender a lógica. Agora uma pequena explicação:

Crie uma tabela no seu banco de dados com apenas 3 campos: Login, Senha e Cargo (todos os três alfanuméricos, podendo qualquer um ser chave primária).

No DataModule ou no próprio formulário de senha coloque um TTable, um TDataSource e um TQuery. No formulário de senha ponha 2 TEdits e um TButtom (BtnOK) O código está listado abaixo.

procedure TFrmAcesso.BtnOKClick(Sender: TObject);
Var Login, Senha, Tipo : String;
begin
   DM.QrAcesso.Close;
   DM.QrAcesso.SQL.Text := 'Select * from Acesso '+
   'Where Login =:LoginBusca and Senha =:SenhaBusca';
   DM.QrAcesso.Params[0].AsString := (Edit1.Text);
   DM.QrAcesso.Params[1].AsString := (Edit2.Text);
   DM.QrAcesso.Open;
   Login := DM.QrAcessoLogin.Value;
   Senha := DM.QrAcessoSenha.Value;
   Tipo := DM.QrAcessoTipo_Usuario.Value;
   if (Login = Edit1.Text) and (Senha = Edit2.Text) and (Tipo = 'Administrador')then begin
      {Nesse caso é um Administrador que está utilizando o sistema, então habilite todas as funções do sistema} 
      FrmPrincipal.ShowModal;
   end;
   if ( Login = Edit1.Text) and (Senha = Edit2.Text) and (Tipo = 'Usuário')then begin
      {Nesse caso é um Usuário que está acessando o sistema, então desabilite tudo que você não quer que ele tenha acesso, como determinados formulários, botões, consultas, entre outros}
      FrmPrincipal.ShowModal;
   end;
   if (Login <> Edit1.Text) or (Senha <> Edit2.Text) then begin
      ShowMessage('Login ou Senha inválidos.');
      Edit1.Clear;
      Edit2.Clear;
      Edit1.SetFocus;
   end;
   end;

Uma coisa legal dessa rotina é que permite que o programador possa implementar no código o que é permitido fazer por um Usuário do sistema e o Administrador do mesmo.

Pegando um gancho na dica do Arlon, gostaria de compartilhar um artigo que li há algum tempo com relação a segurança quando da utilização de rotinas de loggins como esta (observar o comando SELECT). Devemos nos lembrar deste detalhe, vejam no link: http://www.activedelphi.com.br/modules.php...order=0&thold=0

[]s

Micheus

p.s. desculpem-me se não coloquei o comentário da forma correta unsure.gif

Link to comment
Share on other sites

  • 0
Guest Visitante

olá, posso estar enganado, mais isso não vai funcionar se o nome de usuario não existir... <_<

DM.QrAcesso.Close;

DM.QrAcesso.SQL.Text := 'Select * from Acesso '+

'Where Login = :LoginBusca and Senha = :SenhaBusca';

{acima seleciona tudo do bd aonde o login é igual o campo LoginBusca (edit1.text), mais se não existir o nome de usuario não vai selecionar nada}

DM.QrAcesso.Params[0].AsString := (Edit1.Text);

DM.QrAcesso.Params[1].AsString := (Edit2.Text);

DM.QrAcesso.Open;

Login := DM.QrAcessoLogin.Value;

Senha := DM.QrAcessoSenha.Value;

{e se não tiver nada selecionado vai definir todas as variavéis como Null... ou seja... não funciona....}

Link to comment
Share on other sites

  • 0
Guest Dennis Alves
olá, posso estar enganado, mais isso não vai funcionar se o nome de usuario não existir... <_<

DM.QrAcesso.Close;

DM.QrAcesso.SQL.Text := 'Select * from Acesso '+

'Where Login = :LoginBusca and Senha = :SenhaBusca';

{acima seleciona tudo do bd aonde o login é igual o campo LoginBusca (edit1.text), mais se não existir o nome de usuario não vai selecionar nada}

DM.QrAcesso.Params[0].AsString := (Edit1.Text);

DM.QrAcesso.Params[1].AsString := (Edit2.Text);

DM.QrAcesso.Open;

Login := DM.QrAcessoLogin.Value;

Senha := DM.QrAcessoSenha.Value;

{e se não tiver nada selecionado vai definir todas as variavéis como Null... ou seja... não funciona....}

tente colocar um try... except

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      151k
    • Total Posts
      649k
×
×
  • Create New...