登录老提示“密码错”,密码明明没错呀!!帮忙看看!谢谢!

cbcman 2008-02-01 01:44:12
不知为什么,下面的代码老提示不能登录,数据库连接没问题的,因为可以插入记录,

用Response.Write,可以正常显示输入框录入的内容和数据库里面的内容,但就是不能登录成功!提示“密码错”,

请高手帮忙看看哪里有问题!数据库SQL2000,非常感谢!



string DataType = ConfigurationManager.ConnectionStrings["CarConnection"].ConnectionString;
string selectSQL = " Select * From Member Where UserName='" + UserName.Text + "' AND UserPwd='" + UserPwd.Text + "'";

SqlConnection Conn = new SqlConnection(DataType);
SqlCommand SelectCmd = new SqlCommand(selectSQL, Conn);


try
{
Conn.Open();
SqlDataReader DR = SelectCmd.ExecuteReader();


if (DR.Read() == false)
{
Response.Write("<script>alert(\"该用户还未注册!\");</script>");
return;
}
else if (DR["UserPwd"].ToString() != UserPwd.Text.Trim())
{
Response.Write("<script>alert(\"密码错误!\");</script>");
return;
}
else
{
Response.Redirect("Default.aspx");
}
}
catch(Exception err)
{
lblMessage.Text = err.Message;
}
finally
{
Conn.Close();
}
...全文
442 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
e_god 2008-02-01
  • 打赏
  • 举报
回复
看看逻辑吧
allen_cn 2008-02-01
  • 打赏
  • 举报
回复
密码的输入框没有保存状态的功能 可是是这个问题

但是还有一个逻辑问题
string selectSQL = " Select * From Member Where UserName='" + UserName.Text + "' AND UserPwd='" + UserPwd.Text + "'";


你根据这样的查询来取,是不可能得到密码错误的情况的

如果输入密码错误,那就取不到记录,会提示用户没有注册

所以先只根据用户名来取,如果不存在,则没有注册,如果存在,再判断里面是否正确
maoning 2008-02-01
  • 打赏
  • 举报
回复
注意密码的大小写。还有就是全半角是否正确,我前两天就被全半角忽悠过
zhuanshen712 2008-02-01
  • 打赏
  • 举报
回复
13楼的代码应该可以,密码的输入框好像没有保存状态的功能,所以,一旦提交之后,他就会自动清空,这样你一比较的话,就是在和空串""比较,所以不对了。
===
刚刚想了想,放到IsPostBack里面也不一定好用,因为密码的输入框没有保存状态的功能
vrhero 2008-02-01
  • 打赏
  • 举报
回复
-_-!改了半天还是错的...9楼也没有不对倒是给lz指出一个问题用户名错也会错...只是逻辑上还是有些怪...

应该是 if(result>0)

这里只是要看是否存在记录...ExecuteScalar比ExecuteReader效率高...而且要注意处理用户名的大小写...

zhuanshen712 2008-02-01
  • 打赏
  • 举报
回复
把登陆代码放到IsPostBack中试试看,既然是提取出来的密码不正确,那么有可能是提交之后将密码框清空了,提取出来的密码显然不等于"" 啊。
建议加个断点,看看UserPwd.Text.Trim()是不是"" ,如果是的话,就是提交之后将密码框清空了,把登陆代码放到IsPostBack中也许会好。
=====================
搂住这个逻辑显然不正确嘛!
selectSQL这个语句,查询出来的本来就是用户输入的用户名和密码都正确的数据,你又来判断密码,岂不是多此一举?
lucky749 2008-02-01
  • 打赏
  • 举报
回复
try
{
Conn.Open();
SqlDataReader DR = SelectCmd.ExecuteReader();

if (DR.Read())
{
Response.Redirect("Default.aspx");
}
}
catch(Exception err)
{
lblMessage.Text = err.Message;
}
finally
{
Conn.Close();
}

其实 (DR["UserPwd"].ToString().Trim().ToUpper() != UserPwd.Text.Trim().ToUpper())
这个判断是多余的.根本无需在这样比的
pwroselove 2008-02-01
  • 打赏
  • 举报
回复
if (DR.Read() == false)
下面还有ELSE啊,难道各位没有看清楚?
vrhero 2008-02-01
  • 打赏
  • 举报
回复
更正一下...

string selectSQL = " Select COUNT(*) From Member Where UserName='" + UserName.Text.Trim() + "' AND UserPwd='" + UserPwd.Text.Trim() + "'";
...
int result = (int)SelectCmd.ExecuteScalar();
if(result>1)
{
...
}
else
{
...
}
vrhero 2008-02-01
  • 打赏
  • 举报
回复
9楼的逻辑也不对...这个地方就不该用ExecuteReader...改用ExecuteScalar...


string selectSQL = " Select COUNT(*) From Member Where UserName='" + UserName.Text + "' AND UserPwd='" + UserPwd.Text + "'";
...
int result = (int)SelectCmd.ExecuteScalar();
if((int)result>1)
{
...
}
else
{
...
}
yyne 2008-02-01
  • 打赏
  • 举报
回复
楼上的名字...

C Sharp VB... 样样精通,样样中庸...

(开个玩笑,别介意。)
xuan.ye 2008-02-01
  • 打赏
  • 举报
回复
逻辑不对,
if (DR.Read() == false)
{
Response.Write("<script>alert(\"该用户还未注册!\");</script>");
return;
}
else if (DR["UserPwd"].ToString().Trim().ToUpper() != UserPwd.Text.Trim().ToUpper())
{
Response.Write("<script>alert(\"密码错误!\");</script>");
return;
}
else
{
Response.Redirect("Default.aspx");
}

royrandy 2008-02-01
  • 打赏
  • 举报
回复
同意楼上
改为:if (DR.Read())
vrhero 2008-02-01
  • 打赏
  • 举报
回复
if (DR.Read() == false)
-------------
要能对才见鬼了呢...

if (DR.Read())
xxoo2007 2008-02-01
  • 打赏
  • 举报
回复
sql能通过,比对不过,看起来和UserPwd.Text.Trim())这句有关, 检查一下数据库的数据和前台的psw前后的空格是否一致.
laoyingisme 2008-02-01
  • 打赏
  • 举报
回复
if (DR.Read() == false)
改为
if(DR.Read)
{
if(DR["UserName"].ToString()!=UserName.Text.Trim().ToString)
{
Response...
}
}

设个断点跟踪一下就清楚了

pwroselove 2008-02-01
  • 打赏
  • 举报
回复
SqlCommand SelectCmd = new SqlCommand(selectSQL, Conn);
try
{
Conn.Open();
应该要先OPEN()吧?
stoneeri 2008-02-01
  • 打赏
  • 举报
回复
应该不会密码错了,sql已经匹配两个条件,检查密码没有任何意义。
qepwqdcmc 2008-02-01
  • 打赏
  • 举报
回复
检查的条件是用户名和密码都匹配,怎么可能还有密码错误呢...
这样写是不能判断出密码错误的...
win7cc 2008-02-01
  • 打赏
  • 举报
回复
厉害啊 ...........
加载更多回复(7)

62,266

社区成员

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

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

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

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