我有登录页面的问题。如果我没有输入用户名或密码,它应该说“请输入用户名或密码”而不是它转到目标页面我的意思是没有在登录字段中输入任何内容如果我点击提交按钮实际上欢迎页面不应该发生。
这是我的代码,请有人告诉我我的错误在哪里:
public class Login
{
public string str = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString.ToString();
public int GetLogin(string UserName, string Password)
{
SqlConnection con = new SqlConnection(str);
SqlDataAdapter da = new SqlDataAdapter("select * from Login where UserName='"+UserName+"' and Password='"+Password+"'",con);
DataSet ds = new DataSet();
da.Fill(ds);
if (ds.Tables[0].Rows.Count > 0)
{
if ((ds.Tables[0].Rows[0].ItemArray[0].ToString() == UserName) && (ds.Tables[0].Rows[0].ItemArray[1].ToString() == Password))
{
return 1;
}
else
{
return 0;
}
}
else
{
return -1;
}
}
Login.aspx.cs:
protected void BtnLogin_Click(object sender, EventArgs e)
{
Session["UserName"] = TxtUserName.Text;
Login lg = new Login();
if ((lg.GetLogin(TxtUserName.Text, TxtPassword.Text) == 1))
{
Response.Redirect("c1.aspx");
}
else if((TxtUserName.Text=="")&&(TxtPassword.Text==""))
{
Lbl1.Text = "Please Enter the UserName and Password";
}
else
{
Lbl1.Text = "Sorry,Invalid UserName or Password";
}
}
答案 0 :(得分:5)
所有这些功能都已内置于ASP.NET中。
查看RequiredFieldValidator以验证您的字段,或使用Login Controls为您处理所有表单功能。
结帐FormsAuthentication和Membership进行用户身份验证。
答案 1 :(得分:4)
我真的不知道问题是什么,因为它看起来应该可以工作,但是你有一个巨大的SQL注入问题。在测试数据库上对此进行测试,但为UserName输入此内容。
' and 1 = 1; drop table Login; --
我建议您查找SqlParameter并搜索“SqlParameter SQL Injection Attack”
答案 2 :(得分:1)
1.-用户并传递空的验证是在db调用之后,因此如果您的空白用户的密码为空,则登录将成功
2.-您正在创建sql查询,这是对sql注入开放的,请使用参数化查询。