0

Response.Redirect("userAdmin.aspx) をコードに追加する場所を見つけようとしています。さまざまなバリエーションを試しましたが、送信ボタンは何もしません。どこに置くべきか理解しようとしています。誰か助けてください。 ? よろしくお願いします!

ここに私のコードがあります

Protected Sub butSubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles butSubmit.Click

    Dim myReader As Data.SqlClient.SqlDataReader
    Dim mySqlConnection As Data.SqlClient.SqlConnection
    Dim mySqlCommand As Data.SqlClient.SqlCommand
    'Establish the SqlConnection by using the configuration manager to get the connection string in our web.config file.

    mySqlConnection = New Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings  ("ConnectionString").ToString())
    Dim sql As String = "SELECT password FROM MyUsers WHERE username = '" & Me.TextBox1.Text & "'"
    mySqlCommand = New Data.SqlClient.SqlCommand(sql, mySqlConnection)



    Try

        mySqlConnection.Open()
        myReader = mySqlCommand.ExecuteReader()

        If (myReader.HasRows) Then
            myReader.Read()
            Dim password As String = myReader("password")
            If (password = Me.TextBox2.Text) Then
                'Open page with users and roles
                Dim message As String = "Correct password"
                Dim style As MsgBoxStyle = MsgBoxStyle.OkOnly
                Dim title As String = "Authenticated"
                MsgBox(message, style, title)

            End If
        End If

    Catch ex As Exception
        Console.WriteLine(ex.ToString())
    Finally
        If Not (myReader Is Nothing) Then
            myReader.Close()
        End If

        If (mySqlConnection.State = Data.ConnectionState.Open) Then
            mySqlConnection.Close()
        End If

   End Try

End Sub
4

2 に答える 2

2

Response.Redirectの外で使用する必要Try-Catchがあります。そうしないと、ThreadAbortException. オーバーロードを使用することもできますResponse.Redirect(url, false)

SQL インジェクションを防ぐために、SQL コマンドにパラメータを使用する必要があります。

Protected Sub butSubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles butSubmit.Click
    Dim correctPassword As Boolean = False
    Using mySqlConnection = New Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString)
        Dim sql As String = "SELECT password FROM MyUsers WHERE username = @userName"
        Using mySqlCommand = New Data.SqlClient.SqlCommand(sql, mySqlConnection)
            mySqlCommand.Parameters.AddWithValue("@userName", Me.TextBox1.Text)
            Try
                mySqlConnection.Open()
                Using myReader = mySqlCommand.ExecuteReader()
                    If myReader.Read() Then
                        Dim password As String = myReader.GetString(myReader.GetOrdinal("password"))
                        If password = Me.TextBox2.Text Then
                            correctPassword = True
                        End If
                    End If
                End Using
            Catch ex As Exception
                Console.WriteLine(ex.ToString())
            End Try
        End Using
    End Using
    If correctPassword Then
        Response.Redirect("userAdmin.aspx")
    End If
End Sub

また、代わりにASP.NET-Membershipを使用することを強くお勧めします。

于 2013-03-01T08:10:36.500 に答える
0
   protected void Button_Click(object sender,ClickEventArgs e)
    {
       Response.Redirect("userAdmin.aspx) ;
    }

最初に別のボタンでこれを試して、ページがリダイレクトされているかどうかを確認してください..そして、アリの問題がない場合は、基準に応じて、最後に配置するか、最後に配置します

于 2013-03-01T08:07:37.047 に答える