Public Class login
    Dim conn As MySqlConnection
    Dim Reader As MySqlDataReader
    Dim cmd As MySqlCommand
    Dim audit As String
    Dim faudit As String
    Dim connectiontime, active As String
    Dim attempts As String
    Dim server As String = "server=127.0.0.1;user=root;database=spilibrary"
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btnLogin.Click
        Dim statement As String
        Dim Userrole As String
        conn = New MySqlConnection
        conn.ConnectionString = server
        conn.Open()
        statement = "select * from user where Username = '" & username.Text & "' and Password = BINARY '" & password.Text & "'"
        cmd = New MySqlCommand(statement, conn)
        Reader = cmd.ExecuteReader

        Try
            Dim found As Boolean
            While Reader.Read
                found = True
                Userrole = Reader.GetString("Userrole")
                connectiontime = Reader.GetString("connectiontime")
                attempts = Reader.GetString("attempts")
                If Userrole = "Administrator" And connectiontime = "Now" Or connectiontime <= TimeOfDay.ToString("HH:mm") Then
                    MsgBox("Welcome Admin", MsgBoxStyle.Information, "System message")
                    mainform.Show()
                    mainform.Maintenancebtn.Enabled = True
                    mainform.level1.Text = Userrole
                    'Me.Close()
                    Reader.Close()
                    cmd = New MySqlCommand("update user set attempts = '" & "0" & "', connectiontime='" & "Now" & "' where Username='" & username.Text & "'", conn)
                    Reader = cmd.ExecuteReader
                ElseIf Userrole = "Librarian" And connectiontime = "Now" Or connectiontime <= TimeOfDay.ToString("HH:mm:ss") Then
                    MsgBox("Welcome Librarian", MsgBoxStyle.Information, "System Message")
                    'mainform.Maintenancebtn.Enabled = False
                    mainform.Show()
                    mainform.level1.Text = Userrole
                    ' Me.Close()
                    'OPAC.show()
                    Reader.Close()
                    cmd = New MySqlCommand("update user set attempts ='" & "0" & "', connectiontime ='" & "Now" & "' where Username='" & username.Text & "'", conn)
                    Reader = cmd.ExecuteReader
                ElseIf Userrole = "Administrator" And connectiontime <> "Now" And connectiontime >= TimeOfDay.ToString("HH:mm:ss") Then
                    MsgBox("You're Account has been blocked because of multiple failed attempts", vbCritical, "System Message")
                ElseIf Userrole = "Librarian" And connectiontime <> "Now" And connectiontime >= TimeOfDay.ToString("HH:mm:ss") Then
                    MsgBox("Your Account has been blocked because of multiple failed attempts", vbCritical, "System Message")
                Else
                    MsgBox("You're Account whas been blocked because of multiple failed attempts", vbCritical, "System Message")
                End If

Quelqu'un s'il vous plaît aidez-moi avec cela .. lorsque j'appuie sur le bouton de connexion, il lit toujours la première instruction if-else que j'entre, qui est le rôle d'utilisateur = "administrateur", même si je me connecte à mon rôle d'utilisateur de bibliothécaire. quand j'essaie de les changer, il lit le rôle d'utilisateur du bibliothécaire et non l'administrateur même si je me connecte à mon rôle d'administrateur .. dans ma base de données, ils sont déclarés corrects. alors c'est peut-être le code. Merci

-1
glendon nolo 18 févr. 2020 à 17:20

1 réponse

Meilleure réponse

Essayez d'utiliser des parenthèses dans votre état pour le rendre plus clair. Comme ça:

If Userrole = "Administrator" AndAlso (connectiontime = "Now" OrElse connectiontime <= TimeOfDay.ToString("HH:mm")) Then

Dans votre code, cela correspondrait également si

connectiontime <= TimeOfDay.ToString("HH:mm")
0
Jon Roberts 18 févr. 2020 à 15:06