登录页面-检查数据库
本文关键字:检查 数据库 登录 | 更新日期: 2023-09-27 18:13:20
我正在尝试制作一个简单的登录页面,用户输入ID和密码,并从下拉列表中选择角色:学生,管理员或讲师。下面是代码:
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";
//myConn.Open();
//string strqry = "Insert into students values (" + TextBox1.Text +
//",'" + TextBox2.Text + "','" + TextBox3.Text + "')";
//SqlCommand myCom = new SqlCommand(strqry, myConn);
//int numrow = myCom.ExecuteNonQuery();
//myConn.Close();
Int32 verify;
string query1 = "Select count(*) from Login where ID='" + idBox.Text + "' and Password='" + passwordBox.Text + "' and Type='"+ LoginAs.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);
}
}
问题是,当我尝试不检查下拉列表名为"LoginAs"的值,它工作得很好,使验证。但是当我也检查类型时,无论是学生,管理员还是讲师,它总是使登录不成功,即使所有的信息都是正确的。有谁能帮我找出哪里不对吗?
谢谢
使用参数化查询也许它将被解决,你将防止风险它像这样
cmd1.Parameters.AddWithValue("@ID", idBox.Text);
第一个要检查的点是:
- 所有字母大小写相同。
- 角色应该在数据库和应用程序 中被截断
但是,最好使用enum/int来定义用户的角色,而不是文本名称。
试试SqlDataReader类。如果发生读取,您可以捕获。这是链接。虽然情况并非如此,但我建议您在数据库中使用标量函数或使用EntityFramework或其他ORM工具。