|
蓝森林 http://www.lslnet.com 2006年8月25日 8:28
"此管理员帐号已经存在,请选用其它名称!"不起作用
<%@ language="VBScript"%>
<%response.Expires = 0%>
<!--#include file="Conn.asp"-->
<!--#include file="md5.asp"-->
<%
set rs=server.createobject("adodb.recordset")
sqltext="select * from Manage_User where UserName='" & request.form("uid") & "' and PassWord='" & request.form("pwd1") & "'"
rs.open sqltext,conn,1,1
'查找数据库,检查此管理员是否已经存在
if rs.recordcount >= 1 then
if rs("UserName")=request.form("uid") then
Response.Redirect "Loginsb.asp?msg=此管理员帐号已经存在,请选用其它名称!"
response.end
rs.close
end if
end if
set rs=server.createobject("adodb.recordset")
sqltext="select * from Manage_User"
rs.open sqltext,conn,3,3
'添加一个管理员帐号到数据库
rs.addnew
rs("UserName")=request.form("uid")
rs("PassWord")=md5(request.form("pwd1"))
rs.update
Response.Redirect "Manage_Admin.asp"
%>
当管理员帐号重复时,提示代码不起作用,请高手帮忙看看错在哪里?
|
if rs.recordcount >= 1 then
if rs("UserName")=request.form("uid") then
Response.Redirect "Loginsb.asp?msg=此管理员帐号已经存在,请选用其它名称!"
response.end
rs.close
end if
end if
既然都有纪录了.rs("UserName")=request.form("uid") 还有什么意义??
另外. rs.recordcount >= 1换成rs.eof and rs.bof试试. |
只检查存在还用检查密码,而且检查的SQL语句中怎么不用md5了? |
<%@ language="VBScript"%>
<%response.Expires = 0%>
<!--#include file="Conn.asp"-->
<!--#include file="md5.asp"-->
<%
set rs=server.createobject("adodb.recordset")
sqltext="select * from Manage_User where UserName='" & request.form("uid") & "' and PassWord='" &md5( request.form("pwd1")) & "'"
rs.open sqltext,conn,1,1
'查找数据库,检查此管理员是否已经存在
if rs.bof or rs.eof then
Response.Redirect "Loginsb.asp?msg=您的密码有误或此管理员帐号已经存在,请选用其它名称!"
response.end
rs.close
end if
set rs=server.createobject("adodb.recordset")
sqltext="select * from Manage_User"
rs.open sqltext,conn,3,3
'添加一个管理员帐号到数据库
rs.addnew
rs("UserName")=request.form("uid")
rs("PassWord")=md5(request.form("pwd1"))
rs.update
Response.Redirect "Manage_Admin.asp"
%>
|
if rs.bof or rs.eof then
有的时候 rs.recordcount 会神秘的返回-1
所以还是用BOF和EOF比较安全点 |
sqltext="select * from Manage_User where UserName='" & request.form("uid") & "' and PassWord='" &md5( request.form("pwd1")) & "'"
用了md5加密密码还可以,但如果没有,即
sqltext="select * from Manage_User where UserName='" & request.form("uid") & "' and PassWord='" &request.form("pwd1") & "'"
是需要大家注意的:尽量不要使用此方法
我一般的方法是先检测有没有该ID,再判断与之对应的密码
下面是我的一个登录验证函数
<%
Function chk_regist(requestname,requestpwd,tablename,namefield,pwdfield,reurl)
dim cn_name,cn_pwd
cn_name=trim(request.form(""&requestname&""))
cn_pwd=trim(request.form(""&requestpwd&""))
if cn_name="" or cn_pwd="" then
response.Write("<script language=javascript>alert(""请将帐号密码填写完整,谢谢合作。"");history.go(-1)</script>")
end if
Set rs = Server.CreateObject ("ADODB.Recordset")
sql = "Select * from "&tablename&" where "&namefield&"='"&cn_name&"'"
rs.open sql,conn,1,1
if rs.eof then
response.Write("<script language=javascript>alert(""没有该会员ID,请确认有没有被申请。"");history.go(-1)</script>")
else
if rs(""&pwdfield&"")=cn_pwd then
session("cn_name")=rs(""&namefield&"")
response.Redirect(reurl)
else
response.Write("<script language=javascript>alert(""提醒,您的帐号和密码是不吻合。注意数字和大小写。"");history.go(-1)</script>")
end if
end if
rs.close
Set rs = Nothing
End Function
%>
参数说明:
chk_regist(requestname,requestpwd,tablename,namefield,pwdfield,reurl)
requestname 为接受HTML页中输入名称的INPUT控件名
requestpwd 为接受HTML页中输入密码的INPUT控件名
tablename 为数据库中保存注册信息的表名
namefield 为该信息表中存放用户名称的字段名
pwdfield 为该信息表中存放用户密码的字段名
reurl 为登录正确后跳转的页
引用示例如下:
<%
call chk_regist("b_name","b_pwd","cn_admin","cn_name","cn_pwd","admin.asp")
%>
调试地址:
http://www.cnbruce.com/test/function/regist.asp
|
如果数据库里的密码是通过md5加密
sqltext="select * from Manage_User where UserName='" & request.form("uid") & "' and PassWord='" &md5( request.form("pwd1")) & "'"
该sql的语句是对的
我前几天就遇到了一个这样的问题,当时就没有用md5( request.form("pwd1")) 导致编译出错。
不过上面的语句查询确实不是最好,对数据库的负担比较的大
上面的比较合理 |
beyondqss在上个帖子中说
有两点想请教大家:
(1)我添加了MD5在"sqltext="select * from Manage_User where UserName='" & request.form("uid") & "' and PassWord='" &md5( request.form("pwd1")) & "'"
rs.open sqltext,conn,1,1
"中后,当输入密码与上一次相同时,会提示"此管理员帐号已经存在,请选用其它名称!",而当用户帐号相同时提示却不起作用,这是什么原因?
(2)我试了把rs.recordcount >= 1换成rs.eof and rs.bof,好像不行,这样就无法提交了,不知什么原因? |
|