BLOQUEIO SENHA APÓS 5 TENTATIVAS
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
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.
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.
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?
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