2014-04-08 2 views
0

여기에 성가신 문제가 있습니다.이 문제를 해결할 수 없습니다. 내 문제는 내 로그인을 확인할 수 없다는 것입니다. 어딘가에 논리적 인 오류가 있습니다. try-catch 블록이 '잡기'가 아니며, 심지어 데이터베이스 열기와 DB.Close 사이에 중단 점을 사용하여 문제가 있는지 확인하기 때문입니다. 다음은 몇 가지 화면입니다 : 그래서MySQL 데이터베이스가있는 VB.NET 로그인

내가 Gigel 사용자를 입력하면 자신의 비밀번호 123 (이 암호화되어있어) 내 IF에서 내 잘못된 실행을 얻을 수는

오류 ... 누구나 '뭔가 잘못 거기있어?'

PhpMyAdmin try-catch-block error here

Imports MySql.Data 
Imports MySql.Data.MySqlClient 
Imports System.Security.Cryptography 




Public Class Form1 

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 

     Me.Close() 
    End Sub 

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     Dim MySQLConnection As New MySqlConnection("Server = localhost;Database = users; Uid=root; Pwd = password ") 

     Dim HashedPass As String = "" 

     'Converts the Password into bytes, computes the hash of those bytes, and then converts them into a Base64 string 

     Using MD5hash As MD5 = MD5.Create() 

      System.Convert.ToBase64String(MD5hash.ComputeHash(System.Text.Encoding.ASCII.GetBytes(TextBox2.Text))) 

     End Using 


     'Counter 

     Dim SqlQuery As String = "SELECT COUNT(*) From users1 WHERE username = @Username AND password = @Password; " 

     MySQLConnection.Open() 

     Dim Command As New MySqlCommand(SqlQuery, MySQLConnection) 

     'Sanitising parameters 

     Command.Parameters.Add(New MySqlParameter("@Username", TextBox1.Text)) 
     Command.Parameters.Add(New MySqlParameter("@Password", HashedPass)) 


     'checker 
     If Command.ExecuteScalar() = 1 Then 
      MsgBox("Thanks for logging in") 
      Me.Hide() 
     Else 
      MsgBox("Something's wrong down there") 
     End If 


     MySQLConnection.Close() 
    End Sub 
End Class 
+0

'당신이 그렇게'Command.ExecuteScalar'이 반환합니다 매개 변수로 추가 할 때 HashedPass'가 비어'를 0 ' – equisde

+0

나는 그것을 수정했지만 동일한 논리적 오류가 있습니다. 해시 섹션에 주석을 달고 매개 변수로 직접 TextBox2.text (암호를 입력하는 텍스트 상자)를 사용하면 전체 암호화 된 코드를 입력하여 작동합니다. 내 오류 어딘가에 해시 영역 주위에, 입력 해줘서 고마워, 그 해시 뭔가 = lol 함께 있어야합니다. – ExtremeSwat

+0

중단 점을'If' 바로 위에 놓고'Command.CommandText'의 값을 확인하십시오. 그 값은 실행될 SQL 문입니다 – equisde

답변

1

이 시도 :

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 

Try 

    Dim MySQLConnection As New MySqlConnection("Server = localhost;Database = users; Uid=root; Pwd = password ") 

    Dim SqlQuery As String = "SELECT COUNT(*) From users1 WHERE username = @Username AND password = MD5(@Password); " 

    MySQLConnection.Open() 

    Dim Command As New MySqlCommand(SqlQuery, MySQLConnection) 

    Command.Parameters.Add(New MySqlParameter("@Username", TextBox1.Text)) 
    Command.Parameters.Add(New MySqlParameter("@Password", TextBox2.Text)) 

    If Command.ExecuteScalar() = 1 Then 
     MsgBox("Thanks for logging in")    
    Else 
     MsgBox("Invalid username or password") 
    End If 

    MySQLConnection.Close() 

Catch ex as Exception 

    MsgBox(ex.Message) 

End Sub 
+0

답변 해 주셔서 감사합니다. BIG UP – ExtremeSwat

+0

도와 드리겠습니다! :) – equisde

관련 문제