我想創建一個登錄頁面。我有一個名爲Login的數據庫表,它有兩列:ID和密碼。它有以下ID和密碼對:第一行:(13282,123456),第二行:(11111,11111)。如果用戶名和密碼正確,我將頁面重定向到succesful.aspx,如果用戶名或密碼錯誤,我將頁面重定向到unsuccesful.aspx。我的問題是,當我輸入13283作爲ID和123456作爲密碼時,它確實正確,我被重定向到成功的頁面。但是當我輸入ID = 11111和密碼= 11111即使一切都是真實的,它會重定向到不成功的頁面。我認爲問題是,我的查詢只檢查第一行。下面是代碼:驗證在asp.net數據庫中的用戶名和密碼
protected void loginButton_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection();
con.ConnectionString = "Data Source=.\\SQLEXPRESS;Initial Catalog=University;Integrated Security=True;Pooling=False";
Int32 verify;
string query1 = "Select count(*) from Login where ID='" + idBox.Text + "' and Password='" + passwordBox.Text + "' ";
SqlCommand cmd1 = new SqlCommand(query1, con);
con.Open();
verify = Convert.ToInt32(cmd1.ExecuteScalar());
con.Close();
if (verify > 0)
{
Response.Redirect("succesful.aspx");
}
else
{
Response.Redirect("unsuccesful.aspx",true);
}
}
1)不要連接字符串來建立你的查詢。我個人喜歡密碼';從登錄中刪除;改用參數化查詢。 2)使用密碼然後散列它。切勿存儲明文密碼。 – 2013-05-14 00:08:57
修剪用戶名和密碼空間(例如username.Trim())也是一個好主意。通常用戶複製/粘貼用戶名和密碼,並且不明顯他們複製了尾部空格。 – ptutt 2013-05-14 00:14:32