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

牟海川 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服务器,也是一样的

请问如何解决谢谢!
...全文
289 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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没有打印出来,但是把密码有更新,返回去又执行了
  • 打赏
  • 举报
回复
把数据库打开 看看对应的用户密码和你输入的是不是一样
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

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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