BLOQUEIO SENHA APÓS 5 TENTATIVAS

MILTONSILVA94 10/09/2016 03:06:38
#466702
Boa noite,

Criei a rotina que conta nº de tentativas do usuário ao logar no sistema, caso erre a senha por cinco vezes o sistema bloqueia o usuário. Porém meu código não está levando em conta o código de usuário(login de acesso), ou seja, sempre colocando usuários diferentes nas cinco tentativas, na quinta tentativa o sistema irá bloquear o usuário que foi tentado por último.
Alguém consegue ajudar?

--variável
Private fiContador As Integer

--código
Private Sub cmdEntrar_Click()

If txtSenha.Text <> lTBUsuarios([Ô]senha[Ô]) Then
fiContador = fiContador + 1
If fiContador > 5 Then
MensagemErro [Ô]O usuário excedeu o limite de tentativas, o cadastro deverá ser verificado.[Ô]
txtLogin.SetFocus

lsql = [Ô]UPDATE USUARIOS SET status = [ô][Ô] & [Ô]INATIVO[Ô] & [Ô][ô] WHERE id_usuario = [Ô] & txtLogin.Text & [Ô][Ô]
gBDSistemaIntegrado.Execute lsql
Else
MensagemErro [Ô]Senha inválida. Tentativa [Ô] & fiContador & [Ô] de 5.[Ô]
txtSenha.Text = [Ô][Ô]
txtSenha.SetFocus
End If
Exit Sub
End If

End Sub
KERPLUNK 10/09/2016 03:13:41
#466704
Simples, crie um campo [Ô]contador[Ô] na tabela de login. Cada vez que errar, incremente o valor dele. Quando o login for certo, zere o contador.
JCM0867 10/09/2016 23:20:05
#466719
E se tiver que bloquear totalmente a senha basta mudar a senha armazenada no banco depois das 5 tentativas
MARCELO.TREZE 12/09/2016 09:31:22
#466767

zere o contador

If txtSenha.Text <> lTBUsuarios([Ô]senha[Ô]) Then
fiContador = fiContador + 1
If fiContador > 5 Then
MensagemErro [Ô]O usuário excedeu o limite de tentativas, o cadastro deverá ser verificado.[Ô]
txtLogin.SetFocus

lsql = [Ô]UPDATE USUARIOS SET status = [ô][Ô] & [Ô]INATIVO[Ô] & [Ô][ô] WHERE id_usuario = [Ô] & txtLogin.Text & [Ô][Ô]
gBDSistemaIntegrado.Execute lsql
[txt-color=#e80000]fiContador =0[/txt-color]
Else
MensagemErro [Ô]Senha inválida. Tentativa [Ô] & fiContador & [Ô] de 5.[Ô]
txtSenha.Text = [Ô][Ô]
txtSenha.SetFocus
End If
Exit Sub
[txt-color=#e80000]else
fiContador = 0[/txt-color]

End If

ps: siga a dica dos colegas coloque um campo tentativas na mesma tabela de login, e salve a contagem nele, assim não correrá o risco de ao colocar outra senha não continuar a contagem.
MILTONSILVA94 14/09/2016 06:35:19
#466895
Citação:

:
Simples, crie um campo [Ô]contador[Ô] na tabela de login. Cada vez que errar, incremente o valor dele. Quando o login for certo, zere o contador.


Obrigado.

Citação:

:

zere o contador

If txtSenha.Text <> lTBUsuarios([Ô]senha[Ô]) Then
fiContador = fiContador + 1
If fiContador > 5 Then
MensagemErro [Ô]O usuário excedeu o limite de tentativas, o cadastro deverá ser verificado.[Ô]
txtLogin.SetFocus

lsql = [Ô]UPDATE USUARIOS SET status = [ô][Ô] & [Ô]INATIVO[Ô] & [Ô][ô] WHERE id_usuario = [Ô] & txtLogin.Text & [Ô][Ô]
gBDSistemaIntegrado.Execute lsql
[txt-color=#e80000]fiContador =0[/txt-color]
Else
MensagemErro [Ô]Senha inválida. Tentativa [Ô] & fiContador & [Ô] de 5.[Ô]
txtSenha.Text = [Ô][Ô]
txtSenha.SetFocus
End If
Exit Sub
[txt-color=#e80000]else
fiContador = 0[/txt-color]

End If

ps: siga a dica dos colegas coloque um campo tentativas na mesma tabela de login, e salve a contagem nele, assim não correrá o risco de ao colocar outra senha não continuar a contagem.


Obrigado Marcelo.
MILTONSILVA94 29/10/2016 23:38:25
#468570
Tinha feito algumas tentativas e não consegui ainda resolver essa questão kkkk
Coloquei na tabela [ô]usuarios[ô] a coluna [ô]tentativa[ô], porém ele fica contando sempre + 1 mesmo mudando o login do usuário.

--variável
Private fiContador As Integer

--código
Private Sub cmdEntrar_Click()

If txtSenha.Text <> lTBUsuarios([Ô]senha[Ô]) Then [ô]Rotina que conta as tentativas de login
fiContador = fiContador + 1
If lTBUsuarios([Ô]tentativa[Ô]) >= 5 Then
MensagemErro [Ô]O usuário foi inativado.[Ô]
txtLogin.SetFocus

lsql = [Ô]UPDATE USUARIOS SET status = [ô][Ô] & [Ô]INATIVO[Ô] & [Ô][ô], tentativa = [ô][Ô] & [Ô]0[Ô] & [Ô][ô] WHERE id_usuario = [Ô] & txtLogin.Text & [Ô][Ô]
gBDSistemaIntegrado.Execute lsql
fiContador = 0
Else
lsql = [Ô]UPDATE USUARIOS SET tentativa = [ô][Ô] & fiContador & [Ô][ô] WHERE id_usuario = [Ô] & txtLogin.Text & [Ô][Ô]
gBDSistemaIntegrado.Execute lsql

[ô]MsgBox lsql

MensagemErro [Ô]Senha inválida. Tentativa [Ô] & fiContador & [Ô] de 5.[Ô]
txtSenha.Text = [Ô][Ô]
txtSenha.SetFocus

Exit Sub
End If
Exit Sub
Else
fiContador = 0
End If

Podem me ajudar?
MILTONSILVA94 30/10/2016 23:54:31
#468598
Conclui:


If txtSenha.Text <> lTBUsuarios([Ô]senha[Ô]) Then [ô]Rotina que conta as tentativas de login
[ô]lsql = ([Ô]SELECT tentativa FROM usuarios WHERE id_usuario = [Ô] & txtLogin.Text)

gsFiContador = lTBUsuarios.Fields([Ô]tentativa[Ô]).Value [ô]Rotina que guarda variável [ô]tentativa[ô] do usuário
gsFiContador = gsFiContador + 1

[ô]MsgBox gsFiContador

If lTBUsuarios([Ô]tentativa[Ô]) >= 5 Then
MensagemErro [Ô]O usuário excedeu número de tentativas e está inativo. Contate o administrador do sistema.[Ô]
txtLogin.SetFocus

lsql = [Ô]UPDATE USUARIOS SET status = [ô][Ô] & [Ô]INATIVO[Ô] & [Ô][ô], tentativa = [ô][Ô] & [Ô]0[Ô] & [Ô][ô] WHERE id_usuario = [Ô] & txtLogin.Text & [Ô][Ô]
gBDSistemaIntegrado.Execute lsql
Else
lsql = [Ô]UPDATE USUARIOS SET tentativa = [ô][Ô] & gsFiContador & [Ô][ô] WHERE id_usuario = [Ô] & txtLogin.Text & [Ô][Ô]
gBDSistemaIntegrado.Execute lsql

MensagemErro [Ô]Senha inválida. Tentativa [Ô] & gsFiContador & [Ô] de 5.[Ô]
txtSenha.Text = [Ô][Ô]
txtSenha.SetFocus
Exit Sub
End If
Exit Sub
End If
Tópico encerrado , respostas não são mais permitidas