%@ LANGUAGE = VBScript CodePage = 936%> <% Option Explicit Response.Buffer = True Dim Startime Dim Dvbbs,template Dim SqlNowString,Conn '定义数据库类别,1为SQL数据库,0为Access数据库 Const IsSqlDataBase = 0 '论坛缓存名称,如果一个站点有多个论坛请更改成不同名称 Const Forum_CacheName = "aspsky" '定义运行模式,测试的时候设置1,正常运行的时候设置为0,不输出错误信息有利于安全, Const IsDeBug = 1 Startime = Timer() Dim MyBoardOnline Dim Db Set Dvbbs = New Cls_Forum Set MyBoardOnline=new Cls_UserOnlne Set template = New cls_templates If IsSqlDataBase = 1 Then SqlNowString = "GetDate()" Else SqlNowString = "Now()" End If Sub ConnectionDatabase Dim ConnStr If IsSqlDataBase = 1 Then 'sql数据库连接参数:数据库名、用户密码、用户名、连接名(本地用local,外地用IP) Dim SqlDatabaseName,SqlPassword,SqlUsername,SqlLocalName SqlDatabaseName = "dvbbs7" SqlPassword = "" SqlUsername = "dvbbs" SqlLocalName = "(local)" ConnStr = "Provider = Sqloledb; User ID = " & SqlUsername & "; Password = " & SqlPassword & "; Initial Catalog = " & SqlDatabaseName & "; Data Source = " & SqlLocalName & ";" Else '免费用户第一次使用请修改本处数据库地址并相应修改data目录中数据库名称,如将dvbbs6.mdb修改为dvbbs6.asp Db = "data/dv.asp" ConnStr = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath(db) End If On Error Resume Next Set conn = Server.CreateObject("ADODB.Connection") conn.open ConnStr If Err Then err.Clear Set Conn = Nothing Response.Write "数据库连接出错,请检查连接字串。"'注释,需要把这几个字翻译成英文。 Response.End End If End Sub %> <% '========================================================= ' File: Dv_ClsMain.asp ' Version:7.0 sp2 ' Date: 2004-6-30 ' Script Written by dvbbs.net '========================================================= ' Copyright (C) 2003,2004 AspSky.Net. All rights reserved. ' Web: http://www.aspsky.net,http://www.dvbbs.net ' Email: info@aspsky.net,eway@aspsky.net '========================================================= '======================================== ' 更新说明,加强过滤,加入对Chr(0)的过滤= ' 同时解决封IP中伪造cookies信息 = ' 和通过访问一下管理页躲过封IP的问题 = '======================================== Dim Ad_3(100),i3 Class Cls_Forum Rem Const Public BoardID,SqlQueryNum,Forum_Info,Forum_Setting,Forum_user,Forum_Copyright,Forum_ads,Forum_ChanSetting Public Forum_sn,Forum_Version,Stats,StyleName,ErrCodes,NowUseBBS,Cookiepath Public lanstr,mainhtml,mainsetting,sysmenu,mainpic Public MyUserInfo,UserToday,BoardJumpList,BoardList,CacheData,Maxonline Public UserGroupID,Lastlogin,GroupSetting,FoundUserPer Public Vipuser,Boardmaster,Superboardmaster,Master,FoundIsChallenge,FoundUser Public ScriptName,MemberName,MemberWord,MemberClass,UserHidden,UserID,UserTrueIP,UserPermission Public sendmsgnum,sendmsgid,sendmsguser,Page_Admin,Forum_AdLoop3 Public BadWords,rBadWord,Forum_emot,Forum_PostFace,Forum_UserFace,SkinID,Forum_PicUrl Private adcode_1,adcode_2,adcode_4,ScriptTrueUrl,Forum_CSS,Main_Sid,ReloadCount,Nowstats,CssID Public Reloadtime,CacheName,savelog Private LocalCacheName,Cache_Data,IsTopTable,CookiesSid,BoardInfoData Public Board_Setting,boarduser,LastPost,Board_Ads,Board_user,BoardType,IsGroupSetting,BoardMasterList,Board_Data,Sid,Boardreadme,BoardRootID,BoardParentID Rem Sub Private Sub Class_Initialize() savelog=0'设置为1的时候会记录攻击或错误错信息。 SqlQueryNum = 0 Reloadtime=14400 CacheName=Replace(Replace(Replace(Server.MapPath("index.asp"),"index.asp",""),":",""),"\","") ReloadCount=0 IsTopTable = 0 Forum_sn = LCase(Replace(Request.ServerVariables("SERVER_NAME") & Request.ServerVariables("URL"),Split(request.ServerVariables("SCRIPT_NAME"),"/")(ubound(Split(request.ServerVariables("SCRIPT_NAME"),"/"))),"")) Vipuser = False:Boardmaster = False Superboardmaster = False:Master = False:FoundIsChallenge = False:FoundUser = False BoardID = Request("BoardID") If IsNumeric(BoardID) = 0 or BoardID = "" Then BoardID = 0 BoardID = Clng(BoardID) MemberName = checkStr(Trim(Request.Cookies(Forum_sn)("username"))) MemberWord = checkStr(Trim(Request.Cookies(Forum_sn)("password"))) UserHidden = Request.Cookies(Forum_sn)("userhidden") UserID = Trim(Request.Cookies(Forum_sn)("UserID")) If IsNumeric(UserHidden) = 0 or Userhidden = "" Then UserHidden = 2 If IsNumeric(UserID) = 0 Or UserID="" Then UserID=0 UserID = Clng(UserID) UserTrueIP = Request.ServerVariables("HTTP_X_FORWARDED_FOR") If UserTrueIP = "" Then UserTrueIP = Request.ServerVariables("REMOTE_ADDR") UserTrueIP = CheckStr(UserTrueIP) Dim Tmpstr Tmpstr = Request.ServerVariables("PATH_INFO") Tmpstr = Split(Tmpstr,"/") ScriptName = Lcase(Tmpstr(UBound(Tmpstr))) MemberClass = checkStr(Request.Cookies(Forum_sn)("userclass")) Page_Admin=False If InStr(ScriptName,"showerr")>0 Or InStr(ScriptName,"login")>0 Or InStr(ScriptName,"admin_")>0 Then Page_Admin=True sendmsgnum=0:sendmsgid=0:sendmsguser="" End Sub Private Sub class_terminate() If IsObject(Conn) Then Conn.Close:Set Conn = Nothing End Sub Public Property Let Name(ByVal vNewValue) LocalCacheName = LCase(vNewValue) End Property Public Property Let Value(ByVal vNewValue) If LocalCacheName<>"" Then ReDim Cache_Data(2) Cache_Data(0)=vNewValue Cache_Data(1)=Now() Application.Lock Application(CacheName & "_" & LocalCacheName) = Cache_Data Application.unLock Else Err.Raise vbObjectError + 1, "DvbbsCacheServer", " please change the CacheName." End If End Property Public Property Get Value() If LocalCacheName<>"" Then Cache_Data=Application(CacheName & "_" & LocalCacheName) If IsArray(Cache_Data) Then Value=Cache_Data(0) Else Err.Raise vbObjectError + 1, "DvbbsCacheServer", " The Cache_Data("&LocalCacheName&") Is Empty." End If Else Err.Raise vbObjectError + 1, "DvbbsCacheServer", " please change the CacheName." End If End Property Public Function ObjIsEmpty() ObjIsEmpty=True Cache_Data=Application(CacheName & "_" & LocalCacheName) If Not IsArray(Cache_Data) Then Exit Function If Not IsDate(Cache_Data(1)) Then Exit Function If DateDiff("s",CDate(Cache_Data(1)),Now()) < (60*Reloadtime) Then ObjIsEmpty=False End Function Public Sub DelCahe(MyCaheName) Application.Lock Application.Contents.Remove(CacheName&"_"&MyCaheName) Application.unLock End Sub '取得基本设置数据 Public Sub GetForum_Setting() Name="setup" If ObjIsEmpty() Then ReloadSetup() CacheData=value '每日更新数据 'DelCahe "Date" '第一次起用论坛或者重启IIS的时候加载缓存 Name="Date" If ObjIsEmpty() Then value=Date() Call ReloadAllForumInfo Call ReloadAllBoardInfo Else If Cstr(value) <> Cstr(Date()) Then Call ReloadAllForumInfo Call ReloadAllBoardInfo Name="setup" Call ReloadSetup() CacheData=value End If End If Dim Setting Setting=CacheData(1,0) Setting = Split(Setting,"|||") Forum_Info = Setting(0) Forum_Info = Split (Forum_Info,",") Forum_Setting = Setting(1) Forum_Setting = Split (Forum_Setting,",") Forum_user = Setting(2) Forum_user = Split (Forum_user,",") Forum_Copyright = Setting(3) Forum_ChanSetting = CacheData(24,0) Forum_ChanSetting = Split(Forum_ChanSetting,",") Forum_Version = CacheData(18,0) BadWords = Split(CacheData(3,0),"|") rBadWord = Split(CacheData(4,0),"|") Main_Sid=CacheData(17,0) Maxonline = CacheData(5,0) NowUseBBS = CacheData(19,0) Cookiepath = CacheData(26,0) 'IP锁定 If Request.Cookies(Forum_sn & "Kill")("kill") = "1" Then If Not Page_Admin Then Response.Redirect "showerr.asp?action=iplock" Exit Sub End If ElseIf Not ( Request.Cookies(Forum_sn & "Kill")("kill") = "0" And Not IsEmpty(Session(CacheName & "UserID")) ) Then Call ChecKIPlock If Request.Cookies(Forum_sn & "Kill")("kill") = "1" Then If Not Page_Admin Then Response.Redirect "showerr.asp?action=iplock" Exit Sub End If End If End If '关闭论坛相关部分 If Forum_Setting(21)="1" And Not Page_Admin Then Response.redirect "showerr.asp?action=stop" Dim OpenTime,ischeck '判断BoardID的值,获取对应的设置 If BoardID>0 Then If Not InStr((","&cachedata(27,0)&","),(","&BoardID&","))>0 Then Response.Write "错误的版面参数" Response.End End If Name="BoardInfo_" & BoardID If ObjIsEmpty() Then ReloadBoardInfo(BoardID) Board_Data = Value boarduser = Split(Board_Data(13,0) & "",",") Board_Ads = Split(Board_Data(17,0),"$") Board_user = Split(Board_Data(18,0),",") Forum_user = Board_User board_Setting = Split(Board_Data(16,0),",") LastPost = Split(Board_Data(14,0),"$") BoardType = Board_Data(1,0) IsGroupSetting = Board_Data(19,0) BoardMasterList = Board_Data(8,0) BoardRootID = Board_Data(5,0) BoardParentID=Board_Data(2,0) Sid = Board_Data(15,0) Boardreadme=Board_Data(7,0) If Len(Board_Setting(22))< 24 Then Board_Setting(22)="1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1" End If OpenTime=Split(Board_Setting(22),"|") setting=Board_Setting(21) Forum_ads =Board_Ads ischeck=Clng(Board_Setting(18)) If Board_Setting(50)<>"0" And Board_Setting(50)<>"" Then Response.Redirect Board_Setting(50) If IsNumeric(Board_Data(21,0)) And CLng(Board_Data(6,0)) > 0 And CInt(Board_Data(4,0))< 2 Then Call LoadBoardList(BoardID,1) If IsNumeric(Board_Data(26,0)) And CLng(Board_Data(6,0)) > 0 And CInt(Board_Data(4,0))< 2 Then Call LoadBoardList(BoardID,0) '杨铮注:Board_Data(6,0) 为子论坛个数,当为空值时便会出错,检查 Dv_Board 表 Child 字段。 Else Forum_ads = CacheData(2,0) Forum_ads = Split(Forum_ads,"$") If Len(Forum_Setting(70))< 24 Then Forum_Setting(70)="1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1" End If OpenTime=Split(Forum_Setting(70),"|") setting=Forum_Setting(69) ischeck=Forum_Setting(26) If Not IsNumeric(ischeck) Then ischeck=0 ischeck=CLng(ischeck) End If '定时开放判断 If Not Page_Admin And Cint(setting)=1 Then If OpenTime(Hour(Now))="0" Then Response.redirect "showerr.asp?action=stop&boardid="&Dvbbs.BoardID&"" End If End If '在线人数限制 If ischeck > 0 And Not Page_Admin Then If MyBoardOnline.Forum_Online > ischeck And BoardID=0 Then If Not IsONline(Membername,1) Then Response.Redirect "showerr.asp?action=limitedonline&lnum="&ischeck End If If BoardID<> 0 Then If (Not IsONline(Membername,1)) And MyBoardOnline.Board_Online > ischeck Then Response.Redirect "showerr.asp?action=limitedonline&lnum="&ischeck End If End If If Forum_ChanSetting(0)="1" And Forum_ChanSetting(1)="1" Then Get_Chan_Ad End Sub Public Function IsReadonly() IsReadonly=False Dim TimeSetting If Forum_Setting(69)="2" Then TimeSetting=split(Forum_Setting(70),"|") If TimeSetting(Hour(Now))="0" Then IsReadonly=True Exit Function End If End If If boardid<>0 Then If Board_Setting(21)="2" Then TimeSetting=split(Board_Setting(22),"|") If TimeSetting(Hour(Now))="0" Then IsReadonly=True End If End If End If End Function Public Function IsONline(UserName,action) IsONline=False If Trim(UserName)="" Then Exit Function If IsArray(Session(CacheName & "UserID")) And action=1 Then If Session(CacheName & "UserID")(0)="Dvbbs" Then IsONline=True:Exit Function End If End If Dim Rs Set Rs =Execute("Select Count(*) From Dv_Online Where Username='"&UserName&"'") If Rs(0)<> 0 Then IsONline=True Set rs=Nothing End Function Public Sub ReloadSetup() Dim SQL,Rs,i SQL = "Select * from [Dv_setup] " Set Rs = Execute(SQL) value = Rs.GetRows(1) Set Rs = Nothing End Sub Public Sub ReloadTemplateslist() Dim Rs,SQL,tmpdata SQL = "select ID,StyleName from [Dv_Style]" Set Rs = Execute(SQL) tmpdata = Rs.GetString(,,"|||","@@@","") tmpdata = Left(tmpdata,Len(tmpdata)-3) Set Rs = Nothing value=tmpdata End Sub Public Sub LoadTemplates(Page_Fields) Dim Style_Pic,Main_Style,TempStyle CookiesSid = Request.Cookies("skin")("SkinID_"&BoardID) If Not IsNumeric(CookiesSid) Or CookiesSid = "" Then If BoardID = 0 Then SkinID = Main_Sid Else SkinID = sid End If Else SkinID=CookiesSid End If SkinID=CLng(SkinID) Name="StyleName"&SkinID If ObjIsEmpty() Then TemplatesToCache ("StyleName") StyleName=value Name="Forum_CSS"&SkinID If ObjIsEmpty() Then TemplatesToCache ("Forum_CSS") '风格换肤修改 CssID=Request.Cookies("skin")("cssid_"&BoardID) If Not IsNumeric(CssID) OR CssID="" Then If boardid=0 Then CssID=CacheData(30,0) Else CssID=Board_Data(25,0) End If End If If CssID="" Or Not IsNumeric(CssID) Then CssID=0 CssID=CLng(CssID) TempStyle = value TempStyle = Split(TempStyle,"@@@") If CssID > UBound(Split(TempStyle(1),"|||"))-1 Then CssID = 0 End If Forum_CSS = Split(TempStyle(1),"|||")(CssID) '风格内容 Forum_PicUrl = Split(TempStyle(2),"|||")(CssID) '图片路径 Name = "Main_Style"&SkinID If ObjIsEmpty() Then TemplatesToCache ("Main_Style") Main_Style = Replace(value,"{$PicUrl}",Forum_PicUrl) '风格图片路径替换 If Not (Instr(ScriptName,"index")>0 Or Instr(ScriptName,"list")>0 Or Page_Admin) Then Name = "Style_Pic"&SkinID If ObjIsEmpty() Then TemplatesToCache ("Style_Pic") Style_Pic = Replace(value,"{$PicUrl}",Forum_PicUrl) '风格图片路径替换 Style_Pic = Split(Style_Pic,"@@@") Dim TmpArray(10),i For i=0 to UBound(Style_Pic) TmpArray(i) = Style_Pic(i) Next Forum_UserFace = TmpArray(0) Forum_PostFace = TmpArray(1) Forum_Emot = TmpArray(2) End If If Page_Fields<>"" Then Name="page_"&Page_Fields&SkinID If ObjIsEmpty() Then TemplatesToCache ("page_"&Page_Fields) Template.value = value End If Main_Style = Split(Main_Style,"@@@") mainhtml = Split(Main_Style(0),"|||") lanstr = Split(Main_Style(1),"|||") mainpic = Split(Main_Style(2),"|||") mainsetting = Split(mainhtml(0),"||") Forum_CSS = Replace(Forum_CSS,"{$width}",mainsetting(0)) Forum_CSS = Replace(Forum_CSS,"{$PicUrl}",Forum_PicUrl) End Sub Public Sub TemplatesToCache(Page_Fields) Dim Rs,SQL SQL = "Select "&Page_Fields&" from [Dv_Style] where id = " & SkinID Set Rs = Execute(SQL) If Not Rs.EOF Then value=Rs(0)&"" Else '处理错误 If boardid<>0 Then If Cint(SkinID)=Cint(sid) Then Fixsid() Else If SkinID=CInt(CacheData(17,0)) Then Call FixSetupsid() End if End If Response.redirect "cookies.asp?action=stylemod&SkinID=0&boardid="&Boardid End If Set Rs = Nothing End Sub Private Sub Fixsid() Dim Rs,SQL SQL = "Select Count(*) from [Dv_Style] where id = " & sid Set Rs = Execute(SQL) If Rs(0)=0 Then '把该版的SID更新为系统缺省的值 Execute("Update Dv_Board Set Sid="&CLng(CacheData(17,0))&" where BoardID="&BoardID&"") '更新该版面的缓存 ReloadBoardCache BoardID,CacheData(17,0),15,0 End If Set Rs = Nothing End Sub Private Sub FixSetupsid() Dim Rs,SQL SQL = "Select Top 1 ID from [Dv_Style] Order by ID" Set Rs = Execute(SQL) If Rs.EOF Then Response.Write "论坛模板数据是空的,请添加。" Response.End Else ReloadSetupCache Rs(0),17 Execute("Update Dv_Setup Set Forum_Sid="&Rs(0)&"") End If Set rs=Nothing End Sub Rem 判断发言是否来自外部 Public Function ChkPost() Dim server_v1,server_v2 Chkpost=False server_v1=Cstr(Request.ServerVariables("HTTP_REFERER")) server_v2=Cstr(Request.ServerVariables("SERVER_NAME")) If Mid(server_v1,8,len(server_v2))=server_v2 Then Chkpost=True End Function '每日更新信息,简单更新 Public Sub ReloadAllForumInfo() '数据库部分 If value <> "1900-1-1" Then value="1900-1-1" Dim Rs,LastPostInfo,TempStr,i Dim Forum_YesterdayNum,Forum_TodayNum,Forum_LastPost,Forum_MaxPostNum,Forum_MaxPostDate Set Rs=Execute("Select Top 1 Forum_YesterdayNum,Forum_TodayNum,Forum_LastPost,Forum_MaxPostNum From Dv_Setup") Forum_YesterdayNum=Rs(0) Forum_TodayNum=Rs(1) Forum_LastPost=Rs(2) Forum_MaxPostNum=Rs(3) Set Rs=Nothing LastPostInfo = Split(Forum_LastPost,"$") If Not IsDate(LastPostInfo(2)) Then LastPostInfo(2)=Now() If DateDiff("d",CDate(LastPostInfo(2)),Now())<>0 Then'最后发帖时间不是今天, TempStr=LastPostInfo(0)&"$"&LastPostInfo(1)&"$"&Now()&"$"&LastPostInfo(3)&"$"&LastPostInfo(4)&"$"&LastPostInfo(5)&"$"&LastPostInfo(6)&"$"&LastPostInfo(7) Execute("Update Dv_Setup Set Forum_YesterdayNum="&Forum_TodayNum&",Forum_LastPost='"&TempStr&"',Forum_TodayNum=0") ReloadSetupCache 0,9 ReloadSetupCache Forum_TodayNum,11 ReloadSetupCache TempStr,15 End If If Forum_TodayNum >Forum_MaxPostNum Then Execute("Update Dv_Setup Set Forum_MaxPostNum=Forum_TodayNum,Forum_MaxPostDate="&SqlNowString) ReloadSetupCache Forum_TodayNum,12'日最高发帖 ReloadSetupCache Now(),13 '最高发帖日期 End If LoadBoardsInfo() End If Name="Date" value=Date() End Sub '使用一个查询更新所有版面的缓存 Public Sub LoadBoardsInfo() Dim Rs,BoardData(26,0),i,GetData,SQL,LastPostInfo,TempStr,IsUpdate IsUpdate=0 SQL="select boardid,BoardType,ParentID,ParentStr,Depth,RootID,Child,readme,BoardMaster,PostNum,TopicNum,indexIMG,todayNum,boarduser,LastPost,Sid,Board_Setting,Board_Ads,Board_user,IsGroupSetting,BoardTopStr,BoardID As TempStr,BoardID As TempStr1,BoardID As TempStr2,BoardID As TempStr3,cid from Dv_board" If Not IsObject(Conn) Then ConnectionDatabase Set Rs=Server.CreateObject("ADODB.RecordSet") Rs.Open SQL,Conn,1,3 Do While Not Rs.Eof LastPostInfo = Split(Rs(14),"$") If Not IsDate(LastPostInfo(2)) Then LastPostInfo(2)=Now() If DateDiff("d",LastPostInfo(2),Now())<>0 Then Rs("LastPost")=LastPostInfo(0)&"$"&LastPostInfo(1)&"$"&LastPostInfo(2)&"$"&LastPostInfo(3)&"$"&LastPostInfo(4)&"$"&LastPostInfo(5)&"$"&LastPostInfo(6)&"$"&LastPostInfo(7) Rs("TodayNum")=0 Rs.UpDate IsUpdate=1 End If Name="BoardInfo_" & Rs(0) For i=0 to Rs.Fields.Count-1 BoardData(i,0)=Rs(i) Next value = BoardData GetData = Value IsUpdate=0 Rs.MoveNext Loop Rs.Close Set Rs=Nothing End Sub '更新总设置表部分缓存数组,入口:更新内容、数组位置 Public Function ReloadSetupCache(MyValue,N) CacheData(N,0) = MyValue Name="setup" value=CacheData End Function '更新用户资料缓存(缓存用户名,是否需要添加)[0=不添加,只作清理,1=需要添加] Public Sub NeedUpdateList(username,act) Dim Tmpstr,TmpUsername Name="NeedToUpdate" If ObjIsEmpty() Then Value="" End If Tmpstr=Value TmpUsername=","&username&"," Tmpstr=Replace(Tmpstr,TmpUsername,",") Tmpstr=Replace(Tmpstr,",,",",") IF act=1 Then If IsONline(username,0) Then If Tmpstr="" Then Tmpstr=TmpUsername Else Tmpstr=Tmpstr&TmpUsername End If End If End If Tmpstr=Replace(Tmpstr,",,",",") Value=Tmpstr End Sub '写入客人session Public Sub LetGuestSession() Dim StatUserID,UserSessionID StatUserID = checkStr(Trim(Request.Cookies(Forum_sn)("StatUserID"))) If IsNumeric(StatUserID) = 0 or StatUserID = "" Then StatUserID = Replace(UserTrueIP,".","") UserSessionID = Replace(Startime,".","") If IsNumeric(StatUserID) = 0 or StatUserID = "" Then StatUserID = 0 StatUserID = Ccur(StatUserID) + Ccur(UserSessionID) End If StatUserID = Ccur(StatUserID) Response.Cookies(Forum_sn).Expires=DateAdd("s",3600,Now()) Response.Cookies(Forum_sn).path=cookiepath Response.Cookies(Forum_sn)("StatUserID") = StatUserID '客人=SessionID+活动时间+发帖时间+版面ID StatUserID = StatUserID & "_" & Now & "_" & Now & "_" & BoardID Session(CacheName & "UserID") = Split(StatUserID,"_") End Sub '根据页面来判断是否需要执行TrueCheckUserLogin Public Function NeedChecklongin() NeedChecklongin=True If UserID>0 Then If InStr(ScriptName,"admin_")>0 Then Exit Function Dim pagelist pagelist=",post.asp,usermanager.asp,mymodify.asp,modifypsw.asp,modifyadd.asp,usersms.asp," pagelist=pagelist & "friendlist.asp,favlist.asp,myfile.asp,friendlist.asp,recycle.asp," pagelist=pagelist & "fileshow.asp,bbseven.asp,dispuser.asp,savepost.asp," If InStr(pagelist,","&ScriptName&",")>0 Then Exit Function End If NeedChecklongin=False End Function '验证用户登陆 Public Sub CheckUserLogin() If Not IsArray(Session(CacheName & "UserID")) Then If UserID > 0 Then TrueCheckUserLogin Else Call LetGuestSession() End If Else If UserID >0 Then Dim NeedToUpdate,toupdate toupdate=False Name="NeedToUpdate" If Not ObjIsEmpty() Then NeedToUpdate=","&Value&"," If InStr(NeedToUpdate,","&MemberName&",")>0 Then Call NeedUpdateList(MemberName,0) toupdate=True End If End If If NeedChecklongin Or (UserID >0 And Not Session(CacheName & "UserID")(0)="Dvbbs" ) Or toupdate Then TrueCheckUserLogin End If End If End If If Session(CacheName & "UserID")(0) = "Dvbbs" Then GetCacheUserInfo Else MyUserInfo = Session(CacheName & "UserID") UserGroupID = 7 Lastlogin = Now() End If GetGroupSetting End Sub '系统分配随机密码 Public Function Createpass() Dim Ran,i,LengthNum LengthNum=16 Createpass="" For i=1 To LengthNum Randomize Ran = CInt(Rnd * 2) Randomize If Ran = 0 Then Ran = CInt(Rnd * 25) + 97 Createpass =Createpass& UCase(Chr(Ran)) ElseIf Ran = 1 Then Ran = CInt(Rnd * 9) Createpass = Createpass & Ran ElseIf Ran = 2 Then Ran = CInt(Rnd * 25) + 97 Createpass =Createpass& Chr(Ran) End If Next End Function '更新用户验证密码 Public Sub NewPassword() If UserID=0 Then Exit Sub Response.Write "" End Sub Public Sub NewPassword0() If UserID=0 Then Exit Sub If Not Response.IsClientConnected Then Exit Sub End If Dim TruePassWord,usercookies usercookies=Request.Cookies(Dvbbs.Forum_sn)("usercookies") TruePassWord=Createpass If (Isnull(usercookies) or usercookies="") And Not Isnumeric(usercookies) Then usercookies=0 Select Case Cint(usercookies) Case 0 Response.Cookies(Forum_sn)("usercookies") = usercookies Case 1 Response.Cookies(Forum_sn).Expires=Date+1 Response.Cookies(Forum_sn)("usercookies") = usercookies Case 2 Response.Cookies(Forum_sn).Expires=Date+31 Response.Cookies(Forum_sn)("usercookies") = usercookies Case 3 Response.Cookies(Forum_sn).Expires=Date+365 Response.Cookies(Forum_sn)("usercookies") = usercookies End Select Response.Cookies(Forum_sn).path=cookiepath Response.Cookies(Forum_sn)("username") = MemberName Response.Cookies(Forum_sn)("UserID") = UserID Response.Cookies(Forum_sn)("userclass") = checkStr(Request.Cookies(Forum_sn)("userclass")) Response.Cookies(Forum_sn)("userhidden") = UserHidden Response.Cookies(Forum_sn)("password") = TruePassWord '检查写入是否成功如果成功则更新数据 If checkStr(Trim(Request.Cookies(Forum_sn)("password")))=TruePassWord Then Execute("UpDate [Dv_user] Set TruePassWord='"&TruePassWord&"' where UserID="&UserID) MemberWord = TruePassWord Dim iUserInfo iUserInfo = Session(CacheName & "UserID") iUserInfo(35) = TruePassWord Session(CacheName & "UserID") = iUserInfo End If End Sub Public Sub TrueCheckUserLogin() 'Session(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 Dim Rs,SQL 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 UserID = " & UserID Set Rs = Execute(Sql) If Rs.Eof And Rs.Bof Then Rs.Close:Set Rs = Nothing UserID = 0 EmptyCookies LetGuestSession() Else MyUserInfo=Rs.GetString(,1, "|||","","") Rs.Close:Set Rs = Nothing If IsArray(Session(CacheName & "UserID")) Then MyUserInfo = "Dvbbs|||"& Now & "|||" & Session(CacheName & "UserID")(2) &"|||"& BoardID &"|||"& MyUserInfo &"||||||Dvbbs" Else MyUserInfo = "Dvbbs|||"& Now & "|||" & DateAdd("s",-3600,Now()) &"|||"& BoardID &"|||"& MyUserInfo &"||||||Dvbbs" End If MyUserInfo = Split(MyUserInfo,"|||") If Trim(MyUserInfo(35)) = Memberword And Trim(MyUserInfo(5)) =Membername Then Session(CacheName & "UserID") = MyUserInfo Memberword = MyUserInfo(35) GetCacheUserInfo() Else If IsArray(Session(CacheName & "UserID")) Then If Session(CacheName & "UserID")(0)="Dvbbs" Then If Trim(Session(CacheName & "UserID")(4))=Trim(MyUserInfo(4)) And Trim(Session(CacheName & "UserID")(5))=Trim(MyUserInfo(5)) And Trim(Session(CacheName & "UserID")(6))=Trim(MyUserInfo(6)) Then Call NewPassword0() End If Else UserID = 0 EmptyCookies LetGuestSession() End If Else UserID = 0 EmptyCookies LetGuestSession() End If End If End If End Sub '用户登录成功后,采用本函数读取用户数组并判断一些常用信息 Public Sub GetCacheUserInfo() MyUserInfo = Session(CacheName & "UserID") UserID = Clng(MyUserInfo(4)) MemberName = MyUserInfo(5) Lastlogin = MyUserInfo(15) If Not IsDate(LastLogin) Then LastLogin = Now() UserGroupID = Cint(MyUserInfo(19)) If Trim(MyUserInfo(36))="" Then Execute("Update [Dv_User] Set UserToday='0|0|0' Where UserID = " & UserID) MyUserInfo(36) = "0|0|0" UserToday = Split(MyUserInfo(36),"|") Else UserToday = Split(MyUserInfo(36),"|") If Ubound(UserToday) <> 2 Then Execute("Update [Dv_User] Set UserToday='0|0|0' Where UserID = " & UserID) MyUserInfo(36) = "0|0|0" UserToday = Split(MyUserInfo(36),"|") End If End If Select Case UserGroupID Case 4 Vipuser = True Case 3 Boardmaster = True Case 2 Superboardmaster = True Case 1 Master = True End Select If MyUserInfo(31) = "1" Then FoundIsChallenge = True If DateDiff("d",LastLogin,Now())<>0 Then Execute("Update [Dv_User] Set UserToday='0|0|0',LastLogin = " & SqlNowString & " Where UserID = " & UserID) MyUserInfo(36) = "0|0|0" LastLogin = Now() End If If Userhidden = 2 and DateDiff("s",Lastlogin,Now())>Clng(Forum_Setting(8))*60 Then Execute("Update [Dv_User] Set UserLastIP = '" & UserTrueIP & "',LastLogin = " & SqlNowString & " Where UserID = " & UserID) Lastlogin = Now() End If sendmsgnum=0:sendmsgid=0:sendmsguser="" If MyUserInfo(30)<>"" Then Dim Usermsg Usermsg=Split(MyUserInfo(30),"||") If Ubound(Usermsg)=2 Then sendmsgnum=Usermsg(0) sendmsgid=Usermsg(1) sendmsguser=Usermsg(2) End If End If FoundUser=True MyUserInfo(15)=Lastlogin Session(CacheName & "UserID")=MyUserInfo End Sub Public Sub EmptyCookies() Response.Cookies(Forum_sn)("usercookies") = 0 Response.Cookies(Forum_sn).path=cookiepath Response.Cookies(Forum_sn)("username") = "" Response.Cookies(Forum_sn)("UserID") = 0 Response.Cookies(Forum_sn)("userclass") = "" Response.Cookies(Forum_sn)("userhidden") = 2 Response.Cookies(Forum_sn)("password") = "" End Sub Private Sub GetGroupSetting() Name="GroupSetting_"& UserGroupID If ObjIsEmpty() Then Dim Rs,SQL SQL = "Select GroupSetting From [Dv_UserGroups] where UserGroupID = " & UserGroupID Set Rs = Execute(SQL) If Rs.Eof Then Set Rs=Nothing SQL = "Select GroupSetting From [Dv_UserGroups] where UserGroupID = 4" Set Rs = Execute(SQL) value=Rs(0) Else value=Rs(0) End If End If GroupSetting = Split(value,",") If Cint(GroupSetting(0))=0 And Not Page_Admin Then AddErrCode "8":Showerr() If BoardID <> 0 And Not ScriptName="showerr.asp" Then BoardInfoData=CheckBoardInfo() End Sub Public Sub ActiveOnline() Dim ReflashPageLastTime,LastVisiBoardID ReflashPageLastTime = Session(CacheName & "UserID")(1) LastVisiBoardID = Clng(Session(CacheName & "UserID")(3)) If Not IsDate(ReflashPageLastTime) Then ReflashPageLastTime = Now() '当在120秒内刷新同一个页面则不更新online数据 If DateDiff("s",ReflashPageLastTime,Now()) < 120 And LastVisiBoardID = BoardID And Not InStr(ScriptName,"showerr")>0 Then Exit Sub '更新数组 ReflashPageLastTime = Session(CacheName & "UserID") ReflashPageLastTime(1) = Now() ReflashPageLastTime(3) = Dvbbs.BoardID Session(CacheName & "UserID") = ReflashPageLastTime UserActiveOnline End Sub Private Sub UserActiveOnline() Dim Actcome,SQl,Rs Dim MyGroupID,uip,BrowserType,StatsStr uip = UserTrueIP StatsStr = Stats StatsStr = Replace(StatsStr, "'", "") StatsStr = Replace(StatsStr, Chr(0), "") StatsStr = Replace(StatsStr, "--", "——") StatsStr = Left(StatsStr, 250) If FoundIsChallenge and Cint(Forum_ChanSetting(0))=1 Then MyGroupID = 9999 Else MyGroupID = UserGroupID End If If UserID = 0 Then Dim StatUserID StatUserID = Session(CacheName & "UserID")(0) SQL = "Select ID,Boardid From [Dv_Online] Where ID = " & Ccur(StatUserID) Set Rs = Execute(SQL) If Rs.Eof And Rs.Bof Then If CInt(Forum_Setting(36)) = 0 Then Actcome = "" Else Actcome = address(uip) End If Set BrowserType=new Cls_Browser SQL = "Insert Into [Dv_Online](ID,Username,Userclass,Ip,Startime,Lastimebk,Boardid,Browser,Stats,Usergroupid,Actcome,Userhidden) Values (" & StatUserID & ",'客人','客人','" & UserTrueIP & "'," & SqlNowString & "," & SqlNowString & "," & Boardid & ",'" & BrowserType.platform&"|"&BrowserType.Browser&BrowserType.version & "','" & StatsStr & "',7,'" & Actcome & "'," & Userhidden & ")" '更新缓存总在线数据 MyBoardOnline.Forum_Online=MyBoardOnline.Forum_Online+1 Name="Forum_Online" value=MyBoardOnline.Forum_Online Set BrowserType=Nothing Else SQL = "Update [Dv_Online] Set Lastimebk = " & SqlNowString & ",Boardid = " & Boardid & ",Stats = '" & StatsStr & "' Where ID = " & Ccur(StatUserID) End If Rs.Close Set Rs = Nothing Execute(SQL) Else SQL = "Select ID,Boardid From [DV_Online] Where UserID = " & UserID Set Rs = Execute(SQL) If Rs.Eof And Rs.Bof Then If CInt(forum_setting(36)) = 0 Then Actcome = "" Else Actcome = address(uip) End If Set BrowserType=new Cls_Browser SQL = "Insert Into [Dv_Online](ID,Username,Userclass,Ip,Startime,Lastimebk,Boardid,Browser,Stats,Usergroupid,Actcome,Userhidden,UserID) Values (" & Session.SessionID & ",'" & Membername & "','" & Memberclass & "','" & UserTrueIP & "'," & SqlNowString & "," & SqlNowString & "," & Boardid & ",'" & BrowserType.platform&"|"&BrowserType.Browser&BrowserType.version & "','" & StatsStr & "'," & MyGroupID & ",'" & Actcome & "'," & Userhidden & "," & UserID & ")" Set BrowserType=Nothing '更新缓存总在线数据 MyBoardOnline.Forum_Online=MyBoardOnline.Forum_Online+1 Name="Forum_Online" Dvbbs.value=MyBoardOnline.Forum_Online '更新缓存总用户在线数据 MyBoardOnline.Forum_UserOnline=MyBoardOnline.Forum_UserOnline+1 Name="Forum_UserOnline" value=MyBoardOnline.Forum_UserOnline Else SQL = "Update [Dv_Online] Set Lastimebk = " & SqlNowString & ",Boardid = " & Boardid & ",Stats = '" & StatsStr & "' Where UserID = " & UserID End If Rs.Close Set Rs = Nothing Execute(SQL) End If '更新在线峰值 If CLng(MyBoardOnline.Forum_Online) > CLng(Maxonline) Then Execute("update [Dv_setup] set Forum_Maxonline="&CLng(MyBoardOnline.Forum_Online)&",Forum_MaxonlineDate="& SqlNowString) CacheData(5,0)=MyBoardOnline.Forum_Online CacheData(6,0)=Now() Name="setup" value=CacheData End If Rem 删除超时用户 MyBoardOnline.OnlineQuery End Sub Public Sub Nav() Head() ShowTopTable() IsTopTable = 1 End Sub Public Sub head() '建立缓存 Name="head_"&SkinID If ObjIsEmpty() Then value= Replace(Replace(mainhtml(1),"{$keyword}",Replace(Forum_info(8),"|",",")),"{$description}",Forum_info(10))&vbNewLine End If Response.Write Value Nowstats=stats Dim re Set re=new RegExp re.IgnoreCase =True re.Global=True re.Pattern="<(.[^>]*)>" If BoardID > 0 And ScriptName<>"printpage.asp" Then Stats=BoardType&"-"&Stats Stats=re.Replace(Stats, "") re.Pattern="""" Stats=re.Replace(Stats, """) Set Re=Nothing Stats=Replace(Stats,chr(13),"") Response.Write "
")
fString = Replace(fString, CHR(10), "
")
fString=ChkBadWords(fString)
HTMLEncode = fString
End If
End Function
'用于论坛本身的过滤,不带脏话过滤
Public Function iHTMLEncode(fString)
If Not IsNull(fString) Then
fString = replace(fString, ">", ">")
fString = replace(fString, "<", "<")
fString = Replace(fString, CHR(32), " ")
fString = Replace(fString, CHR(9), " ")
fString = Replace(fString, CHR(34), """)
'fString = Replace(fString, CHR(39), "'")
fString = Replace(fString, CHR(13), "")
fString = Replace(fString, CHR(10) & CHR(10), "
")
fString = Replace(fString, CHR(10), "
")
iHTMLEncode = fString
End If
End Function
Public Function strLength(str)
If isNull(str) Or Str = "" Then
StrLength = 0
Exit Function
End If
Dim WINNT_CHINESE
WINNT_CHINESE=(len("例子")=2)
If WINNT_CHINESE Then
Dim l,t,c
Dim i
l=len(str)
t=l
For i=1 To l
c=asc(mid(str,i,1))
If c<0 Then c=c+65536
If c>255 Then t=t+1
Next
strLength=t
Else
strLength=len(str)
End If
End Function
Public Function ChkBadWords(Str)
If IsNull(Str) Then Exit Function
Dim i
For i = 0 To Ubound(BadWords)
If i > UBound(rBadWord) Then
Str = Replace(Str,BadWords(i),"*")
Else
Str = Replace(Str,BadWords(i),rBadWord(i))
End If
Next
ChkBadWords = Str
End Function
Public Function Checkstr(Str)
If Isnull(Str) Then
CheckStr = ""
Exit Function
End If
Str = Replace(Str,Chr(0),"")
CheckStr = Replace(Str,"'","''")
End Function
Public Function Get_Chan_Ad()
Dim TempData,i
Dim rndnum
Dim Temp_Ad,Forum_AdLoop1,Forum_AdLoop2
Temp_Ad = Split(CacheData(22,0),"||")
If Temp_Ad(0)<>"" Then
Forum_AdLoop1=Split(Temp_Ad(0),",")
Else
Forum_AdLoop1=Split("",",")
End If
If Temp_Ad(1)<>"" Then
Forum_AdLoop2=Split(Temp_Ad(1),",")
Else
Forum_AdLoop2=Split("",",")
End If
Forum_AdLoop3 = Temp_Ad(2)
'顶部banner
Randomize
rndnum=Cint(Ubound(Forum_AdLoop1)*rnd+1)
If UBound(Forum_AdLoop1)=-1 Then
adcode_1=""
Else
Name = "ForumAdCode1"
If ObjIsEmpty() Then LoadForumAdCode1
If IsArray(Value) And Forum_ChanSetting(3)="1" Then
TempData=Value
adcode_1=ReCssUrl(TempData(1,rndnum-1))
Else
adcode_1=""
End If
End If
'尾部通栏
Randomize
rndnum=Cint(Ubound(Forum_AdLoop2)*rnd+1)
If UBound(Forum_AdLoop2)=-1 Then
adcode_2=""
Else
Name = "ForumAdCode2"
If ObjIsEmpty() Then LoadForumAdCode2
If IsArray(Value) And Forum_ChanSetting(4)="1" Then
TempData=Value
adcode_2=ReCssUrl(TempData(1,rndnum-1))
Else
adcode_2=""
End If
End If
Name = "ForumAdCode3"
If ObjIsEmpty() Then LoadForumAdCode3
If IsArray(Value) And Forum_ChanSetting(2)="1" Then
TempData=Value
adcode_4=ReCssUrl(TempData(1,i))
Else
adcode_4=""
End If
i3 = 0
If Forum_AdLoop3<>"" And Forum_ChanSetting(5)="1" And Instr(ScriptName,"dispbbs")>0 Then
Name = "TopicAdCode"
If ObjIsEmpty() Then LoadTopicAdCode
If IsArray(Value) Then
TempData = Value
For i=0 To Ubound(TempData,2)
If TempData(1,i)=239 Or TempData(1,i)=240 Or TempData(1,i)=1 Or TempData(1,i)=2 Then
ad_3(i3)=" "
Else
ad_3(i3)=ReCssUrl(TempData(0,i))
End If
i3 = i3 + 1
Next
End If
End If
If i3=0 Then Ad_3(0)=" "
End Function
Private Function LoadTopicAdCode()
Dim Rs
Set Rs=Execute("Select a_adcode,a_id From Dv_AdCode Where a_id In ("&Forum_AdLoop3&")")
If Not Rs.Eof Then
Value = Rs.GetRows(-1)
Else
Value = ""
End If
Set Rs=Nothing
End Function
Private Function LoadForumAdCode1()
Dim Rs
Set Rs=Execute("Select a_address,a_adcode,a_id From Dv_AdCode Where a_address='0001'")
If Not Rs.Eof Then
Value = Rs.GetRows(-1)
Else
Value = ""
End If
Set Rs=Nothing
End Function
Private Function LoadForumAdCode2()
Dim Rs
Set Rs=Execute("Select a_address,a_adcode,a_id From Dv_AdCode Where a_address='0002'")
If Not Rs.Eof Then
Value = Rs.GetRows(-1)
Else
Value = ""
End If
Set Rs=Nothing
End Function
Private Function LoadForumAdCode3()
Dim Rs
Set Rs=Execute("Select a_address,a_adcode,a_id From Dv_AdCode Where a_address='0004'")
If Not Rs.Eof Then
Value = Rs.GetRows(-1)
Else
Value = ""
End If
Set Rs=Nothing
End Function
Public Function ReCssUrl(str)
if str="" then exit function
str=replace(str,"%css%","Get_Css.asp?SkinID="&SkinID)
str=replace(str,"%url%",Forum_info(1))
If CacheData(23,0)="" or isnull(CacheData(23,0)) Then
str=replace(str,"%username%","dvbbs")
str=replace(str,"%mouseId%","dvbbs")
Else
str=replace(str,"%username%",CacheData(23,0))
str=replace(str,"%mouseId%",CacheData(23,0))
End If
ReCssUrl=str
End Function
Public Function ReloadBoardInfo(lBoardID)
If lBoardID=0 Then Exit Function
'数组(21)TempStr用来记录版面的下拉菜单,(22)TempStr1用来保存该版面的导航,(23)TempStr2用来保存该版面的新闻和小字报,(24)TempStr3版块点击统计
Dim Rs
Set Rs=Execute("select BoardID,BoardType,ParentID,ParentStr,Depth,RootID,Child,readme,BoardMaster,PostNum,TopicNum,indexIMG,todayNum,boarduser,LastPost,Sid,Board_Setting,Board_Ads,Board_user,IsGroupSetting,BoardTopStr,BoardID As TempStr,BoardID As TempStr1,BoardID As TempStr2,BoardID As TempStr3,cid,BoardID As TempStr4 from Dv_board where BoardID="&lBoardID)
If Not Rs.Eof Then
Name = "BoardInfo_" & lBoardID
Value = Rs.GetRows(1)
Else
'自动修正所有版面的boards数
Call ReloadAllBoardInfo()
'Response.Redirect "index.asp"
End If
Rs.Close
Set Rs = Nothing
End Function
'缓存版面公告和小字报信息
Public Function LoadBoardNews_Paper(lBoardID)
Dim tRs,bgs,MyGetData,TempStr,NoAnn,NoColor
If Not IsArray(lanstr) Then
NoAnn = "当前没有公告"
Else
NoAnn = lanstr(9)
End If
If Not IsArray(mainsetting) Then
NoColor = "blue"
Else
NoColor = mainsetting(10)
End If
Set tRs=Execute("Select Top 1 title,addtime,bgs From [Dv_bbsnews] Where boardid="&lBoardID&" Order By ID Desc")
If tRs.BOF And tRs.EOF Then
TempStr = NoAnn & "|||"
Else
bgs=tRs(2)
If bgs="" or IsNull(bgs) Then
TempStr=tRs(0) & "|||" & tRs(1)
Else
TempStr="
"
End If
Next
Name="BoardInfo_" & lBoardID
MyBoard_Data=value
If Act=1 Then
MyBoard_Data(21,0)=Replace(Replace(MyBoardList,"'","\'"),Chr(34), """)
Board_Data(21,0)=MyBoard_Data(21,0)
Else
MyBoard_Data(26,0)=Replace(Replace(MyBoardList,"'","\'"),Chr(34), """)
Board_Data(26,0)=MyBoard_Data(26,0)
End If
value=MyBoard_Data
Forum_Boards=Null
Board_Datas=Null
End Sub
Public Sub ReloadAllBoardInfo()
Dim Rs,Boards
Set Rs=Execute("Select BoardID From Dv_Board Order By RootID,Orders")
If Not Rs.Eof Then
Boards=Rs.GetString(,-1, "",",","")
Boards=Left(Boards,Len(Boards)-1)
End If
Rs.close:Set Rs=Nothing
Execute("Update dv_Setup Set Forum_Boards='"&Boards&"'")
ReloadSetupCache Boards,27
End Sub
'更新分版面部分缓存数组,入口:版面ID、更新内容、数组位置、更新方式,0直接赋值,1数值相加
Public Sub ReloadBoardCache(lBoardID,MyValue,N,act)
If lBoardID=0 Then Exit Sub
If lBoardID=444 Or lBoardID=777 Or lBoardID="" Then
Response.Write "错误的版面参数"
Response.End
End If
Dim Tmpdata
Name="BoardInfo_" & lBoardID
If ObjIsEmpty() Then ReloadBoardInfo(lBoardID)
Tmpdata=Value
If act=1 And IsNumeric(Tmpdata(N,0)) And IsNumeric(MyValue) Then
Tmpdata(N,0)=CLng(Tmpdata(N,0))+MyValue
ElseIf act=2 And IsNumeric(Tmpdata(N,0)) And IsNumeric(MyValue) Then
Tmpdata(N,0)=CLng(Tmpdata(N,0))-MyValue
Else
Tmpdata(N,0) = MyValue
End If
Value=Tmpdata
End Sub
Public Function ReloadForumPlusMenu()
Dim Rs,tRs,TempMenu,TempMenu1,MSetting
Name="ForumPlusMenu"&SkinID
Set Rs=Dvbbs.Execute("Select * From Dv_Plus Where Plus_Type='0' and Isuse=1 Order By ID")
If Rs.Eof And Rs.Bof Then
Value=""
Exit Function
End If
Do While Not Rs.Eof
MSetting=Split(Split(Rs("Plus_Setting"),"|||")(0),"|")
Set tRs=Dvbbs.Execute("Select * From Dv_Plus Where Plus_Type='"&Rs("ID")&"' and Isuse=1 Order By ID")
If tRs.Eof And tRs.Bof Then
Select Case MSetting(0)
Case 0
TempMenu = TempMenu & " "&Rs("Plus_Name")&""
Case 1
TempMenu = TempMenu & "
"&Rs("Plus_Name")&""
Case 2
TempMenu = TempMenu & "
"&Rs("Plus_Name")&""
Case 3
TempMenu = TempMenu & "
"&Rs("Plus_Name")&""
End Select
Else
Do While Not tRs.Eof
MSetting=Split(Split(tRs("Plus_Setting"),"|||")(0),"|")
Select Case MSetting(0)
Case 0
TempMenu1 = TempMenu1 & ""
Case 1
TempMenu1 = TempMenu1 & ""
Case 2
TempMenu1 = TempMenu1 & ""
Case 3
TempMenu1 = TempMenu1 & ""
End Select
tRs.MoveNext
Loop
MSetting=Split(Split(Rs("Plus_Setting"),"|||")(0),"|")
Select Case MSetting(0)
Case 0
TempMenu = TempMenu & "
"&Rs("Plus_Name")&""
Case 1
TempMenu = TempMenu & "
"&Rs("Plus_Name")&""
Case 2
TempMenu = TempMenu & "
"&Rs("Plus_Name")&""
Case 3
TempMenu = TempMenu & "
"&Rs("Plus_Name")&""
End Select
TempMenu1=""
End If
Rs.MoveNext
Loop
Value=TempMenu
Set tRs=Nothing
Set Rs=Nothing
End Function
'取得带端口的URL
Property Get Get_ScriptNameUrl()
If request.servervariables("SERVER_PORT")="80" Then
Get_ScriptNameUrl="http://" & request.servervariables("server_name")&replace(lcase(request.servervariables("script_name")),ScriptName,"")
Else
Get_ScriptNameUrl="http://" & request.servervariables("server_name")&":"&request.servervariables("SERVER_PORT")&replace(lcase(request.servervariables("script_name")),ScriptName,"")
End If
End Property
End Class
Class cls_Templates
Public html,Strings,pic
Public Property Let Value(ByVal vNewValue)
Dim tmpstr:tmpstr = vNewValue
tmpstr = Replace(tmpstr,"{$PicUrl}",Dvbbs.Forum_PicUrl)
tmpstr = Split(tmpstr,"@@@")
html = Split(tmpstr(0),"|||"):Strings = Split(tmpstr(1),"|||"):pic = Split(tmpstr(2),"|||")
End Property
End Class
Class cls_UserOnlne
Public Forum_Online,Forum_UserOnline,Forum_GuestOnline
Private l_Online,l_GuestOnline
Private Sub Class_Initialize()
Dvbbs.Name="Forum_Online"
Dvbbs.Reloadtime=60
If Dvbbs.ObjIsEmpty() Then ReflashOnlineNum
Dvbbs.Name="Forum_Online"
Forum_Online = Dvbbs.Value
Dvbbs.Name="Forum_UserOnline"
If Dvbbs.ObjIsEmpty() Then ReflashOnlineNum
Forum_UserOnline=Dvbbs.Value
If Forum_Online < 0 Or Forum_UserOnline < 0 Or Forum_UserOnline > Forum_Online Then ReflashOnlineNum
Forum_GuestOnline = Forum_Online - Forum_UserOnline
l_Online=-1:l_GuestOnline=-1
Dvbbs.Reloadtime=14400
End Sub
Public Sub OnlineQuery()
Dim SQL,SQL1
Dim TempNum,TempNum1
Dvbbs.Name="delOnline_time"
If Dvbbs.ObjIsEmpty() Then Dvbbs.Value=Now()
If DateDiff("s",Dvbbs.Value,Now()) > Clng(Dvbbs.Forum_Setting(8))*10 Then
Dvbbs.Value=Now()
If Not IsObject(Conn) Then ConnectionDatabase
If IsSqlDataBase = 1 Then
SQL = "Delete From [DV_Online] Where UserID=0 And Datediff(Mi, Lastimebk, " & SqlNowString & ") > " & Clng(Dvbbs.Forum_Setting(8))
SQL1 = "Delete From [DV_Online] Where UserID>0 And Datediff(Mi, Lastimebk, " & SqlNowString & ") > " & Clng(Dvbbs.Forum_Setting(8))
Else
SQL = "Delete From [Dv_Online] Where UserID=0 And Datediff('s', Lastimebk, " & SqlNowString & ") > " & Dvbbs.Forum_Setting(8) & "*60"
SQL1 = "Delete From [Dv_Online] Where UserID>0 And Datediff('s', Lastimebk, " & SqlNowString & ") > " & Dvbbs.Forum_Setting(8) & "*60"
End If
Conn.Execute SQL,TempNum
Conn.Execute SQL1,TempNum1
Dvbbs.SqlQueryNum = Dvbbs.SqlQueryNum + 2
'如果删除客人数大于0,则应该更新总数
If TempNum>0 Then
'更新缓存总在线数据
Forum_Online = Forum_Online - TempNum
Forum_GuestOnline = Forum_GuestOnline - TempNum
End If
'如果删除用户数大于0,则应该更新总数和用户数
If TempNum1>0 Or TempNum>0 Then
'更新缓存总在线数据
Forum_Online = Forum_Online - TempNum1
Forum_UserOnline = Forum_UserOnline - TempNum1
End If
Dvbbs.Name="Forum_Online"
Dvbbs.Value=Forum_Online
'更新缓存总用户在线数据
Dvbbs.Name="Forum_UserOnline"
Dvbbs.Value=Forum_UserOnline
Forum_Online = Forum_Online - TempNum1
End If
End Sub
'刷新在线数据缓存
Public Sub ReflashOnlineNum
Dim Rs
Set Rs=Dvbbs.Execute("Select Count(*) From Dv_Online")
Dvbbs.Value=Rs(0)
Forum_Online = Dvbbs.Value
Dvbbs.Name="Forum_UserOnline"
Set Rs=Dvbbs.Execute("Select Count(*) From Dv_Online Where UserID>0")
Dvbbs.Value=Rs(0)
Forum_UserOnline = Dvbbs.Value
Set Rs=Nothing
End Sub
'查询在某版面的在线总数
Public Property Get Board_Online
Board_Online=Board_UserOnline+Board_GuestOnline
End Property
Public Property Get Board_GuestOnline
If l_GuestOnline=-1 Then
Dim Rs
Set Rs=Dvbbs.Execute("Select Count(*) From Dv_Online where BoardID="&Dvbbs.BoardID&" and UserID=0")
l_GuestOnline=Rs(0):Set Rs= Nothing
End If
Board_GuestOnline=l_GuestOnline
End Property
Public Property Get Board_UserOnline
If l_Online=-1 Then
Dim Rs
Set Rs=Dvbbs.Execute("Select Count(*) From Dv_Online where BoardID="&Dvbbs.BoardID&" and UserID>0")
l_Online=Rs(0):Set Rs= Nothing
End If
Board_UserOnline=l_Online
End Property
End Class
'Session(Dvbbs.CacheName & "Cls_Browser") 0:Browser+|||+1:version+|||+2:platform
Class Cls_Browser
Public Browser,version ,platform,IsSearch
Private Sub Class_Initialize()
Dim Agent,Tmpstr
IsSearch = False
If Not IsEmpty(Session(Dvbbs.CacheName & "Cls_Browser")) Then
Tmpstr = Split(Session(Dvbbs.CacheName & "Cls_Browser"),"|||")
Browser = Dvbbs.checkStr(Tmpstr(0))
version = Dvbbs.checkStr(Tmpstr(1))
platform = Dvbbs.checkStr(Tmpstr(2))
If Tmpstr(3)="1" Then
IsSearch = True
End If
Exit Sub
End If
Browser="unknown"
version="unknown"
platform="unknown"
Agent=Request.ServerVariables("HTTP_USER_AGENT")
'Agent="Opera/7.23 (X11; Linux i686; U) [en]"
If Left(Agent,7) ="Mozilla" Then '有此标识为浏览器
Agent=Split(Agent,";")
If InStr(Agent(1),"MSIE")>0 Then
Browser="Microsoft Internet Explorer "
version=Trim(Left(Replace(Agent(1),"MSIE",""),6))
ElseIf InStr(Agent(4),"Netscape")>0 Then
Browser="Netscape "
tmpstr=Split(Agent(4),"/")
version=tmpstr(UBound(tmpstr))
ElseIf InStr(Agent(4),"rv:")>0 Then
Browser="Mozilla "
tmpstr=Split(Agent(4),":")
version=tmpstr(UBound(tmpstr))
If InStr(version,")") > 0 Then
tmpstr=Split(version,")")
version=tmpstr(0)
End If
End If
If InStr(Agent(2),"NT 5.2")>0 Then
platform="Windows 2003"
ElseIf InStr(Agent(2),"Windows CE")>0 Then
platform="Windows CE"
ElseIf InStr(Agent(2),"NT 5.1")>0 Then
platform="Windows XP"
ElseIf InStr(Agent(2),"NT 4.0")>0 Then
platform="Windows NT"
ElseIf InStr(Agent(2),"NT 5.0")>0 Then
platform="Windows 2000"
ElseIf InStr(Agent(2),"NT")>0 Then
platform="Windows NT"
ElseIf InStr(Agent(2),"9x")>0 Then
platform="Windows ME"
ElseIf InStr(Agent(2),"98")>0 Then
platform="Windows 98"
ElseIf InStr(Agent(2),"95")>0 Then
platform="Windows 95"
ElseIf InStr(Agent(2),"Win32")>0 Then
platform="Win32"
ElseIf InStr(Agent(2),"Linux")>0 Then
platform="Linux"
ElseIf InStr(Agent(2),"SunOS")>0 Then
platform="SunOS"
ElseIf InStr(Agent(2),"Mac")>0 Then
platform="Mac"
ElseIf UBound(Agent)>2 Then
If InStr(Agent(3),"NT 5.1")>0 Then
platform="Windows XP"
End If
If InStr(Agent(3),"Linux")>0 Then
platform="Linux"
End If
End If
If InStr(Agent(2),"Windows")>0 And platform="unknown" Then
platform="Windows"
End If
ElseIf Left(Agent,5) ="Opera" Then '有此标识为浏览器
Agent=Split(Agent,"/")
Browser="Mozilla "
tmpstr=Split(Agent(1)," ")
version=tmpstr(0)
If InStr(Agent(1),"NT 5.2")>0 Then
platform="Windows 2003"
ElseIf InStr(Agent(1),"Windows CE")>0 Then
platform="Windows CE"
ElseIf InStr(Agent(1),"NT 5.1")>0 Then
platform="Windows XP"
ElseIf InStr(Agent(1),"NT 4.0")>0 Then
platform="Windows NT"
ElseIf InStr(Agent(1),"NT 5.0")>0 Then
platform="Windows 2000"
ElseIf InStr(Agent(1),"NT")>0 Then
platform="Windows NT"
ElseIf InStr(Agent(1),"9x")>0 Then
platform="Windows ME"
ElseIf InStr(Agent(1),"98")>0 Then
platform="Windows 98"
ElseIf InStr(Agent(1),"95")>0 Then
platform="Windows 95"
ElseIf InStr(Agent(1),"Win32")>0 Then
platform="Win32"
ElseIf InStr(Agent(1),"Linux")>0 Then
platform="Linux"
ElseIf InStr(Agent(1),"SunOS")>0 Then
platform="SunOS"
ElseIf InStr(Agent(1),"Mac")>0 Then
platform="Mac"
ElseIf UBound(Agent)>2 Then
If InStr(Agent(3),"NT 5.1")>0 Then
platform="Windows XP"
End If
If InStr(Agent(3),"Linux")>0 Then
platform="Linux"
End If
End If
Else
'识别搜索引擎
Dim botlist,i
Botlist="Google,Isaac,SurveyBot,Baiduspider,ia_archiver,P.Arthur,FAST-WebCrawler,Java,Microsoft-ATL-Native,TurnitinBot,WebGather,Sleipnir"
Botlist=split(Botlist,",")
For i=0 to UBound(Botlist)
If InStr(Agent,Botlist(i))>0 Then
platform=Botlist(i)&"搜索器"
IsSearch=True
Exit For
End If
Next
End If
If version<>"unknown" Then
Dim Tmpstr1
Tmpstr1=Trim(Replace(version,".",""))
If Not IsNumeric(Tmpstr1) Then
version="unknown"
End If
End If
If IsSearch Then
Browser=""
version=""
Session(Dvbbs.CacheName & "Cls_Browser") = Browser &"|||"& version &"|||"& platform&"|||1"
Else
Session(Dvbbs.CacheName & "Cls_Browser") = Browser &"|||"& version &"|||"& platform&"|||0"
End If
End Sub
End Class
%>
<%
'是否商业版,非官方SQL版本请在此设置为0以及在Conn中设置论坛为SQL数据库,否则显示不正常
Const IsBuss=1
Dvbbs.GetForum_Setting
Dvbbs.CheckUserLogin
%>
<%
'=================================================
'动网Dv7.0Jmail发送邮件组件:
' Edit By YangZheng
'=================================================
Dim SendMail
Sub Jmail(Email,Topic,Mailbody)
On Error Resume Next
Dim JMail
Set JMail = Server.CreateObject("JMail.Message")
JMail.silent=true
JMail.Logging = True
JMail.Charset = "gb2312"
If Not(Dvbbs.Forum_info(12) = "" Or Dvbbs.Forum_info(13) = "") Then
JMail.MailServerUserName = Dvbbs.Forum_info(12) '您的邮件服务器登录名
JMail.MailServerPassword = Dvbbs.Forum_info(13) '登录密码
End If
JMail.ContentType = "text/html"
JMail.Priority = 1
JMail.From = Dvbbs.Forum_info(5)
JMail.FromName = Dvbbs.Forum_info(0)
JMail.AddRecipient Email
JMail.Subject = Topic
JMail.Body = Mailbody
JMail.Send (Dvbbs.Forum_info(4))
Set JMail = Nothing
SendMail = "OK"
If Err Then SendMail = "False"
End Sub
Sub Cdonts(Email,Topic,Mailbody)
On Error Resume Next
Dim ObjCDOMail
Set ObjCDOMail = Server.CreateObject("CDONTS.NewMail")
ObjCDOMail.From = Dvbbs.Forum_info(5)
ObjCDOMail.To = Email
ObjCDOMail.Subject = Topic
ObjCDOMail.BodyFormat = 0
ObjCDOMail.MailFormat = 0
ObjCDOMail.Body = Mailbody
ObjCDOMail.Send
Set ObjCDOMail = Nothing
SendMail = "OK"
If Err Then SendMail = "False"
End Sub
Sub Aspemail(Email,Topic,Mailbody)
On Error Resume Next
Dim Mailer
Set Mailer = Server.CreateObject("Persits.MailSender")
Mailer.Charset = "gb2312"
Mailer.IsHTML = True
Mailer.username = Dvbbs.Forum_info(12) '服务器上有效的用户名
Mailer.password = Dvbbs.Forum_info(13) '服务器上有效的密码
Mailer.Priority = 1
Mailer.Host = Dvbbs.Forum_info(4)
Mailer.Port = 25 ' 该项可选.端口25是默认值
Mailer.From = Dvbbs.Forum_info(5)
Mailer.FromName = Dvbbs.Forum_info(0) ' 该项可选
Mailer.AddAddress Email,Email
Mailer.Subject = Topic
Mailer.Body = Mailbody
Mailer.Send
SendMail = "OK"
If Err Then SendMail = "False"
End Sub
%>
<%
Private Const BITS_TO_A_BYTE = 8
Private Const BYTES_TO_A_WORD = 4
Private Const BITS_TO_A_WORD = 32
Private m_lOnBits(30)
Private m_l2Power(30)
Private Function LShift(lValue, iShiftBits)
If iShiftBits = 0 Then
LShift = lValue
Exit Function
ElseIf iShiftBits = 31 Then
If lValue And 1 Then
LShift = &H80000000
Else
LShift = 0
End If
Exit Function
ElseIf iShiftBits < 0 Or iShiftBits > 31 Then
Err.Raise 6
End If
If (lValue And m_l2Power(31 - iShiftBits)) Then
LShift = ((lValue And m_lOnBits(31 - (iShiftBits + 1))) * m_l2Power(iShiftBits)) Or &H80000000
Else
LShift = ((lValue And m_lOnBits(31 - iShiftBits)) * m_l2Power(iShiftBits))
End If
End Function
Private Function RShift(lValue, iShiftBits)
If iShiftBits = 0 Then
RShift = lValue
Exit Function
ElseIf iShiftBits = 31 Then
If lValue And &H80000000 Then
RShift = 1
Else
RShift = 0
End If
Exit Function
ElseIf iShiftBits < 0 Or iShiftBits > 31 Then
Err.Raise 6
End If
RShift = (lValue And &H7FFFFFFE) \ m_l2Power(iShiftBits)
If (lValue And &H80000000) Then
RShift = (RShift Or (&H40000000 \ m_l2Power(iShiftBits - 1)))
End If
End Function
Private Function RotateLeft(lValue, iShiftBits)
RotateLeft = LShift(lValue, iShiftBits) Or RShift(lValue, (32 - iShiftBits))
End Function
Private Function AddUnsigned(lX, lY)
Dim lX4
Dim lY4
Dim lX8
Dim lY8
Dim lResult
lX8 = lX And &H80000000
lY8 = lY And &H80000000
lX4 = lX And &H40000000
lY4 = lY And &H40000000
lResult = (lX And &H3FFFFFFF) + (lY And &H3FFFFFFF)
If lX4 And lY4 Then
lResult = lResult Xor &H80000000 Xor lX8 Xor lY8
ElseIf lX4 Or lY4 Then
If lResult And &H40000000 Then
lResult = lResult Xor &HC0000000 Xor lX8 Xor lY8
Else
lResult = lResult Xor &H40000000 Xor lX8 Xor lY8
End If
Else
lResult = lResult Xor lX8 Xor lY8
End If
AddUnsigned = lResult
End Function
Private Function md5_F(x, y, z)
md5_F = (x And y) Or ((Not x) And z)
End Function
Private Function md5_G(x, y, z)
md5_G = (x And z) Or (y And (Not z))
End Function
Private Function md5_H(x, y, z)
md5_H = (x Xor y Xor z)
End Function
Private Function md5_I(x, y, z)
md5_I = (y Xor (x Or (Not z)))
End Function
Private Sub md5_FF(a, b, c, d, x, s, ac)
a = AddUnsigned(a, AddUnsigned(AddUnsigned(md5_F(b, c, d), x), ac))
a = RotateLeft(a, s)
a = AddUnsigned(a, b)
End Sub
Private Sub md5_GG(a, b, c, d, x, s, ac)
a = AddUnsigned(a, AddUnsigned(AddUnsigned(md5_G(b, c, d), x), ac))
a = RotateLeft(a, s)
a = AddUnsigned(a, b)
End Sub
Private Sub md5_HH(a, b, c, d, x, s, ac)
a = AddUnsigned(a, AddUnsigned(AddUnsigned(md5_H(b, c, d), x), ac))
a = RotateLeft(a, s)
a = AddUnsigned(a, b)
End Sub
Private Sub md5_II(a, b, c, d, x, s, ac)
a = AddUnsigned(a, AddUnsigned(AddUnsigned(md5_I(b, c, d), x), ac))
a = RotateLeft(a, s)
a = AddUnsigned(a, b)
End Sub
Private Function ConvertToWordArray(sMessage)
Dim lMessageLength
Dim lNumberOfWords
Dim lWordArray()
Dim lBytePosition
Dim lByteCount
Dim lWordCount
Const MODULUS_BITS = 512
Const CONGRUENT_BITS = 448
lMessageLength = Len(sMessage)
lNumberOfWords = (((lMessageLength + ((MODULUS_BITS - CONGRUENT_BITS) \ BITS_TO_A_BYTE)) \ (MODULUS_BITS \ BITS_TO_A_BYTE)) + 1) * (MODULUS_BITS \ BITS_TO_A_WORD)
ReDim lWordArray(lNumberOfWords - 1)
lBytePosition = 0
lByteCount = 0
Do Until lByteCount >= lMessageLength
lWordCount = lByteCount \ BYTES_TO_A_WORD
lBytePosition = (lByteCount Mod BYTES_TO_A_WORD) * BITS_TO_A_BYTE
lWordArray(lWordCount) = lWordArray(lWordCount) Or LShift(Asc(Mid(sMessage, lByteCount + 1, 1)), lBytePosition)
lByteCount = lByteCount + 1
Loop
lWordCount = lByteCount \ BYTES_TO_A_WORD
lBytePosition = (lByteCount Mod BYTES_TO_A_WORD) * BITS_TO_A_BYTE
lWordArray(lWordCount) = lWordArray(lWordCount) Or LShift(&H80, lBytePosition)
lWordArray(lNumberOfWords - 2) = LShift(lMessageLength, 3)
lWordArray(lNumberOfWords - 1) = RShift(lMessageLength, 29)
ConvertToWordArray = lWordArray
End Function
Private Function WordToHex(lValue)
Dim lByte
Dim lCount
For lCount = 0 To 3
lByte = RShift(lValue, lCount * BITS_TO_A_BYTE) And m_lOnBits(BITS_TO_A_BYTE - 1)
WordToHex = WordToHex & Right("0" & Hex(lByte), 2)
Next
End Function
Public Function MD5(sMessage,stype)
m_lOnBits(0) = CLng(1)
m_lOnBits(1) = CLng(3)
m_lOnBits(2) = CLng(7)
m_lOnBits(3) = CLng(15)
m_lOnBits(4) = CLng(31)
m_lOnBits(5) = CLng(63)
m_lOnBits(6) = CLng(127)
m_lOnBits(7) = CLng(255)
m_lOnBits(8) = CLng(511)
m_lOnBits(9) = CLng(1023)
m_lOnBits(10) = CLng(2047)
m_lOnBits(11) = CLng(4095)
m_lOnBits(12) = CLng(8191)
m_lOnBits(13) = CLng(16383)
m_lOnBits(14) = CLng(32767)
m_lOnBits(15) = CLng(65535)
m_lOnBits(16) = CLng(131071)
m_lOnBits(17) = CLng(262143)
m_lOnBits(18) = CLng(524287)
m_lOnBits(19) = CLng(1048575)
m_lOnBits(20) = CLng(2097151)
m_lOnBits(21) = CLng(4194303)
m_lOnBits(22) = CLng(8388607)
m_lOnBits(23) = CLng(16777215)
m_lOnBits(24) = CLng(33554431)
m_lOnBits(25) = CLng(67108863)
m_lOnBits(26) = CLng(134217727)
m_lOnBits(27) = CLng(268435455)
m_lOnBits(28) = CLng(536870911)
m_lOnBits(29) = CLng(1073741823)
m_lOnBits(30) = CLng(2147483647)
m_l2Power(0) = CLng(1)
m_l2Power(1) = CLng(2)
m_l2Power(2) = CLng(4)
m_l2Power(3) = CLng(8)
m_l2Power(4) = CLng(16)
m_l2Power(5) = CLng(32)
m_l2Power(6) = CLng(64)
m_l2Power(7) = CLng(128)
m_l2Power(8) = CLng(256)
m_l2Power(9) = CLng(512)
m_l2Power(10) = CLng(1024)
m_l2Power(11) = CLng(2048)
m_l2Power(12) = CLng(4096)
m_l2Power(13) = CLng(8192)
m_l2Power(14) = CLng(16384)
m_l2Power(15) = CLng(32768)
m_l2Power(16) = CLng(65536)
m_l2Power(17) = CLng(131072)
m_l2Power(18) = CLng(262144)
m_l2Power(19) = CLng(524288)
m_l2Power(20) = CLng(1048576)
m_l2Power(21) = CLng(2097152)
m_l2Power(22) = CLng(4194304)
m_l2Power(23) = CLng(8388608)
m_l2Power(24) = CLng(16777216)
m_l2Power(25) = CLng(33554432)
m_l2Power(26) = CLng(67108864)
m_l2Power(27) = CLng(134217728)
m_l2Power(28) = CLng(268435456)
m_l2Power(29) = CLng(536870912)
m_l2Power(30) = CLng(1073741824)
Dim x
Dim k
Dim AA
Dim BB
Dim CC
Dim DD
Dim a
Dim b
Dim c
Dim d
Const S11 = 7
Const S12 = 12
Const S13 = 17
Const S14 = 22
Const S21 = 5
Const S22 = 9
Const S23 = 14
Const S24 = 20
Const S31 = 4
Const S32 = 11
Const S33 = 16
Const S34 = 23
Const S41 = 6
Const S42 = 10
Const S43 = 15
Const S44 = 21
x = ConvertToWordArray(sMessage)
a = &H67452301
b = &HEFCDAB89
c = &H98BADCFE
d = &H10325476
For k = 0 To UBound(x) Step 16
AA = a
BB = b
CC = c
DD = d
md5_FF a, b, c, d, x(k + 0), S11, &HD76AA478
md5_FF d, a, b, c, x(k + 1), S12, &HE8C7B756
md5_FF c, d, a, b, x(k + 2), S13, &H242070DB
md5_FF b, c, d, a, x(k + 3), S14, &HC1BDCEEE
md5_FF a, b, c, d, x(k + 4), S11, &HF57C0FAF
md5_FF d, a, b, c, x(k + 5), S12, &H4787C62A
md5_FF c, d, a, b, x(k + 6), S13, &HA8304613
md5_FF b, c, d, a, x(k + 7), S14, &HFD469501
md5_FF a, b, c, d, x(k + 8), S11, &H698098D8
md5_FF d, a, b, c, x(k + 9), S12, &H8B44F7AF
md5_FF c, d, a, b, x(k + 10), S13, &HFFFF5BB1
md5_FF b, c, d, a, x(k + 11), S14, &H895CD7BE
md5_FF a, b, c, d, x(k + 12), S11, &H6B901122
md5_FF d, a, b, c, x(k + 13), S12, &HFD987193
md5_FF c, d, a, b, x(k + 14), S13, &HA679438E
md5_FF b, c, d, a, x(k + 15), S14, &H49B40821
md5_GG a, b, c, d, x(k + 1), S21, &HF61E2562
md5_GG d, a, b, c, x(k + 6), S22, &HC040B340
md5_GG c, d, a, b, x(k + 11), S23, &H265E5A51
md5_GG b, c, d, a, x(k + 0), S24, &HE9B6C7AA
md5_GG a, b, c, d, x(k + 5), S21, &HD62F105D
md5_GG d, a, b, c, x(k + 10), S22, &H2441453
md5_GG c, d, a, b, x(k + 15), S23, &HD8A1E681
md5_GG b, c, d, a, x(k + 4), S24, &HE7D3FBC8
md5_GG a, b, c, d, x(k + 9), S21, &H21E1CDE6
md5_GG d, a, b, c, x(k + 14), S22, &HC33707D6
md5_GG c, d, a, b, x(k + 3), S23, &HF4D50D87
md5_GG b, c, d, a, x(k + 8), S24, &H455A14ED
md5_GG a, b, c, d, x(k + 13), S21, &HA9E3E905
md5_GG d, a, b, c, x(k + 2), S22, &HFCEFA3F8
md5_GG c, d, a, b, x(k + 7), S23, &H676F02D9
md5_GG b, c, d, a, x(k + 12), S24, &H8D2A4C8A
md5_HH a, b, c, d, x(k + 5), S31, &HFFFA3942
md5_HH d, a, b, c, x(k + 8), S32, &H8771F681
md5_HH c, d, a, b, x(k + 11), S33, &H6D9D6122
md5_HH b, c, d, a, x(k + 14), S34, &HFDE5380C
md5_HH a, b, c, d, x(k + 1), S31, &HA4BEEA44
md5_HH d, a, b, c, x(k + 4), S32, &H4BDECFA9
md5_HH c, d, a, b, x(k + 7), S33, &HF6BB4B60
md5_HH b, c, d, a, x(k + 10), S34, &HBEBFBC70
md5_HH a, b, c, d, x(k + 13), S31, &H289B7EC6
md5_HH d, a, b, c, x(k + 0), S32, &HEAA127FA
md5_HH c, d, a, b, x(k + 3), S33, &HD4EF3085
md5_HH b, c, d, a, x(k + 6), S34, &H4881D05
md5_HH a, b, c, d, x(k + 9), S31, &HD9D4D039
md5_HH d, a, b, c, x(k + 12), S32, &HE6DB99E5
md5_HH c, d, a, b, x(k + 15), S33, &H1FA27CF8
md5_HH b, c, d, a, x(k + 2), S34, &HC4AC5665
md5_II a, b, c, d, x(k + 0), S41, &HF4292244
md5_II d, a, b, c, x(k + 7), S42, &H432AFF97
md5_II c, d, a, b, x(k + 14), S43, &HAB9423A7
md5_II b, c, d, a, x(k + 5), S44, &HFC93A039
md5_II a, b, c, d, x(k + 12), S41, &H655B59C3
md5_II d, a, b, c, x(k + 3), S42, &H8F0CCC92
md5_II c, d, a, b, x(k + 10), S43, &HFFEFF47D
md5_II b, c, d, a, x(k + 1), S44, &H85845DD1
md5_II a, b, c, d, x(k + 8), S41, &H6FA87E4F
md5_II d, a, b, c, x(k + 15), S42, &HFE2CE6E0
md5_II c, d, a, b, x(k + 6), S43, &HA3014314
md5_II b, c, d, a, x(k + 13), S44, &H4E0811A1
md5_II a, b, c, d, x(k + 4), S41, &HF7537E82
md5_II d, a, b, c, x(k + 11), S42, &HBD3AF235
md5_II c, d, a, b, x(k + 2), S43, &H2AD7D2BB
md5_II b, c, d, a, x(k + 9), S44, &HEB86D391
a = AddUnsigned(a, AA)
b = AddUnsigned(b, BB)
c = AddUnsigned(c, CC)
d = AddUnsigned(d, DD)
Next
if stype=32 then
MD5 = LCase(WordToHex(a) & WordToHex(b) & WordToHex(c) & WordToHex(d))
else
MD5=LCase(WordToHex(b) & WordToHex(c)) 'I crop this to fit 16byte database password :D
end if
End Function
%>
<%
dim topic,mailbody,sendmsg,useremail
dim username,password,repassword,Rs,SQl
dim answer
Dvbbs.LoadTemplates("login")
Dvbbs.Stats=template.Strings(2)
Dvbbs.Nav()
Dvbbs.Head_var 0,"",template.Strings(0),""
If request("action")="step1" Then
call step1()
ElseIf request("action")="step2" Then
call step2()
ElseIf request("action")="step3" Then
call step3()
Else
Call main()
End If
Dvbbs.activeonline()
Dvbbs.footer()
Sub step1()
If Dvbbs.chkpost=False Then
showerr template.Strings(10)
Exit Sub
End If
If request.Form("username")="" Then
showerr template.Strings(6)
Exit Sub
Else
username=replace(request("username"),"'","")
End If
If Dvbbs.forum_setting(81)="1" Then
If Not Dvbbs.CodeIsTrue() Then
Response.redirect "showerr.asp?ErrCodes=