asp的网页,管理员修改所以用户的信息
asp吧
全部回复
仅看楼主
level 2
zachsn 楼主
<form name="form1" method="post" action="upload.asp">下面的代码是upload.asp网页里面的。修改用户a1(数据库里有该用户)密码的时候跳转到upload.asp,没有返回任何提示信息。修改用户a3(数据库里没有该用户)修改密码的时候同样跳转到upload.asp,没有返回任何提示信息。
下面是修改页面的代码,还希望有大神能帮帮忙。
<!-- #include file="conn.asp" -->
<%
dim admin_un1,admin_pw1
admin_un1=trim(request("un1"))
admin_pw1=trim(request("pw1"))
admin_pw2=trim(request("pw2"))
if admin_un1="" or admin_pw1="" or admin_pw2="" then
response.write "<script>alert('对不起,用户名和密码不能为空!');document.location.href='change.asp';</script>"
response.end
else
if len(request.Form("pw1"))<6 or len(request.Form("pw2"))<6 then
response.write "<script>alert('对不起,你输入密码太简单,请重新输入');document.location.href='change.asp';</script>"
response.end
else
if admin_pw1<>admin_pw2 then
response.write "<script>alert('对不起,你两次输入的密码不一致,请重新输入');document.location.href='change.asp';</script>"
response.end
end if
end if
end if
%>
<%
set conn=Server.CreateObject("ADODB.Connection")
DBPath=Server.MapPath("pandora.mdb")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
set rs=Server.CreateObject("ADODB.Recordset")
sql="select * from info where username='"&admin_un1&"' and password='"&admin_pw1&"'"
rs.open sql,conn,1,3
if not rs.eof then
if admin_un1<>rs("username") then
response.write "<script>alert('对不起,该用户不存在,请重新输入');document.location.href='change.asp';</script>"
response.end()
else
if admin_pw1=rs("password") then
response.write "<script>alert('对不起,新密码和旧密码一致,请重新输入');document.location.href='change.asp';</script>"
response.end()
else
session.Timeout=2000
session("username")=rs("username")
session("password")=rs("password")
rs("username")=request.Form("un1")
rs("password")=request.Form("pw1")
rs("usertpye")=request.Form("dept")
rs("uptime")=now()
rs.update
rs.close
set rs=nothing
conn.close
set rs=nothing
response.Write "<script>alert('修改完成!!!');document.location.href='change.asp';</script>"
response.end()
end if
end if
end if
%>
2018年08月30日 03点08分 1
level 1
我的理解:
admin_un1为用户名
admin_pw1为用户新密码
admin_pw2为用户新密码的确认
问题出现SQL语句上:
sql="select * from info where username='"&admin_un1&"' and password='"&admin_pw1&"'"
这是从info表中查询username为admin_un1、password为admin_pw1的记录;
admin_pw1为用户新密码,这怎么可能查询的出来的呢,除非新密码与旧密码一样;
帮你提出建议:
admin_un1为用户名
admin_pw1为用户旧密码
admin_pw2为用户新密码
新密码二次确认的操作可以在change.asp页面提交数据前用JS实现;
用户修改密码一定要验证旧密码(原因自己理解);
首先查询用户记录是否存在,SQL修改为下:
sql="select top 1 * from info where username='"&admin_un1&"'
然后通过以下逻辑判断执行代码:
if rs.bof or rs.eof then
'用户记录不存
elseif admin_pw1<>rs("password") then
'旧密码不正确,不能修改
elseif admin_pw2=rs("password") then
'新密码与旧密码相
else
'更新数据库操
end if
另外的建议
第一部分的代码,不要嵌套if判断,可以使用if else,这样逻辑思维清楚,代码看起来容易理解;
我对你第一部分的代码,修改如下,你可以参考下:
dim admin_un1,admin_pw1,admin_pw2,err_ms
admin_un1=trim(request("un1"))
admin_pw1=trim(request("pw1"))
admin_pw2=trim(request("pw2"))
err_ms = ""
if admin_un1="" or admin_pw1="" or admin_pw2="" then
err_ms = "对不起,用户名和密码不能为空!"
elseif len(request.Form("pw1"))<6 or len(request.Form("pw2"))<6 then
err_ms = "对不起,你输入密码太简单,请重新输入"
elseif admin_pw1<>admin_pw2 then
err_ms = "对不起,你两次输入的密码不一致,请重新输入"
end if
if err_ms<>"" then
response.Write("<script>alert('"&err_ms&"');document.location.href='change.asp';</script>")
response.end
end if
其实处理页面的消息提示可以单独做一个函数来调用,这样可以避免相同代码重复使用,相同的功能尽量用最少的代码和逻辑判断去实现,尽量让代码成线性处理
2018年08月30日 07点08分 4
change.asp页面是管理员登陆后,进行对所有用户的帐号信息进行修改,删除的操作。刚刚开始学asp,谢谢你对第一部分的代码提的建议,又学到了一些。
2018年08月30日 09点08分
那样的话,可以把匹配旧密码的判断去掉了,如果想从事WEB编程,还是学PHP吧,资源多
2018年08月30日 09点08分
@yxwbd2000 我想先把这个asp的查询、添加、删除、修改网页做起来。修改密码,不是要想判断新密码和旧密码不一致后,再执行修改密码的动作?去掉旧密码的判断不合理吧?
2018年08月30日 09点08分
你可以按你的想法写,写好了发上来,我帮你看下
2018年08月30日 09点08分
level 1
明白,所以查询语句where里才不用匹配passowrd,
举例:info表里有条记录username为user1,password为user1_pass,
管理员如果要修改这条记录,只需要:
select * from info where username="user1"
就可以了,如果按你的语句select * from info where username="user1" and password="新密码"
如果不是巧合(新密码=user1_pass)那是搜索不出来记录的
2018年08月31日 05点08分 5
现在最终你的SQL语句是什么?
2018年08月31日 06点08分
@yxwbd2000 是你建议的sql="select * from info where username='"&admin_un1&"'"
2018年08月31日 06点08分
@yxwbd2000 然后用if rs.bof or rs.eof then,判断用户记录是否存在
2018年08月31日 06点08分
@yxwbd2000 谢谢你的指点[呵呵]
2018年08月31日 06点08分
level 2
zachsn 楼主
我的info表里有username和passowrd两个字段保存用户的帐号密码,起初写的sql="select * from info where username='"&admin_un1&"' and password='"&admin_pw1&"'"中的password='"&admin_pw1&"'"是为了配合if admin_pw1=rs("password") then搜索验证判断password字段新密码和旧密码是否一致
2018年08月31日 06点08分 6
判断password字段新密码和旧密码是否一致是要在找到记录后进行逻辑判断,不是在SQL语句里写,你最初的请问,让电脑理解为你要查找username=admin_un1且password=admin_pw1的记录
2018年08月31日 06点08分
@yxwbd2000 嗯嗯,现在明白了[开心]
2018年08月31日 06点08分
高手
2018年11月18日 21点11分
1