我正在尝试创建一个登录页面。我有一个名为Login的数据库表,它有两列:ID和Password。它包含以下ID和密码对:第一行:(13282,123456),第二行:(11111,11111)。如果用户名和密码是正确的,我将页面重定向到succesful.aspx,如果用户名或密码错误,我将页面重定向到unsuccesful.aspx。我的问题是,当我输入13283作为ID和123456作为密码,它做的一切正确,我被重定向到成功的页面。但是当我输入ID = 11111和密码= 11111时,即使一切都是真的,它也会重定向到不成功的页面。我认为问题是,我的查询只检查第一行。这是代码:
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);
}
}
答案 0 :(得分:3)
这种方法有几个问题:
你应该研究this question的答案。这里讨论的方法并不像你实现的那样简单,但它们使你的系统更具防弹性。
答案 1 :(得分:1)
protected void btn_login_Click1(object sender, EventArgs e)
{
string user = txt_userid.Text;
string pass = txt_pwd.Text;
conn.Open();
SqlCommand cmd = new SqlCommand("select userid,password from tbllogin where userid=@user and password=@pass", conn);
cmd.Parameters.Add("user", @user);
cmd.Parameters.Add("pass", @pass);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
if (dt.Rows.Count > 0)
{
conn.Close();
Response.Redirect("welcome.aspx");
}
else
{
conn.Close();
ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('Invalid Username and Password')</script>");
}
}