2010-01-30 2 views
0

Я уже сделал учетную запись безопасности, если в случае неудачи 3 раза программа будет прервана. Тем не менее, я хочу сделать логин безопасности, который заблокирует систему, и администратор должен будет вместо этого войти в систему.Как заблокировать системный логин после 3 неудачных попыток в vb6?

Вот мой код:

Dim nCnt As Integer 
Dim nCnt2 As String 

Private Sub cmdOk_Click() 

    nUsername = "username ='" & txtUsername.Text & "'" 
    npassword = txtPassword.Text 

    If nCnt < 2 Then 
     With adoLog.Recordset 
      .MoveFirst 
      .Find nUsername 
      If .EOF Then 
       MsgBox "Access Denied" & vbCrLf & "Please try again." & vbCrLf & vbCrLf & "Warning: You only have " & nCnt2 & " attempt.", vbCritical, "Terror""" 
       nCnt = nCnt + 1 
       nCnt2 = nCnt2 - 1 
       Label7.Caption = nCnt2 
       txtUsername.Text = "" 
       txtPassword.Text = "" 
       txtUsername.SetFocus 
      Else 
       If adoLog.Recordset.Fields("password").Value = npassword And adoLog.Recordset.Fields("flag").Value = 1 Then 
        Call Change_Flag 
        MsgBox "Access Granted" 
        cUser = adoLog.Recordset.Fields("name").Value 
        cPosition = adoLog.Recordset.Fields("position").Value 

        With adoHistory_Login.Recordset 
         .AddNew 
         .Fields("name").Value = cUser 
         .Fields("position").Value = cPosition 
         .Fields("time_login").Value = Time() 
         .Fields("date_login").Value = Date 
         .Fields("date_logout").Value = Date 
         .Update 
         Me.Refresh 
         frmMain.Show 
         frmMain.SetFocus 
        End With 

        Unload Me 
        txtUsername.Text = "" 
        txtPassword.Text = "" 
       Else 
        MsgBox "Access Denied" & vbCrLf & "Please try again." & vbCrLf & vbCrLf & "Warning: You only have " & nCnt2 & " attempt.", vbCritical, "Terror""" 
        nCnt = nCnt + 1 
        nCnt2 = nCnt2 - 1 
        Label7.Caption = nCnt2 
        txtUsername.Text = "" 
        txtPassword.Text = "" 
        txtUsername.SetFocus 
       End If 
      End If 
     End With 
    Else 
     Call block 
     End 
    End If 

End Sub 

Private Sub Change_Flag() 

    With adoLog.Recordset 
     .Fields("flag").Value = 0 
    End With 

End Sub 

Private Sub block() 

    MsgBox "You already used all attempt." & vbCrLf & "This will terminate the application.", vbCritical, "Terror" 

End Sub 

Private Sub Form_Initialize() 

    cmdOK.Enabled = False 
    txtPassword.Enabled = False 
    cmdRegister.Visible = False 

    If adoLog.Recordset.RecordCount <> 0 Then 
     cmdOK.Enabled = False 
     txtPassword.Enabled = False 
     txtUsername.Enabled = True 
    Else 
     cmdRegister.Visible = True 
     txtUsername.Enabled = False 
    End If 

End Sub 

Private Sub Form_Load() 

    nCnt2 = 2 
    Label7.Caption = nCnt2 

End Sub 
+0

Hmm..One попытка прочитать ваш код, я закончил .. –

+1

Шутки в сторону, пожалуйста, улучшите форматирование своего кода –

ответ

1

Вам нужно будет хранить дополнительный флаг где-то, чтобы указать, что Логин запрещен, а затем проверить этот флаг перед попыткой входа в систему. Вам также необходимо будет сохранить тип учетной записи и проверить, разрешено ли учетной записи регистрироваться, даже если этот флаг установлен.

0

Вы хотите заблокировать полный компьютер или имя пользователя, которое используется?

Добавить новый столбец в набор записей для «IsLocked» и получить его значение true после трех логинов (убедитесь, что вы предоставили какой-то способ для администратора, чтобы очистить его обратно).

Как только используется имя пользователя, сначала отметьте «IsLocked» перед паролем и немедленно выпустите его с соответствующим сообщением.

Кроме того, убедитесь, что вы запретили устанавливать IsLocked на имя пользователя admin. :)

Смежные вопросы