Ir para conteúdo
Fórum Script Brasil
  • 0

Sistema com Login e Senha


Arlon

Pergunta

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 para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...