第2天接触ADO.NET,我想写了一个登录页面,账户和密码在数据库的ZhuCe这个表里,数据库连接成功,但是我让用户输入的密码和我数据库里存的密码对比时,即使用户输入正确的也不能正确登录,为什么?我把密码验证写成,当用户输入密码不等于数据库里密码时可以登录,他就正常运行了~帮我看看,在线等,谢谢各位大侠~~ protected void BtnLogin_Click(object sender, EventArgs e)
{
if (this.TextBox1.Text.Trim() == "" || this.TextBox2.Text.Trim() == "")
{
this.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('用户名和密码不能为空')</script>");
return;
}
if (TextBox3.Text!=LabCode.Text)
{
this.ClientScript.RegisterStartupScript(this.GetType(),"","<script>alert('验证码不匹配请重新填写')</script>");
return;
}
string UserName = TextBox1.Text.Trim().ToString();
string Password = TextBox2.Text.Trim();
string strConn = ConfigurationManager.ConnectionStrings["ZhuCe"].ConnectionString;
SqlConnection con = new SqlConnection(strConn);
try
{
con.Open();
SqlCommand cmd = con.CreateCommand();
cmd.CommandText = "select * from [ZhuBiao] where 用户名='" + UserName + "'";
SqlDataReader reader = cmd.ExecuteReader();
if (reader.Read())
{
string dbpassword = reader.GetString(reader.GetOrdinal("密码"));
if (Password == dbpassword) //这样可以么?为什么我输入正确的密码却不能登录?
{
Response.Redirect("Index.aspx?userName=" + TextBox1.Text.Trim().ToString() + "");
}
else
{
this.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('你输入的用户和密码不匹配请重新输入!')</script>");
}
}
else
{
this.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('你输入的用户不存在!')</script>");
}
}
finally
{
if (con != null)
{
con.Close();
con.Dispose();
}
}
}
{
if (this.TextBox1.Text.Trim() == "" || this.TextBox2.Text.Trim() == "")
{
this.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('用户名和密码不能为空')</script>");
return;
}
if (TextBox3.Text!=LabCode.Text)
{
this.ClientScript.RegisterStartupScript(this.GetType(),"","<script>alert('验证码不匹配请重新填写')</script>");
return;
}
string UserName = TextBox1.Text.Trim().ToString();
string Password = TextBox2.Text.Trim();
string strConn = ConfigurationManager.ConnectionStrings["ZhuCe"].ConnectionString;
SqlConnection con = new SqlConnection(strConn);
try
{
con.Open();
SqlCommand cmd = con.CreateCommand();
cmd.CommandText = "select * from [ZhuBiao] where 用户名='" + UserName + "'";
SqlDataReader reader = cmd.ExecuteReader();
if (reader.Read())
{
string dbpassword = reader.GetString(reader.GetOrdinal("密码"));
if (Password == dbpassword) //这样可以么?为什么我输入正确的密码却不能登录?
{
Response.Redirect("Index.aspx?userName=" + TextBox1.Text.Trim().ToString() + "");
}
else
{
this.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('你输入的用户和密码不匹配请重新输入!')</script>");
}
}
else
{
this.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('你输入的用户不存在!')</script>");
}
}
finally
{
if (con != null)
{
con.Close();
con.Dispose();
}
}
}
解决方案 »
- 为什么新闻内容里有图片,所设的行高就不起作用了啊.
- 初学做项目求助
- ASP.NET 连接Access数据库问题
- 请教大家,如何在DataGrid中展示DataSet中2个有主外键关联的表,在DataGrid中修改数据后,如何写回数据库?
- 为什么在vs里使用css时会说FILTER非已知的css属性名.放在前端html里却可以正常使用.问题如上....
- 对TreeView中TreeNode的访问(在线等)
- 还是静态页的问题。(关于网站主页的静态页的生成)
- 关于图片显示的问题?(急!)
- HTML 如何在网页加载的过程中添加一个滚动的圈圈
- AspNetPager4.2版发布,附源代码!
- 发送消息队列问题,急!!!高分求助
- 我的样式怎末设置啊,急,急,急啊
这句后面改下可能会更好点。
cmd.ExecuteReader(CommandBehavior.CloseConnection);
最好设下断点,看你从数据库取出来的密码是什么
就是这句
string dbpassword = reader.GetString(reader.GetOrdinal("密码"));
看下执行结果
这句也改下:
前面改成select password from [ZhuBiao] where 用户名='" + UserName + "'";
假定密码字段是password
取的时候
SqlDataReader reader=cmd.ExecuteReader(CommandBehavior.CloseConnection);
if(reader.Read())
{
string dbpassword=reader.GetString(0); //后面再去比较
}
还有存入数据库的密码最好都加密的
但还有2个问题:1,为什么加那句就好了?
2.我这样写登录代码是不是太粗糙了?你们一般是怎么写的?我想养个好习惯!
再次谢谢大家~~
怎么分层?跟老师说过的三层架构有关系么?
我这代码是写在网页的.cs中的,这也算是页面吗?不是.aspx那个才是页面吗? 还是我没贴全,你们看错了?