Fórum ajuda para limitar as tentativas de login #532004

17/09/2015

0

bom dia

preciso de ajuda para limitar as tentativas de login pelo usuário

procedure TFrmLogin.BtnEntrarClick(Sender: TObject);

begin
FBQuery_Login.Open;
if ((FBQuery_Login.Locate('login', edtUsuario.Text, [])) and (FBQuery_Login.Locate('senha', edtSenha.Text, []))) then
begin
GuardaLogin:= EdtUsuario.Text;
FDQuery_Logado.Insert;
FDQuery_LogadoCOD_USUARIO.Value:= FBQuery_LoginCODIGO.Value;
FDQuery_LogadoSUCESSO.Value:= 'SIM';
FDQuery_Logado.Post;
FBQuery_Login.Close();
ModalResult:= mrOk;
end

else
if (edtUsuario.Text = '') or (edtSenha.Text= '') then // limitar as tentativas de tentar entrar sem colocar o usuário ou senha
begin
ShowMessage('Campo de usuário ou senha vazio !');
edtUsuario.SetFocus;
end

else // limitar as tentativas de entrar com senha ou usuário inválidos
begin
ShowMessage('Usuario ou senha inválido!');
GuardaLogin:= EdtUsuario.Text;
FDQuery_Logado.Insert;
FDQuery_LogadoSUCESSO.Value:= 'NÃO';
FDQuery_LogadoCOD_USUARIO.Value:= FBQuery_LoginCODIGO.Value;
FDQuery_Logado.Post;
edtSenha.Clear;
end;

end;




o código já roda perfeito, o detalhe é que da forma como está as tentativas de campos vazios e valores inválidos para (senha e usuário) não limitam o usuário que está digitando

eu quero que ao tentar 3 vezes para campos vazios e 3 vezes para valores inválidos seja exibida uma mensagem que o programa será encerrado e fim
Emanuel Gonçalves

Emanuel Gonçalves

Responder

Post mais votado

17/09/2015

Olá Emanuel, blz?

Você pode criar duas variáveis globais do tipo inteiro e ir acumulando as tentativas quando o usuário tentar entrar com os campos vazios ou errar usuário ou senha, no fim da procedure BtnEntrarClick você verifica se uma dessas variáveis é igual a 3, se sim, você exibe uma mensagem para o usuário e dá um application.terminate.

Qualquer coisa, pergunta ai... :)

t++

Luiz Freitas

Luiz Freitas
Responder

Gostei + 1

Mais Posts

17/09/2015

Emanuel Gonçalves

Olá Emanuel, blz?

Você pode criar duas variáveis globais do tipo inteiro e ir acumulando as tentativas quando o usuário tentar entrar com os campos vazios ou errar usuário ou senha, no fim da procedure BtnEntrarClick você verifica se uma dessas variáveis é igual a 3, se sim, você exibe uma mensagem para o usuário e dá um application.terminate.

Qualquer coisa, pergunta ai... :)

t++



obrigado Luiz


segue o código rodando

procedure TFrmLogin.BtnEntrarClick(Sender: TObject);



begin
FBQuery_Login.Open;
if ((FBQuery_Login.Locate('login', edtUsuario.Text, [])) and (FBQuery_Login.Locate('senha', edtSenha.Text, []))) then
begin
GuardaLogin:= EdtUsuario.Text;
FDQuery_Logado.Insert;
FDQuery_LogadoCOD_USUARIO.Value:= FBQuery_LoginCODIGO.Value;
FDQuery_LogadoSUCESSO.Value:= 'SIM';
FDQuery_Logado.Post;
FBQuery_Login.Close();
ModalResult:= mrOk;
end

else
if (edtUsuario.Text = '') and (edtSenha.Text= '') then
begin
ShowMessage('Campo de usuário ou senha vazio !');
edtUsuario.SetFocus;
Inc(tentativasVazio);

end

else
begin
inc (tentativasUsuario);
ShowMessage('Usuario ou senha inválido!');
GuardaLogin:= EdtUsuario.Text;
FDQuery_Logado.Insert;
FDQuery_LogadoSUCESSO.Value:= 'NÃO';
FDQuery_LogadoCOD_USUARIO.Value:= FBQuery_LoginCODIGO.Value;
FDQuery_Logado.Post;
edtSenha.Clear;
EdtSenha.SetFocus;
end;

if (tentativasVazio = 3)or(tentativasUsuario = 3) then
begin
ShowMessage('Essa apalicação será encerrada!');
Application.Terminate;
end;

end;
Responder

Gostei + 1

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar