Dvbbs在用户注册时缺少对其他整合系统用户名检测解决方法

一、问题

Dvbbs在用户注册时没有对其他整合系统用户名进行检测,这会导致用系统中存在的用户名进行注册时其他系统注册成功而动网注册失败,结果是其他系统中存在用户名一样的多个用户!这个问题在Dvbbs7.1、8.0、8.1中均存在。

二、分析

一个完整的注册流程应是:

其他系统用户名检测→动网用户名检测→其他系统用户注册→动网用户注册

当然,也可以省略掉第一个步骤:

动网用户名检测→其他系统用户注册→动网用户注册

但是动网现在的注册步骤是:

其他系统用户注册→动网用户名检测→动网用户注册

可以说流程存在问题,也可以说缺少了其他系统的用户名检测。

三、解决方法

打开reg.asp,找到reg_3函数,将系统整合注册部分代码移到动网用户名检测之后即可,修改结果如下(红色部分代码移到了现在的位置):

Rs.Open Sql,Conn,1,3
If Not Rs.Eof Then
    If Request("Forum_Passport")<>"" And Cint(Dvbbs.Forum_Setting(24))=1 Then
        Response.redirect "showerr.asp?ErrCodes=<li>您填写的用户名已经被注册或者已经有用户使用了您填写的电子邮件地址。<li>或者您选择了填写了论坛通行证帐号,但所使用的通行证在本论坛已经被使用,您可以选择使用该<a href=login.asp>通行证登录论坛</a>。&action=OtherErr"
    ElseIf Request("Forum_Passport")<>"" Then
        Response.redirect "showerr.asp?ErrCodes=<li>您填写的用户名已经被注册。<li>或者您选择了填写了论坛通行证帐号,但所使用的通行证在本论坛已经被使用,您可以选择使用该<a href=login.asp>通行证登录论坛</a>。&action=OtherErr"
    ElseIf Cint(Dvbbs.Forum_Setting(24))=1 Then
        Response.redirect "showerr.asp?ErrCodes=<li>您填写的用户名已经被注册或者已经有用户使用了您填写的电子邮件地址。&action=OtherErr"
    Else
        Response.redirect "showerr.asp?ErrCodes=<li>您填写的用户名已经被注册。&action=OtherErr"
    End If
    Exit Sub
Else
    '-----------------------------------------------------------------
    '系统整合
    '-----------------------------------------------------------------
    Dim DvApi_Obj,DvApi_SaveCookie,SysKey
    If DvApi_Enable Then
        'SysKey = Md5(UserName&DvApi_SysKey,16)
        Set DvApi_Obj = New DvApi
            'DvApi_Obj.NodeValue "syskey",SysKey,0,False
            DvApi_Obj.NodeValue "action","reguser",0,False
            DvApi_Obj.NodeValue "username",UserName,1,False
            Md5OLD = 1
            SysKey = Md5(DvApi_Obj.XmlNode("username")&DvApi_SysKey,16)
            Md5OLD = 0
            DvApi_Obj.NodeValue "syskey",SysKey,0,False
            DvApi_Obj.NodeValue "password",pass2,0,False
            DvApi_Obj.NodeValue "email",UserEmail,1,False
            DvApi_Obj.NodeValue "question",quesion,1,False
            DvApi_Obj.NodeValue "answer",Request.form("answer"),1,False
            DvApi_Obj.NodeValue "truename",Request.Form("realname"),1,False
            DvApi_Obj.NodeValue "gender",sex,0,False
            DvApi_Obj.NodeValue "birthday",birthday,0,False
            DvApi_Obj.NodeValue "qq",Qq,1,False
            DvApi_Obj.NodeValue "msn",Request.form("msn"),1,False
            DvApi_Obj.NodeValue "mobile",Request.Form("userphone"),1,False
            DvApi_Obj.NodeValue "homepage",Request.form("homepage"),1,False
            DvApi_Obj.SendHttpData
            If DvApi_Obj.Status = "1" Then
                Response.redirect "showerr.asp?ErrCodes="& DvApi_Obj.Message &"&action=OtherErr"
                Exit Sub
            Else
                DvApi_SaveCookie = DvApi_Obj.SetCookie(SysKey,UserName,Password,Request("usercookies"))
            End If
        Set DvApi_Obj = Nothing
    End If
    '-----------------------------------------------------------------

    Rs.AddNew
    UserJoinTime = Now()
    Rs("UserName")=username
    Rs("UserPassword")=password
    Rs("UserEmail")=useremail
    Rs("Userclass")=userclass
    Rs("TitlePic")=titlepic
    Rs("UserQuesion")=quesion
    Rs("UserAnswer")=answer
    Rs("TruePassWord")=TruePassWord
    Rs("UserIM")=UserIM
    If Request.Form("Signature")<>"" Then Rs("UserSign")=Dvbbs.Htmlencode(Trim(Request.Form("Signature")))
    Rs("UserPost")=0
    If Dvbbs.Forum_Setting(25)="1" Then
        Rs("UserGroupID")=5
    Else
        Rs("UserGroupID")=Dvbbs.UserGroupID
    End If
    Rs("Lockuser")=0
    Rs("UserSex")=sex
    If birthday<>"" Then rs("UserBirthday")=birthday
    'Rs("UserGroup")=Request.form("UserGroup")
    Rs("JoinDate")=UserJoinTime
    If Request.form("myface")<>"" Then
        Rs("UserFace")=replace(Dv_FilterJS(face),"'","")
    Else
        Rs("UserFace")=replace(Dv_FilterJS(face),"'","")
    End If
    Rs("UserWidth")=Width
    Rs("Usertoday")="0|0|0|0|0"
    Rs("UserHeight")=height
    Rs("UserLogins")=1
    Rs("LastLogin")=UserJoinTime
    Rs("userWealth")=dvbbs.Forum_user(0)
    Rs("userEP")=dvbbs.Forum_user(5)
    Rs("usercP")=dvbbs.Forum_user(10)
    Rs("UserInfo")=userinfo
    Rs("UserSetting")=usersetting
    Rs("UserPower")=0
    Rs("UserDel")=0
    Rs("UserIsbest")=0
    Rs("UserMoney")=0
    Rs("UserTicket")=0
    Rs("UserFav")="陌生人,我的好友,黑名单"
    Rs("IsChallenge")=0
    Rs("UserHidden")=0
    Rs("UserLastIP")=Dvbbs.UserTrueIP
    Rs.Update
    Dvbbs.Execute("Update Dv_Setup Set Forum_UserNum=Forum_UserNum+1,Forum_lastUser='"&Dvbbs.HtmlEncode(username)&"'")
    
End If


评论: 0 | 引用: 0 | 查看次数: 4529
发表评论
登录后再发表评论!