为什么登陆时总显示密码错误,密码与数据库内的完全一致啊
我的确是菜鸟,希望高手帮我解决下,谢谢 以下是 登陆的login.aspx.cs文件的代码using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using OnLineExam.BusinessLogicLayer;
public partial class Web_Login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (!Object.Equals(Request.Cookies["UserID"], null))
{
HttpCookie readcookie = Request.Cookies["UserID"];
this.txtUserID.Text = readcookie.Value;
}
}
}
//登录按钮事件
protected void imgBtnLogin_Click(object sender, ImageClickEventArgs e)
{
Users user = new Users();//创建Users对象user
string pwdMd5 = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(txtPwd.Text.Trim(), "MD5").ToString();
if (String.Compare(Request.Cookies["yzmcode"].Value, Validator.Text, true) != 0)
{
lblMessage.Text = "验证码错误!";
}
else
{
if (user.CheckPassword(txtUserID.Text.Trim()))//根据用户编号查询用户密码
{
if (user.UserPwd == pwdMd5)//输入密码与用户密码相同
{
if (object.Equals(Request.Cookies["UserID"], null))
{
CreateCookie();
}
else
{
CreateCookie();
}
Session["userID"] = txtUserID.Text.Trim();//存储用户编号
Response.Redirect("Default.aspx");//转向管理员操作界面
}
else//密码错误,给出提示
{
lblMessage.Text = "您输入的密码错误!";
}
}
else//用户不存在,给出提示
{
lblMessage.Text = "该用户不存在!";
}
}
}
protected void ChangeCode_Click(object sender, EventArgs e)
{
}
private void CreateCookie()
{
HttpCookie cookie = new HttpCookie("UserID");
if (this.cbxRemeberUser.Checked)
{
cookie.Value = this.txtUserID.Text;
}
cookie.Expires = DateTime.MaxValue;
Response.AppendCookie(cookie);
}
}
--------------------编程问答-------------------- 你确定pwdMd5 这个string的值和你数据库中的一至? --------------------编程问答-------------------- 这种问题与其去问,不如自己动手调试下。 --------------------编程问答-------------------- 断点调试看看 --------------------编程问答-------------------- 建议调试看看,是不是SQL语句写错了! --------------------编程问答-------------------- 或者是数据库连接的时候出错了,你没捕捉到。 --------------------编程问答-------------------- 怎么看是否一致呢,谢谢 --------------------编程问答-------------------- md5加密过后 你在数据库里头还认识他? --------------------编程问答-------------------- 你添加一个用户的时候有没有用 tirm() 方法` --------------------编程问答-------------------- 数据库连接时没有问题的,各位能不能说的具体点呢,非常感谢 --------------------编程问答-------------------- - -看情况是LZ没有下完整源码造成的。。 --------------------编程问答-------------------- tirm()应该没有 --------------------编程问答-------------------- 登陆Id 也能识别 验证码也能识别就是 密码识别不了 汗 --------------------编程问答-------------------- cstr(trim()) 加这个
--------------------编程问答-------------------- 如何用啊 谢谢 --------------------编程问答-------------------- 你不都说了“密码与数据库的完全一致”么?你的密码是什么?数据库里的是什么?怎么个一致法?也不说明白 --------------------编程问答-------------------- 可能是由于空格造成的吧。。看你数据库存储密码的类型是不是变长的,看加var没有,如果没有加,取出来的password先trim再比较 --------------------编程问答--------------------
数据库就是这个 ,谢谢 --------------------编程问答-------------------- .......... --------------------编程问答-------------------- 就我分析吧,你说你的密码和数据库中的一致,而我问你pwdMd5这个值的时候,你说你不知道,所以你数据库中的值可能是没经过MD5处理的,当然和pwdMd5这个值对不上,当然说你密码错误了 --------------------编程问答-------------------- 哦,谢谢,我是不是要处理下 数据库里的数据 用md5,在用处理过的 登陆吧? --------------------编程问答-------------------- 你数据库里的密码字段的值,要和你程序里的处理方式对应
即System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(txtPwd.Text.Trim(), "MD5").ToString();这个处理结果。你可以先输入密码,然后断点到这句话上,把处理过的值复制下来,粘到数据库中的密码字段就可以了 --------------------编程问答-------------------- 大小写区分 --------------------编程问答-------------------- 1.先调试,看是否真的与数据库中的一致,
2.如果一致,看是不是数据库中存在空格,
3.把sql语句调试显示出来,到查询分析器中去运行,看是否能查到值 --------------------编程问答-------------------- 两者都输出来看一下对不对呗 --------------------编程问答-------------------- 在往数据库里存数据时,用MD5进行加密;但是也要记得在从数据库里读取数据时,要进行解密呀!如果在数据库里存的是加过密的暗文,那你从数据库里读取的时候肯定与原来的明文密码不一样了。
要不你不用加密方法,直接存取,试一下还有没有问题...... --------------------编程问答-------------------- 我也遇到过这个问题,我的问题是因为数据库字段定义时用的"char",如果输入的内容位数小于字段定义的位数,会在后面自动添加空格,我在读出密码字段后直接与画面输入的比较,所以认为不一致,因为数据库读出来的有空格,用眼睛看是一样的。
我当时在向数据库写数据和从数据库读数据时,都去首尾空格,我的想法是人家密码要是就像用空格怎么办?
我的问题的解决方法是:改变数据库字段定义的类型,将"char"改成"varchar"
char:固定长度,如果内容长度不够,自动填空格补充位数
varchar:变长,不自动填空格
以上是我问题的解决方法,希望对你有帮助。
补充:.NET技术 , ASP.NET