蓝森林首页 | 返回主页 | 本站地图 | 站内搜索 | 联系信箱 |
 您目前的位置:首页 > 自由软件 > 技术交流 > 应用编程


    

蓝森林 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,好像不行,这样就无法提交了,不知什么原因?




Copyright © 1999-2000 LSLNET.COM. All rights reserved. 蓝森林网站 版权所有。 E-mail : webmaster@lslnet.com