select case ctype
case 1
If datediff("d",UserLastLogin,Now())=0 Then
sql="update [Dv_User] set LastLogin="&SqlNowString&",UserLogins=UserLogins+1,UserLastIP='"&lastip&"',userclass='"&userclass&"',titlepic='"&titlepic&"',UserGroupID="&GroupID&",TruePassWord='"&TruePassWord&"' where userid="&dvbbs.UserID
Else
sql="update [Dv_User] set userWealth=userWealth+"&Dvbbs.Forum_user(4)&",userEP=userEP+"&Dvbbs.Forum_user(9)&",userCP=userCP+"&Dvbbs.Forum_user(14)&",LastLogin="&SqlNowString&",UserLogins=UserLogins+1,UserLastIP='"&lastip&"',userclass='"&userclass&"',titlepic='"&titlepic&"',UserGroupID="&GroupID&",TruePassWord='"&TruePassWord&"' where userid="&dvbbs.UserID
End If
case 2
sql="update [Dv_User] set UserPost=UserPost+1,UserTopic=UserTopic+1,userWealth=userWealth+"&Dvbbs.Forum_user(1)&",userEP=userEP+"&Dvbbs.Forum_user(6)&",userCP=userCP+"&Dvbbs.Forum_user(11)&",LastLogin="&SqlNowString&",UserLastIP='"&lastip&"',userclass='"&userclass&"',titlepic='"&titlepic&"',UserGroupID="&GroupID&",TruePassWord='"&TruePassWord&"' where userid="&dvbbs.UserID
case 3
sql="update [Dv_User] set UserPost=UserPost+1,userWealth=userWealth+"&Dvbbs.Forum_user(2)&",userEP=userEP+"&Dvbbs.Forum_user(7)&",userCP=userCP+"&Dvbbs.Forum_user(12)&",LastLogin="&SqlNowString&",UserLastIP='"&lastip&"',userclass='"&userclass&"',titlepic='"&titlepic&"',UserGroupID="&GroupID&",TruePassWord='"&TruePassWord&"' where userid="&dvbbs.UserID
end select
Dvbbs.Execute(sql)
Dim StatUserID,UserSessionID
StatUserID = Dvbbs.checkStr(Trim(Request.Cookies(Dvbbs.Forum_sn)("StatUserID")))
If IsNumeric(StatUserID) = 0 or StatUserID = "" Then
StatUserID = Replace(Dvbbs.UserTrueIP,".","")
UserSessionID = Replace(Startime,".","")
If IsNumeric(StatUserID) = 0 or StatUserID = "" Then StatUserID = 0
StatUserID = Ccur(StatUserID) + Ccur(UserSessionID)
End If
StatUserID = Ccur(StatUserID)
Dvbbs.Execute("delete from dv_online where id="&StatUserID&"")
If trim(username)<>trim(Dvbbs.membername) Then
Response.Cookies(Dvbbs.Forum_sn)("username")=""
Response.Cookies(Dvbbs.Forum_sn)("password")=""
Response.Cookies(Dvbbs.Forum_sn)("userclass")=""
Response.Cookies(Dvbbs.Forum_sn)("userid")=""
Response.Cookies(Dvbbs.Forum_sn)("userhidden")=""
Response.Cookies(Dvbbs.Forum_sn)("usercookies")=""
Dvbbs.Execute("delete from dv_online where username='"&Dvbbs.membername&"'")
End If
If isnull(usercookies) or usercookies="" Then usercookies="0"
select case usercookies
case "0"
Response.Cookies(Dvbbs.Forum_sn)("usercookies") = usercookies
case 1
Response.Cookies(Dvbbs.Forum_sn).Expires=Date+1
Response.Cookies(Dvbbs.Forum_sn)("usercookies") = usercookies
case 2
Response.Cookies(Dvbbs.Forum_sn).Expires=Date+31
Response.Cookies(Dvbbs.Forum_sn)("usercookies") = usercookies
case 3
Response.Cookies(Dvbbs.Forum_sn).Expires=Date+365
Response.Cookies(Dvbbs.Forum_sn)("usercookies") = usercookies
end select
Response.Cookies(Dvbbs.Forum_sn).path = Dvbbs.cookiepath
Response.Cookies(Dvbbs.Forum_sn)("username") = regname
Response.Cookies(Dvbbs.Forum_sn)("userid") = Dvbbs.UserID
Response.Cookies(Dvbbs.Forum_sn)("password") = TruePassWord
Response.Cookies(Dvbbs.Forum_sn)("userclass") = userclass
Response.Cookies(Dvbbs.Forum_sn)("userhidden") = userhidden
rem 清除图片上传数的限制
Response.Cookies("upNum")=0
Dim iUserInfo
iUserInfo = Session(Dvbbs.CacheName & "UserID")
iUserInfo(35) = TruePassWord
Session(Dvbbs.CacheName & "UserID") = iUserInfo
End If
End Function
Rem ==========论坛登录函数=========
Rem 判断用户登录
Function ChkUserLogin(username,password,mobile,usercookies,ctype)
Dim rsUser,article,userclass,titlepic
Dim userhidden,lastip,UserLastLogin
Dim UserGrade,GroupID,ClassSql,FoundGrade
Dim regname,iMyUserInfo
Dim sql,sqlstr,GroupID_Q
FoundGrade=False
lastip=Dvbbs.UserTrueIP
userhidden=request.form("userhidden")
If not isnumeric(userhidden) and userhidden="" Then userhidden=2
ChkUserLogin=false
If mobile<>"" Then
sqlstr=" UserMobile='"&mobile&"'"
Else
sqlstr=" UserName='"&username&"'"
End If
'Session(Dvbbs.CacheName & "UserID")用户资料=0dvbbs+1刷新时间+2发贴时间+3所在版面ID+4用户ID+5用户名+6用户密码+7用户邮箱+8用户文章数+9用户主题数+10用户性别+11用户头像+12用户头像宽+13用户头像高+14用户注册时间+15用户最后登陆时间+16用户登陆次数+17用户状态+18用户等级+19用户组ID+20用户组名+21用户金钱+22用户积分+23用户魅力+24用户威望+25用户生日+26最后登陆IP+27用户被删除数+28用户精华数+29用户隐身状态+30用户短信情况+31用户阳光会员+32用户手机+33用户组图标+34用户头衔+35验证密码+36用户今日信息+37+临时数据+38Dvbbs
Sql="Select UserID,UserName,UserPassword,UserEmail,UserPost,UserTopic,UserSex,UserFace,UserWidth,UserHeight,JoinDate,LastLogin,UserLogins,Lockuser,Userclass,UserGroupID,UserGroup,userWealth,userEP,userCP,UserPower,UserBirthday,UserLastIP,UserDel,UserIsBest,UserHidden,UserMsg,IsChallenge,UserMobile,TitlePic,UserTitle,TruePassWord,UserToday "
Sql=Sql+" From [Dv_User] Where "&sqlstr&""
set rsUser=Dvbbs.Execute(sql)
If rsUser.eof and rsUser.bof Then
ChkUserLogin=false
Exit Function
Else
iMyUserInfo=rsUser.GetString(,1, "|||", "", "")
rsUser.Close:Set rsUser = Nothing
End If
iMyUserInfo = "Dvbbs|||"& Now & "|||" & Now &"|||"& Dvbbs.BoardID &"|||"& iMyUserInfo &"||||||Dvbbs"
iMyUserInfo = Split(iMyUserInfo,"|||")
If trim(password)<>trim(iMyUserInfo(6)) Then
ChkUserLogin=false
ElseIf iMyUserInfo(17)=1 Then
ChkUserLogin=false
ElseIf iMyUserInfo(19)=5 Then
ChkUserLogin=false
Else
ChkUserLogin=True
Session(Dvbbs.CacheName & "UserID") = iMyUserInfo
Dvbbs.UserID = iMyUserInfo(4)
RegName = iMyUserInfo(5)
Article = iMyUserInfo(8)
UserLastLogin = iMyUserInfo(15)
UserClass = iMyUserInfo(18)
GroupID = iMyUserInfo(19)
TitlePic = iMyUserInfo(34)
If Article<0 Then Article=0
End If
If ChkUserLogin Then
REM 判断用户等级资料,当用户级别为跟随文章数增长则自动更新等级
REM 自动更新用户数据
set rsUser=Dvbbs.Execute("select MinArticle,IsSetting,ParentGID from Dv_UserGroups where usertitle='"&userclass&"'")
If rsUser.eof and rsUser.bof Then
'如果没有找到用户等级
'先判断该组是否有按照文章升级的,也就是MinArticle不是-1的
set UserGrade=Dvbbs.Execute("select top 1 usertitle,GroupPic,UserGroupID,IsSetting,ParentGID from Dv_UserGroups where (ParentGID="&GroupID&" Or UserGroupID="&GroupID&") and Minarticle<="&article&" and not Minarticle=-1 order by MinArticle desc")
If not (UserGrade.eof and UserGrade.bof) Then
userclass=UserGrade(0)
titlepic=UserGrade(1)
If UserGrade(3)=1 Then
GroupID=UserGrade(2)
Else
GroupID=UserGrade(4)
End If
FoundGrade=True
End If
If not FoundGrade Then
'该组在等级表中不按照文章升级
set UserGrade=Dvbbs.Execute("select top 1 usertitle,GroupPic,UserGroupID,IsSetting,ParentGID from Dv_UserGroups where UserGroupID="&GroupID&" and Minarticle=-1 order by UserGroupID")
If not (UserGrade.eof and UserGrade.bof) Then
userclass=UserGrade(0)
titlepic=UserGrade(1)
If UserGrade(3)=1 Then
GroupID=UserGrade(2)
Else
GroupID=UserGrade(4)
End If
FoundGrade=True
End If
If not FoundGrade Then
'如果在等级表中未找到相关记录,则使用组名定义等级,采用最低等级用户的图片
set UserGrade=Dvbbs.Execute("select top 1 GroupPic from Dv_UserGroups where ParentGID>0 And not Minarticle=-1 order by MinArticle")
titlepic=UserGrade(0)
set UserGrade=Dvbbs.Execute("select usertitle from Dv_UserGroups where UserGroupID="&GroupID)
userclass=UserGrade(0)
End If
End If
Else
'找到用户等级
'用户等级按照发布文章升级
If rsUser(0)>-1 Then
'如果为自定义等级,则取其父类GroupID做升级依据
GroupID_Q=GroupID
If RsUser(1)=1 And RsUser(2)>0 Then GroupID_Q=RsUser(2)
set UserGrade=Dvbbs.Execute("select top 1 usertitle,GroupPic,UserGroupID,IsSetting,ParentGID from Dv_UserGroups where ParentGID="&GroupID_Q&" and Minarticle<="&article&" and not MinArticle=-1 order by MinArticle desc,UserGroupID")
If not (UserGrade.eof and UserGrade.bof) Then
userclass=UserGrade(0)
titlepic=UserGrade(1)
If UserGrade(3)=1 Then
GroupID=UserGrade(2)
Else
GroupID=UserGrade(4)
End If
FoundGrade=True
End If
'如果没有相关用户组的等级记录,则采用用户组名称定义等级,采用最低等级用户的图片
'该情况出现于认证用户组或者添加了用户组没有添加相关等级的用户组
If not FoundGrade Then
set UserGrade=Dvbbs.Execute("select top 1 GroupPic from Dv_UserGroups where ParentGID>0 And not Minarticle=-1 order by MinArticle")
titlepic=UserGrade(0)
set UserGrade=Dvbbs.Execute("select usertitle from Dv_UserGroups where UserGroupID="&GroupID)
userclass=UserGrade(0)
End If
Else
'用户等级不按照文章升级
set UserGrade=Dvbbs.Execute("select usertitle,GroupPic,UserGroupID,IsSetting,ParentGID from Dv_UserGroups where usertitle='"&userclass&"'")
If not (UserGrade.eof and UserGrade.bof) Then
userclass=UserGrade(0)
titlepic=UserGrade(1)
If UserGrade(3)=1 Then
GroupID=UserGrade(2)
Else
GroupID=UserGrade(4)
End If
End If
End If
End If
set rsUser=nothing
set UserGrade=nothing
Dim TruePassWord
TruePassWord=Dvbbs.Createpass
Select Case request("action")
Case "chk"
Dvbbs_ChkLogin
Dvbbs.Showerr()
End Select
Function Dvbbs_ChkLogin
Dim UserIP
Dim username
Dim userclass
Dim password
Dim article
Dim usercookies
Dim mobile
Dim chrs,i
If Dvbbs.forum_setting(79)="1" Then
If Not Dvbbs.CodeIsTrue() Then
Response.redirect "showerr.asp?ErrCodes=<li>验证码校验失败,请返回刷新页面后再输入验证码。&action=OtherErr"
End If
End If
UserIP=Dvbbs.UserTrueIP
mobile=trim(Dvbbs.CheckStr(request("mobile")))
if mobile<>"" and request("username")="" then
if len(mobile)<>11 then
Dvbbs.AddErrCode(9)
end if
end if
if mobile<>"" then
if len(mobile)<>11 then mobile=""
end if
If request("username")="" Then
If request("mobile")="" Then
Dvbbs.AddErrCode(10)
End If
Else
username=trim(Dvbbs.CheckStr(request("username")))
End If
If request("password")="" and mobile="" Then
Dvbbs.AddErrCode(11)
Else
password=md5(trim(Dvbbs.CheckStr(request("password"))),16)
End If
If Dvbbs.ErrCodes<>"" Then Exit Function
usercookies=request("CookieDate")
'判断更新cookies目录
Dim cookies_path_s,cookies_path_d,cookies_path
cookies_path_s=split(Request.ServerVariables("PATH_INFO"),"/")
cookies_path_d=ubound(cookies_path_s)
cookies_path="/"
For i=1 to cookies_path_d-1
If not (cookies_path_s(i)="upload" or cookies_path_s(i)="admin") Then cookies_path=cookies_path&cookies_path_s(i)&"/"
Next
If dvbbs.cookiepath<>cookies_path Then
cookies_path=replace(cookies_path,"'","")
Dvbbs.execute("update dv_setup set Forum_Cookiespath='"&cookies_path&"'")
Dim setupData
Dvbbs.CacheData(26,0)=cookies_path
Dvbbs.Name="setup"
Dvbbs.value=Dvbbs.CacheData
End If
If ChkUserLogin(username,password,mobile,usercookies,1)=false Then
'本地验证未通过,使用手机号登录的
If mobile<>"" Then
challenge_check mobile,password
Exit Function
'本地验证未通过,使用用户名登录的,并且是高级用户则继续主服务器验证流程
Else
set chrs=Dvbbs.Execute("select UserMobile,IsChallenge from [Dv_User] where username='"&username&"' and IsChallenge=1")
If chrs.eof and chrs.bof Then
Dvbbs.AddErrCode(12)
Exit Function
Else
challenge_check chrs("UserMobile"),password
Exit Function
End If
set chrs=nothing
End If
End If
Dim comeurlname
If instr(lcase(request("comeurl")),"reg.asp")>0 or instr(lcase(request("comeurl")),"login.asp")>0 or trim(request("comeurl"))="" Then
comeurlname=""
comeurl="index.asp"
Else
comeurl=request("comeurl")
comeurlname="<li><a href="&request("comeurl")&">"&request("comeurl")&"</a></li>"
End If
Dim TempStr
'TempStr = template.html(2)
'If Dvbbs.Forum_ChanSetting(0)=1 And Dvbbs.Forum_ChanSetting(10)=1 And Dvbbs.Forum_ChanSetting(12)=1 Then
'TempStr = Replace(TempStr,"{$ray_logininfo}",template.html(3))
'Else
'TempStr = Replace(TempStr,"{$ray_logininfo}","")
'End If
'TempStr = Replace(TempStr,"{$comeurl}",comeurl)
'TempStr = Replace(TempStr,"{$comeurlinfo}",comeurlname)
'TempStr = Replace(TempStr,"{$forumname}",Dvbbs.Forum_Info(0))
'Response.Write TempStr
'-------------------------------------------------------
'------------------到这里登陆成功,把 session加在这里就好了,至于跳转到什么页,你们可以自己加的。
'Response.Write "登陆成功"
session("MM_username")=username 'to : jidechen(残影剑)
TempStr=""
End Function
'全网认证
Function challenge_check(mobile,password)
If Not(Dvbbs.Forum_ChanSetting(0)=1 And Dvbbs.Forum_ChanSetting(10)=1) Then
Dvbbs.AddErrCode(13)
exit function
End If
Dim rs
Dim MyForumID
Dim PostChanWord
set rs=Dvbbs.Execute("select top 1 * from Dv_ChallengeInfo")
MyForumID=rs("D_ForumID")
PostChanWord=Get_ChallengeWord
Dim TempStr,TempArray
TempArray = Split(template.html(19),"||")
TempStr = TempArray(0)
TempStr = Replace(TempStr,"{$mobile}",mobile)
TempStr = Replace(TempStr,"{$password}",password)
TempStr = Replace(TempStr,"{$MyForumID}",MyForumID)
TempStr = Replace(TempStr,"{$serverurl}",Dvbbs.Get_ScriptNameUrl())
TempStr = Replace(TempStr,"{$PostChanWord}",PostChanWord)
TempStr = Replace(TempStr,"{$remobile}",left(mobile,3)&"xxx"&right(mobile,5))
TempStr = Replace(TempStr,"{$usermobile}",left(mobile,3)&"xxx"&right(mobile,5))
If PassWord<>"" Then
TempStr = Replace(TempStr,"{$ifpassnull}",TempArray(1))
Else
TempStr = Replace(TempStr,"{$ifpassnull}","")
End If
Response.Write TempStr
TempStr = ""
set rs=nothing
End Function
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>动网先锋论坛-填写登录信息</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">