我想在asp.net中创建一个简单的登录页面。这是我的代码:
protected void Button1_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Data Source=TEST-PC\\SQLSERVER2012;Initial Catalog=oncf;Integrated Security=True";
conn.Open();
string query = "SELECT COUNT(*) FROM Account WHERE acc_username= '" + TextBox1.Text + "' AND acc_password= '" + TextBox2.Text + "'";
SqlCommand cmd = new SqlCommand(query, conn);
SqlDataReader myreader = cmd.ExecuteReader();
int count = 0;
while(myreader.Read())
{
count = count + 1;
}
if(count==1)
{
Response.Redirect("page2.aspx");
}
else
{
Label1.Visible = true;
}
conn.Close();
}
我设置一个计数器是为了知道输入的凭据是否存在于数据库中。如果计数器的值变为1,则登录成功。否则,将显示带有消息错误的标签!但是,无论我在用户名和登录文本框中输入什么内容,它始终会将我重定向到其他页面!就目前而言,我所关心的不是安全性方面,我只想测试这个简单的代码,我看不到代码有任何问题,但仍然无法正常工作,这让我发疯了……
您遇到的问题是因为followinq查询始终返回一行,即使数据库中没有匹配项也是如此:
SELECT COUNT(*) FROM Account WHERE acc_username=....
如果没有匹配项,则会得到一行只有一列的值0。如果要检查返回值,则在检查返回的行数。
改用这个
int count = Convert.ToInt32(cmd.ExecuteScalar());
if(count==1)
{
Response.Redirect("page2.aspx");
}
else
{
Label1.Visible = true;
}
我知道您说过,您不需要安全性方面的建议,只是为了确保:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句