为什么登陆时总显示密码错误,密码与数据库内的完全一致啊

diyizixun 2010-04-22 02:23:37
我的确是菜鸟,希望高手帮我解决下,谢谢 以下是 登陆的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);
}

}

...全文
1880 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuguanghe2008 2010-04-22
  • 打赏
  • 举报
回复
我也遇到过这个问题,我的问题是因为数据库字段定义时用的"char",如果输入的内容位数小于字段定义的位数,会在后面自动添加空格,我在读出密码字段后直接与画面输入的比较,所以认为不一致,因为数据库读出来的有空格,用眼睛看是一样的。

我当时在向数据库写数据和从数据库读数据时,都去首尾空格,我的想法是人家密码要是就像用空格怎么办?

我的问题的解决方法是:改变数据库字段定义的类型,将"char"改成"varchar"

char:固定长度,如果内容长度不够,自动填空格补充位数
varchar:变长,不自动填空格

以上是我问题的解决方法,希望对你有帮助。
piaopiaodeng 2010-04-22
  • 打赏
  • 举报
回复
在往数据库里存数据时,用MD5进行加密;但是也要记得在从数据库里读取数据时,要进行解密呀!如果在数据库里存的是加过密的暗文,那你从数据库里读取的时候肯定与原来的明文密码不一样了。
要不你不用加密方法,直接存取,试一下还有没有问题......
myhope88 2010-04-22
  • 打赏
  • 举报
回复
两者都输出来看一下对不对呗
  • 打赏
  • 举报
回复
1.先调试,看是否真的与数据库中的一致,
2.如果一致,看是不是数据库中存在空格,
3.把sql语句调试显示出来,到查询分析器中去运行,看是否能查到值
gicjoe 2010-04-22
  • 打赏
  • 举报
回复
大小写区分
手抓宝 2010-04-22
  • 打赏
  • 举报
回复
你数据库里的密码字段的值,要和你程序里的处理方式对应
即System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(txtPwd.Text.Trim(), "MD5").ToString();这个处理结果。你可以先输入密码,然后断点到这句话上,把处理过的值复制下来,粘到数据库中的密码字段就可以了
diyizixun 2010-04-22
  • 打赏
  • 举报
回复
哦,谢谢,我是不是要处理下 数据库里的数据 用md5,在用处理过的 登陆吧?[Quote=引用 19 楼 hrabeyond 的回复:]
就我分析吧,你说你的密码和数据库中的一致,而我问你pwdMd5这个值的时候,你说你不知道,所以你数据库中的值可能是没经过MD5处理的,当然和pwdMd5这个值对不上,当然说你密码错误了
[/Quote]
手抓宝 2010-04-22
  • 打赏
  • 举报
回复
就我分析吧,你说你的密码和数据库中的一致,而我问你pwdMd5这个值的时候,你说你不知道,所以你数据库中的值可能是没经过MD5处理的,当然和pwdMd5这个值对不上,当然说你密码错误了
手抓宝 2010-04-22
  • 打赏
  • 举报
回复
..........
diyizixun 2010-04-22
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 hrabeyond 的回复:]
你不都说了“密码与数据库的完全一致”么?你的密码是什么?数据库里的是什么?怎么个一致法?也不说明白
[/Quote]
数据库就是这个 ,谢谢
liuyileneal 2010-04-22
  • 打赏
  • 举报
回复
可能是由于空格造成的吧。。看你数据库存储密码的类型是不是变长的,看加var没有,如果没有加,取出来的password先trim再比较
手抓宝 2010-04-22
  • 打赏
  • 举报
回复
你不都说了“密码与数据库的完全一致”么?你的密码是什么?数据库里的是什么?怎么个一致法?也不说明白
diyizixun 2010-04-22
  • 打赏
  • 举报
回复
如何用啊 谢谢[Quote=引用 13 楼 wofel 的回复:]
cstr(trim()) 加这个
[/Quote]
wofel 2010-04-22
  • 打赏
  • 举报
回复
cstr(trim()) 加这个
diyizixun 2010-04-22
  • 打赏
  • 举报
回复
登陆Id 也能识别 验证码也能识别就是 密码识别不了 汗
diyizixun 2010-04-22
  • 打赏
  • 举报
回复
tirm()应该没有
benbenhuo 2010-04-22
  • 打赏
  • 举报
回复
- -看情况是LZ没有下完整源码造成的。。
diyizixun 2010-04-22
  • 打赏
  • 举报
回复
数据库连接时没有问题的,各位能不能说的具体点呢,非常感谢
Xiaoyuan245437 2010-04-22
  • 打赏
  • 举报
回复
你添加一个用户的时候有没有用 tirm() 方法`
sxiaohui8709253 2010-04-22
  • 打赏
  • 举报
回复
md5加密过后 你在数据库里头还认识他?
加载更多回复(6)

62,239

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧