코드에서 무엇이 잘못 되었습니까?VB.NET - ASP.NET - 잘못된 사용자 이름/암호 (유효성 검사)
사용자 이름과 암호가 일치하지 않으면 lbl 텍스트에 "잘못된 사용자 이름/암호"가 표시됩니다.
코드 :
대신catch
의
Protected Sub btnLogin_Click(sender As Object, e As System.EventArgs) Handles btnLogin.Click
Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Brian\Documents\Visual Studio 2010\WebSites\PetLandia\App_Data\db.mdb")
Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM [User] where Username=? and Password=?", conn)
cmd.Parameters.AddWithValue("@Username", txtLogin.Text)
cmd.Parameters.AddWithValue("@Password", txtPassword.Text)
If (String.IsNullOrEmpty(txtLogin.Text)) Or (String.IsNullOrEmpty(txtPassword.Text)) Then
lblLoginError.Text = "One or more fields are empty. Please fill in all the fields"
lblLoginError.Visible = True
Else
conn.Open()
Dim read As OleDbDataReader = cmd.ExecuteReader()
Try
If read.HasRows Then
While read.Read()
If txtLogin.Text = read.Item("username").ToString And txtPassword.Text = read.Item("password").ToString Then
Dim tUsername As String = read.Item("Username").ToString
Session("Username") = tUsername
Response.Redirect("Default.aspx")
End If
End While
End If
read.Close()
Catch ex As Exception
Response.Write(ex.Message())
lblLoginError.Text = "Incorrect Username/Password."
lblLoginError.Visible = True
Finally
conn.Close()
End Try
End If
End Sub
하지만, 물건은 당신의 코드에 대해 고려해야 할. ** 1 ** 항상'개체를 dispose'. ** 2. ** 데이터베이스에 대한 열린 연결을 닫기 전에 리디렉션하지 마십시오. ** 3. ** 항상 데이터베이스 코드를 자신의 메서드에 넣고, 가능한 경우 자체 레이어에 넣습니다. ** 주제에서 **'ex.Message()'의 값은 무엇입니까? – balexandre
balexandre 외에도, 1. 자신의 보안을 굴리지 마십시오. 2. 일반 텍스트로 암호를 저장하지 마십시오. – Thomas