如何在vb6中尝试3次失败后锁定系统登录?

时间:2010-01-30 15:04:12

标签: vb6

我已经进行了安全登录,如果失败3次,程序将被终止。但是,我想建立一个锁定系统的安全登录,而管理员则需要登录。

这是我的代码:

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

2 个答案:

答案 0 :(得分:1)

您需要在某处存储一个额外的标志以指示登录被拒绝,然后在尝试登录之前检查此标志。您还需要存储帐户类型并检查是否允许该帐户登录,即使设置了此标志。

答案 1 :(得分:0)

您想要锁定整个PC还是正在使用的用户名?

在“IsLocked”的记录集中添加一个新列,并在3次登录后将其设置为true(确保为管理员提供某种方式将其清除掉)。

一旦使用了用户名,请在密码之前先检查“IsLocked”,然后立即将其打开并附上相应的消息。

此外,请确保阻止在管理员用户名上设置IsLocked。 :)