ASP修改密码 总是提示旧密码错误

牟海川 奥林巴斯(深圳)工业有限公司 IT经理  2009-05-25 04:59:52
<%
dim user_no,user_oldpassword,user_newpassword,user_newpassword1,user_defaultpassword
Dim rs,sql
user_no=Trim(Request.Form("user_no")) '工号
user_oldpassword=Trim(Request.Form("user_oldpassword")) '密码
user_newpassword=Trim(Request.Form("user_newpassword")) '密码
user_newpassword1=Trim(Request.Form("user_newpassword1"))

If len(user_no) <6 or len(user_no)>6 then
response.Write " <script language='javascript'>alert('请检查你输入的工号的位数!');history.back(); </script>"
End If
if cstr(user_newpassword) <> cstr(user_newpassword1) then
Response.write " <script language='javascript'>alert('你两次输入的新密码不一致\n请重新输入');history.back(); </script>"
End if

sql="select * From pmd_userlist where pmd_user_no='"&user_no&"'"
set rs=server.CreateObject ("Adodb.recordset")
rs.open sql,conn,1,3
If Not rs.Eof then

If rs("pmd_user_pass") <> user_oldpassword Then
Response.Write("<script language=JavaScript>" & "alert('旧密码错误');" & "history.back()" & " </script>")
Response.End()
End If
rs("pmd_user_pass")=Trim(user_newpassword)
rs("pmd_user_first")=1
rs.update
response.write " <script language=JavaScript>" & "alert('恭喜你!\n密码修改成功\n请牢记你的新密码');window.location.href='index.asp'; </script>"
Response.End()

Else
response.write " <script language=JavaScript>" & "alert('此用户不存在');" & "history.back()" & " </script>"
response.end
End if

rs.close
set rs=nothing
call closeDB()
%>

输入正确的旧密码,提示旧密码错误,但密码仍能成功修改。
如果取消红色标识的 rs.update 能弹出密码修改成功提示,但密码当然无法更新了。

奇怪的是,密码更新后,感觉总是返回去又一次判断 If rs("pmd_user_pass") <> user_oldpassword Then 了
试过网上别人发的代码,完全copy上去,仍然无效,换过一台WEB服务器,也是一样的

请问如何解决谢谢!
...全文
192 点赞 收藏 17
写回复
17 条回复
ezp_228 2009年11月15日
LZ,最后怎么解决的?。。。。
我郁闷啊。。。。
莫名其妙。。。。
回复 点赞
sonicryu 2009年05月26日
先做个简单的例子测一下,断点输出每步的值,找到问题原因

<%



user_oldpassword="1111"
user_newpassword="2222"


set rs=server.CreateObject ("Adodb.recordset")
sql="select * From pmd_userlist where pmd_user_no='输一个测试工号'"

rs.open sql,conn,3,3
If Not rs.Eof then

'这里先输出一下
'response.write rs("pmd_user_pass")
'response.write user_oldpassword
'Response.End()

If rs("pmd_user_pass") <> user_oldpassword Then
%><script>alert('错误')</script><%


else

rs("pmd_user_pass")="2222"
rs.update

%><script>alert('成功')</script><%

End If

Else

%><script>alert('无用户')</script><%

End if

rs.close:set rs=nothing
call closeDB()
%>
回复 点赞
chang1216 2009年05月26日
感觉你的逻辑有问题

支持一楼的
sql="select * From pmd_userlist where pmd_user_no='"&user_no&"'"
set rs=server.CreateObject ("Adodb.recordset")
rs.open sql,conn,1,3
If Not rs.Eof then

If rs("pmd_user_pass") <> user_oldpassword Then
Response.Write(" <script language=JavaScript>" & "alert('旧密码错误');" & "history.back()" & " </script>")
Response.End()
else
rs("pmd_user_pass")=Trim(user_newpassword)
rs("pmd_user_first")=1
rs.update
response.write " <script language=JavaScript>" & "alert('恭喜你!\n密码修改成功\n请牢记你的新密码');window.location.href='index.asp'; </script>"
Response.End()
end if
Else
response.write " <script language=JavaScript>" & "alert('此用户不存在');" & "history.back()" & " </script>"
response.end
End if
回复 点赞
BobHe 2009年05月26日
把密码在页面上显示出来看看对不对
回复 点赞
tank33cncn 2009年05月26日
.....

If Not rs.Eof then
Response.Write("数据库内的原密码为:")&rs("pmd_user_pass")
Response.Write(" <br>当前输入的原密码为:")&user_oldpassword
Response.Write(" <br>当前输入的新密码为:")&user_newpassword
rs.close
set rs=nothing
call closeDB()
Response.End()

If rs("pmd_user_pass") <> user_oldpassword Then
Response.Write(" <script language=JavaScript>" & "alert('旧密码错误');" & "history.back()" & " </script>")
Response.End()
End If
rs("pmd_user_pass")=Trim(user_newpassword)
rs("pmd_user_first")=1
rs.update
.....

先这样,看看密码对不对
回复 点赞
tank33cncn 2009年05月26日
.....

If Not rs.Eof then
Response.Write("数据库内的原密码为:")&rs("pmd_user_pass")
Response.Write("<br>当前输入的原密码为:")&user_oldpassword
Response.Write("<br>当前输入的新密码为:")&user_newpassword

If rs("pmd_user_pass") <> user_oldpassword Then
Response.Write(" <script language=JavaScript>" & "alert('旧密码错误');" & "history.back()" & " </script>")
Response.End()
End If
rs("pmd_user_pass")=Trim(user_newpassword)
rs("pmd_user_first")=1
rs.update
.....

先这样,看看密码对不对
回复 点赞
oywkkai 2009年05月26日
流程应该没错啊 LZ好好检查下数据库里面的吧
回复 点赞
gmlwl 2009年05月26日
肯定原密码是经过md5加密了,所以你未加密的字符串跟加密过的不一样
回复 点赞
草原可可 2009年05月26日
把SQL打印出来看下 是不是由于MD5加密的关系
回复 点赞
sonicryu 2009年05月26日
是不是因为在

rs.update 之后 程序又回到了这个页面,因为你的修改是成功的,所以数据库中的内容已经修改了


然后程序判断后 所以有提示框出来

response.write " <script language=JavaScript>" & "alert('恭喜你!\n密码修改成功\n请牢记你的新密码');window.location.href='index.asp'; </script>"


总之 不要一下子把程序写完 一步一步写 一步一步测肯定没问题的
回复 点赞
wlzx21 2009年05月25日
试试这样:条件改一下


<%
dim user_no,user_oldpassword,user_newpassword,user_newpassword1,user_defaultpassword
Dim rs,sql
user_no=Trim(Request.Form("user_no")) '工号
user_oldpassword=Trim(Request.Form("user_oldpassword")) '密码
user_newpassword=Trim(Request.Form("user_newpassword")) '密码
user_newpassword1=Trim(Request.Form("user_newpassword1"))

If len(user_no) <6 or len(user_no)>6 then
response.Write " <script language='javascript'>alert('请检查你输入的工号的位数!');history.back(); </script>"
End If
if cstr(user_newpassword) <> cstr(user_newpassword1) then
Response.write " <script language='javascript'>alert('你两次输入的新密码不一致\n请重新输入');history.back(); </script>"
End if

sql="select * From pmd_userlist where pmd_user_no='"&user_no&"'"
set rs=server.CreateObject ("Adodb.recordset")
rs.open sql,conn,1,3
If Not rs.Eof then

If If trim(Lcase(rs("pmd_user_pass"))) <> Lcase(user_oldpassword) Then Then
Response.Write(" <script language=JavaScript>" & "alert('旧密码错误');" & "history.back()" & " </script>")

else
rs("pmd_user_pass")=Trim(user_newpassword)
rs("pmd_user_first")=1
rs.update
response.write " <script language=JavaScript>" & "alert('恭喜你!\n密码修改成功\n请牢记你的新密码');window.location.href='index.asp'; </script>"
end if

Else
response.write " <script language=JavaScript>" & "alert('此用户不存在');" & "history.back()" & " </script>"
End if

rs.close
set rs=nothing
call closeDB()
%>
回复 点赞
sy_binbin 2009年05月25日
你自己再好好检查一下吧!
1楼的流程是没有问题的
回复 点赞
牟海川 2009年05月25日
[Quote=引用 3 楼 sy_binbin 的回复:]
我1楼的代码不应该有问题啊!

那你就检查下密码是否经过md5加密过??
[/Quote]

没有加密
用户名和密码输入是正确的
所以才觉得很纳闷!

我改成如下代码后
sql="select * From pmd_userlist where pmd_user_no='"&user_no&"'"
set rs=server.CreateObject ("Adodb.recordset")
rs.open sql,conn,1,3
If Not rs.Eof then
Response.write "系统中旧密码:"
Response.write rs("pmd_user_pass")
response.write "<br>"
Response.write "输入的旧密码:"
Response.write user_oldpassword
response.write "<br>"

If rs("pmd_user_pass") <> user_oldpassword Then
Response.write "更改后的旧密码:"
Response.write rs("pmd_user_pass")
response.write "<br>"
Response.write "旧密码错误"

Response.End()
Else
rs("pmd_user_pass")=Trim(user_newpassword)
rs("pmd_user_first")=1
Response.write "OK"
rs.update
Response.write "更新成功"
Response.End()
End if

Else
response.write " <script language=JavaScript>" & "alert('此用户不存在');" & "history.back()" & " </script>"
response.end
End if

数据库中的密码为1,我输入的旧密码是1,新密码是2

但输出的结果是:
系统中旧密码:2
输入的旧密码:1
更改后的旧密码:2
旧密码错误

OK没有打印出来,但是把密码有更新,返回去又执行了
回复 点赞
大王带我来巡山 2009年05月25日
把数据库打开 看看对应的用户密码和你输入的是不是一样
回复 点赞
sy_binbin 2009年05月25日
我1楼的代码不应该有问题啊!

那你就检查下密码是否经过md5加密过??
回复 点赞
牟海川 2009年05月25日
[Quote=引用 1 楼 sy_binbin 的回复:]
sql="select * From pmd_userlist where pmd_user_no='"&user_no&"'"
set rs=server.CreateObject ("Adodb.recordset")
rs.open sql,conn,1,3
If Not rs.Eof then

If rs("pmd_user_pass") <> user_oldpassword Then
Response.Write(" <script language=JavaScript>" & "alert('旧密码错误');" & "history.back()" & " </script>")
Response.End()
else
rs("pmd_user_pass…
[/Quote]

这样也试过,大哥,实在没招了?
看看还有没有别的什么问题?

跟环境会有关系吗?
回复 点赞
sy_binbin 2009年05月25日
sql="select * From pmd_userlist where pmd_user_no='"&user_no&"'"
set rs=server.CreateObject ("Adodb.recordset")
rs.open sql,conn,1,3
If Not rs.Eof then

If rs("pmd_user_pass") <> user_oldpassword Then
Response.Write(" <script language=JavaScript>" & "alert('旧密码错误');" & "history.back()" & " </script>")
Response.End()
else
rs("pmd_user_pass")=Trim(user_newpassword)
rs("pmd_user_first")=1
rs.update
response.write " <script language=JavaScript>" & "alert('恭喜你!\n密码修改成功\n请牢记你的新密码');window.location.href='index.asp'; </script>"
Response.End()
end if
Else
response.write " <script language=JavaScript>" & "alert('此用户不存在');" & "history.back()" & " </script>"
response.end
End if
回复 点赞
发动态
发帖子
ASP
创建于2007-09-28

1.9w+

社区成员

35.7w+

社区内容

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区公告
暂无公告