%@ 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 "
"
Response.Write Forum_Info(0)
Response.Write "-"
Response.Write stats
Response.Write ""
Response.Write vbNewLine
Response.Write Forum_CSS
Response.Write mainhtml(2)
'论坛防刷新设置
If Cint(Forum_Setting(19))=1 And Not Page_Admin Then
Dim DoReflashPage
DoReflashPage=false
If Trim(Forum_Setting(64))<>"" And InStr(LCase(Forum_Setting(64)),ScriptName) >0 Then DoReflashPage=True
If (Not IsEmpty(Session(CacheName & "UserID")(1))) and Cint(Forum_Setting(20))>0 and DoReflashPage Then
If DateDiff("s",Session(CacheName & "UserID")(1),Now()) 本页面起用了防刷新机制,请不要在"&Forum_Setting(20)&"秒内连续刷新本页面 正在打开页面,请稍后……"
Response.End
Else
DoReflashPage=Session(CacheName & "UserID")
DoReflashPage(1)=Now()
Session(CacheName & "UserID")=DoReflashPage
End If
ElseIf IsEmpty(Session(CacheName & "UserID")(1)) and Cint(Forum_Setting(20))>0 and DoReflashPage Then
DoReflashPage=Session(CacheName & "UserID")
DoReflashPage(1)=Now()
Session(CacheName & "UserID")=DoReflashPage
End If
End If
End Sub
Public Sub ShowTopTable()
Dim TempStr,ForumMenu
If Forum_ChanSetting(0)="1" And Forum_ChanSetting(1)="1" Then
If Forum_ChanSetting(2)="1" Then
TempStr = mainhtml(3)
TempStr = Replace(TempStr,"{$top}",adcode_4)
End If
If Forum_ChanSetting(3)="1" Then Forum_ads(0)=adcode_1
End If
Name="Templateslist"
If ObjIsEmpty() Then ReloadTemplateslist()
If UserID = 0 Then
sysmenu = mainhtml(7)
Else
sysmenu = Replace(mainhtml(6),"{$username}",Membername)
If UserHidden=2 Then
sysmenu = Replace(sysmenu,"{$hiddeninfo}",lanstr(3))
Else
sysmenu = Replace(sysmenu,"{$hiddeninfo}",lanstr(4))
End If
If Master Then
sysmenu = Replace(sysmenu,"{$manageinfo}",mainhtml(10))
Else
sysmenu = Replace(sysmenu,"{$manageinfo}","")
End If
If Forum_ChanSetting(0)="1" Then
Dim RayMenuInfo,RayMenu
RayMenuInfo = Split(mainhtml(11),"||")
If Forum_ChanSetting(2)=2 Then RayMenu = Replace(Replace(RayMenuInfo(3),"{$channame}",CacheData(23,0)),"{$forumurl}",Forum_Info(1))
If FoundIsChallenge Then
RayMenu = RayMenu & RayMenuInfo(1)
Else
RayMenu = RayMenu & RayMenuInfo(2)
End If
RayMenu = Replace(RayMenuInfo(0),"{$raymenu}",RayMenu)
sysmenu = Replace(sysmenu,"{$raymenuinfo}",RayMenu)
Else
sysmenu = Replace(sysmenu,"{$raymenuinfo}","")
End If
sysmenu = Replace(sysmenu,"{$userid}",UserID)
End If
Dim tmpstr,i,outstr,ioutstr,SkinID1,Csslist,CssName,k,Tempstr1,Tempstr2
mainhtml(9)=Replace(Replace(Replace(Replace(mainhtml(9),"\","\\"),"'","\'"),VbCrLf,"\n"),chr(13),"")
tmpstr=Split(value,"@@@")
mainhtml(9) = Split(mainhtml(9),"||")
outstr =mainhtml(9)(2)
ioutstr=mainhtml(9)(0)
mainhtml(9)(5)=Replace(mainhtml(9)(5),"{$boardid}",BoardID)
SkinID1=SkinID
For i = 0 to UBound(tmpstr)
tmpstr(i) = Split(tmpstr(i),"|||")
SkinID=tmpstr(i)(0)
Name="Forum_CSS"&SkinID
If ObjIsEmpty() Then
TemplatesToCache ("Forum_CSS")
End If
Csslist=Value
Csslist=split(Csslist,"@@@")
CssName=split(Csslist(0),"|||")
Tempstr2=Replace(mainhtml(9)(4),"{$skinid}",SkinID)
If SkinID1<>Cint(tmpstr(i)(0)) Then
Tempstr2=Replace(Tempstr2,"{$skinname}",tmpstr(i)(1))
Else
mainhtml(9)(1)=Replace(mainhtml(9)(1),"{$skinname}",tmpstr(i)(1))
mainhtml(9)(1)=Replace(mainhtml(9)(1),"{$alertcolor}",mainsetting(1))
Tempstr2=Replace(Tempstr2,"{$skinname}",mainhtml(9)(1))
End If
Tempstr1=""
For k=0 to UBound(CssName)-1
If k=CssID And SkinID1=Cint(tmpstr(i)(0)) Then
mainhtml(9)(6)=Replace(mainhtml(9)(6),"{$alertcolor}",mainsetting(1))
Tempstr1=Tempstr1&Replace(Replace(Replace(mainhtml(9)(6),"{$skinid}",SkinID),"{$cssid}",k),"{$cssname}",CssName(k))
Else
Tempstr1=Tempstr1&Replace(Replace(Replace(mainhtml(9)(5),"{$skinid}",SkinID),"{$cssid}",k),"{$cssname}",CssName(k))
End If
Next
Tempstr1=Replace(Tempstr2,"{$cssinfo}",Tempstr1)
ioutstr=ioutstr&Replace(mainhtml(9)(3),"{$csslist}",Tempstr1)
Next
SkinID=SkinID1
outstr=Replace(outstr,"{$sylelist}",ioutstr)
sysmenu = Replace(sysmenu,"{$syles}",outstr)
TempStr = TempStr & mainhtml(4)
TempStr = Replace(TempStr,"{$width}",mainsetting(0))
TempStr = Replace(TempStr,"{$link}",Forum_Info(1))
If Boardid<>0 Then
If Board_Setting(51)="" Or Board_Setting(51) = "0" Then
TempStr = Replace(TempStr,"{$logo}",Forum_Info(6))
Else
TempStr = Replace(TempStr,"{$logo}",Board_Setting(51))
End If
Else
TempStr = Replace(TempStr,"{$logo}",Forum_Info(6))
End If
If Trim(Forum_info(7))<>"0" And Trim(Forum_info(7))<>"" Then
TempStr = Replace(TempStr,"{$mailto}",Forum_Info(7))
Else
TempStr = Replace(TempStr,"{$mailto}","mailto:" & Forum_Info(5))
End If
TempStr = Replace(TempStr,"{$title}",Forum_Info(0) & "-" & Replace(stats,"'","\'"))
TempStr = Replace(TempStr,"{$top_ads}",Forum_ads(0))
TempStr = Replace(TempStr,"{$menu}",sysmenu)
TempStr = Replace(TempStr,"{$boardid}",boardid)
TempStr = Replace(TempStr,"{$alertcolor}",mainsetting(1))
Name = "ForumPlusMenu"&SkinID
If ObjIsEmpty() Then ReloadForumPlusMenu()
ForumMenu = Value
TempStr = Replace(TempStr,"{$plusmenu}",ForumMenu)
Response.Write TempStr
TempStr = ""
End Sub
Public Sub Head_var(IsBoard,idepth,GetTitle,GetUrl)
Dim NavStr,AllBoardList
If Dvbbs.BoardID=0 Then
BoardReadme=lanstr(2) & " " & Forum_Info(0) & ""
End if
If GroupSetting(37)="0" Then
Name = "BoardJumpList_g"
If ObjIsEmpty() Then LoadBoardJumpList(0)
Else
Name = "BoardJumpList"
If ObjIsEmpty() Then LoadBoardJumpList(1)
End If
BoardJumpList = Value
BoardJumpList = Replace(BoardJumpList,"{BoardID="&BoardID&"}","selected")
If GroupSetting(37)="0" Then
Name = "MyAllBoardList_g"
If ObjIsEmpty() Then LoadAllBoardList(0)
Else
Name = "MyAllBoardList"
If ObjIsEmpty() Then LoadAllBoardList(1)
End If
AllBoardList = Value
If BoardID>0 Then
NavStr = " "&Forum_info(0)&" → "
Else
NavStr = " "&Forum_info(0)&" → "
End If
If IsBoard=1 Then
If GroupSetting(37)="0" Then
BoardList = Board_Data(26,0)
Else
BoardList = Board_Data(21,0)
End If
BoardType = Replace(Replace(BoardType,Chr(39),"'"),Chr(34), """)
If BoardParentID=0 Then
NavStr = NavStr & " "&BoardType&""
Else
If ScriptName="dispbbs.asp" Then
NavStr = NavStr & BoardInfoData & " → "&BoardType&""
Else
NavStr = NavStr & BoardInfoData & " → "&BoardType&""
End If
End If
NavStr = NavStr & " → " & Nowstats
Elseif IsBoard=2 Then
NavStr = NavStr & Nowstats
Else
NavStr = NavStr & ""&GetTitle&" → " & Nowstats
End If
BoardReadme=Replace(Replace(Replace(BoardReadme&"","\n",""),"\r",""),"\","")
NavStr = Replace(mainhtml(5),"{$nav}",NavStr)
NavStr = Replace(NavStr,"{$width}",mainsetting(0))
NavStr = Replace(NavStr,"{$boardreadme}",BoardReadme)
If UserID>0 Then
'sendmsgnum,sendmsgid,sendmsguser
IsBoard = Split(mainhtml(12),"||")
If Clng(SendMsgNum)>0 Then
BoardReadme = IsBoard(0)
If Forum_Setting(10)=1 Then
BoardReadme = BoardReadme & IsBoard(1) & IsBoard(2)
Else
BoardReadme = BoardReadme & IsBoard(2)
End If
BoardReadme = Replace(BoardReadme,"{$smsid}",sendmsgid)
BoardReadme = Replace(BoardReadme,"{$sender}",sendmsguser)
BoardReadme = Replace(BoardReadme,"{$newmsgnum}",sendmsgnum)
NavStr = Replace(NavStr,"{$umsg}",BoardReadme)
Else
NavStr = Replace(NavStr,"{$umsg}",IsBoard(3))
End If
Else
NavStr = Replace(NavStr,"{$umsg}","")
End If
NavStr = Replace(NavStr,"{$alertcolor}",mainsetting(1))
NavStr = Replace(NavStr,"{$showstr}","")
Response.Write NavStr
End Sub
Private Function LoadBoardJumpList(Act)'参数,1读全部,0读非隐藏
Dim Forum_Boards,i,ii,Depth,Board_Datas,b_setting
Forum_Boards=Split(CacheData(27,0),",")
For i=0 To Ubound(Forum_Boards)
Name="BoardInfo_" & Forum_Boards(i)
If ObjIsEmpty() Then ReloadBoardInfo(Forum_Boards(i))
Board_Datas = Value
b_setting=split(Board_Datas(16,0),",")
If b_setting(1)<>"1" Or Act=1 Then
BoardJumpList = BoardJumpList & ""
End If
Next
If Act=1 Then
Name="BoardJumpList"
Else
Name="BoardJumpList_g"
End If
value=BoardJumpList
Forum_Boards=Null
Board_Datas=Null
End Function
Private Function LoadAllBoardList(Act)'参数,1读全部,0读非隐藏
Dim Forum_Boards,MyAllBoardList,i,ii,Depth,Board_Datas,b_setting
Forum_Boards=Split(CacheData(27,0),",")
For i=0 To Ubound(Forum_Boards)
Name="BoardInfo_" & Forum_Boards(i)
If ObjIsEmpty() Then ReloadBoardInfo(Forum_Boards(i))
Board_Datas = Value
b_setting=split(Board_Datas(16,0),",")
If b_setting(1)<>"1" Or Act=1 Then
Depth=Board_Datas(4,0)
MyAllBoardList = MyAllBoardList & ""
Select Case Depth
Case 0
MyAllBoardList = MyAllBoardList & "╋"
Case 1
MyAllBoardList = MyAllBoardList & " ├"
End Select
If Depth>1 Then
For ii=2 To Depth
MyAllBoardList = MyAllBoardList & " │"
Next
MyAllBoardList = MyAllBoardList & " ├"
End If
MyAllBoardList = MyAllBoardList & Server.htmlencode(Board_Datas(1,0)) & " "
End If
Next
If Act=1 Then
Name="MyAllBoardList"
Else
Name="MyAllBoardList_g"
End If
value=Replace(Replace(MyAllBoardList,"'","\'"),Chr(34), """)
Forum_Boards=Null
Board_Datas=Null
End Function
Public Sub AddErrCode(ErrCode)
If ErrCodes = "" Then
ErrCodes = ErrCode
Else
ErrCodes = ErrCodes & "," & ErrCode
End If
End Sub
Public Sub Showerr()
If ErrCodes<>"" Then Response.redirect "showerr.asp?BoardID="&boardid&"&ErrCodes="&ErrCodes&"&action="&server.URLEncode(Stats)
End Sub
Public Sub Footer()
Dim Tmp,CaCheInfo
'CaCheInfo = "
"
'CaCheInfo = CaCheInfo & "共使用了" & Application.Contents.Count & "个缓存对象。"
Tmp = mainhtml(8)
If Forum_Setting(30) = "1" Then
Dim Endtime
Endtime = Timer()
Tmp = Replace(Tmp,"{$runtime}"," 执行时间:" & FormatNumber((Endtime-Startime)*1000,5) & "毫秒。查询数据库" & SqlQueryNum & "次。"& CaCheInfo)
Else
Tmp = Replace(Tmp,"{$runtime}","")
End If
Tmp = Replace(Tmp,"{$color}",mainsetting(1))
Tmp = Replace(Tmp,"{$width}",mainsetting(0))
Tmp = Replace(Tmp,"{$powered}","Powered By :Dvbbs Version " & Forum_Version & " Sp2")
Tmp = Replace(Tmp,"{$Footer_ads}",Forum_ads(1))
If Forum_ChanSetting(0)="1" And Forum_ChanSetting(1)="1" And Forum_ChanSetting(4)="1" And IsTopTable=1 Then
Tmp = Replace(Tmp,"{$ad}"," " & adcode_2)
Else
Tmp = Replace(Tmp,"{$ad}","")
End If
Tmp = Replace(Tmp,"{$copyright}",Forum_Copyright)
Tmp = Replace(Tmp,"{$StyleName}",StyleName)
If Forum_ChanSetting(0)="1" Then
Tmp = Replace(Tmp,"{$server}","
")
Else
Tmp = Replace(Tmp,"{$server}","")
End If
'Response.Write CaCheInfo
'//------------------------------------------------------------------------------
'//论坛访问量统系
If ScriptName="list.asp" or ScriptName="index.asp" Then
Dim RayPostAct,RayUpCount,RayMaxCount,Forum_url,RaySubjection,Board_Datas,FrameBody
Dim PostStr
RayMaxCount=100 '定义更新概率
RaySubjection=False
Forum_url=Get_ScriptNameUrl
If ScriptName="index.asp" Then
Name="RayUpCount"
If Dvbbs.ObjIsEmpty() Then
Value=1
Else
RayUpCount=Value
If Not IsNumeric(RayUpCount) Then
Value=1
Else
Value=RayUpCount+1
End If
End If
RayUpCount=Value
If RayUpCount >= RayMaxCount Then
RaySubjection=True
RayUpCount=1
Value=1
FrameBody="?PostType=0&forumname="&Server.htmlencode(Forum_Info(0))
FrameBody=FrameBody+"&forumurl="&Forum_url
FrameBody=FrameBody+"&forumlogincount="&Dvbbs.CacheData(10,0)
FrameBody=FrameBody+"&foruminlinecount="&MyBoardOnline.Forum_Online
FrameBody=FrameBody+"&forumtitlecount="&CacheData(8,0)
FrameBody=FrameBody+"&forumvisitprob=1"
FrameBody=FrameBody+"&forumemail="&Forum_Info(5)
FrameBody=FrameBody+"&forumtag=host"
End If
ElseIf ScriptName="list.asp" Then
Name="BoardInfo_" & Boardid
Board_Datas=Value
If Not IsNumeric(Board_Data(24,0)) Then
Board_Datas(24,0)=1
Else
Board_Datas(24,0)=Board_Datas(24,0)+1
End If
If Board_Datas(24,0) >= RayMaxCount Then
RaySubjection=True
Board_Datas(24,0)=1
FrameBody="?PostType=1&forumchildname="&Boardtype
FrameBody=FrameBody+"&forumchildurl="&Forum_url&"list.asp?boardid="&Boardid
FrameBody=FrameBody+"&forumchildtitlecount="&Board_Datas(9,0)
FrameBody=FrameBody+"&foruminlinecount="&MyBoardOnline.Forum_Online
FrameBody=FrameBody+"&forumlogincount="&Dvbbs.CacheData(10,0)
FrameBody=FrameBody+"&Forumvisitprob=1"
FrameBody=FrameBody+"&forumchildtag=subjection"
End If
Value=Board_Datas
End If
If RaySubjection Then
Response.Write ""
End If
End If
Response.Write Tmp
'//------------------------------------------------------------------------------
End Sub
Public Function Dvbbs_Suc(sucmsg)
Dim TempStr
TempStr = mainhtml(13)
TempStr = Replace(TempStr,"{$sucmsg}",sucmsg)
TempStr = Replace(TempStr,"{$returnurl}",Request.ServerVariables("HTTP_REFERER"))
Response.Write TempStr
TempStr = ""
End Function
Public Function Execute(Command)
If Not IsObject(Conn) Then ConnectionDatabase
'检查权限,防止注入攻击。
If InStr(LCase(Command),"dv_admin")>0 And Left(ScriptName,6)<> "admin_" Then
If savelog=1 Then
Response.Write SaveSQLLOG(Command,"")
End If
Command=Replace(LCase(Command),"dv_admin","dv"&Chr(95)&"admin")
End If
If IsDeBug = 0 Then
On Error Resume Next
Set Execute = Conn.Execute(Command)
If Err Then
err.Clear
Set Conn = Nothing
If savelog=1 Then
Response.Write SaveSQLLOG(Command,"查询数据的时候发现错误,请检查您的查询代码是否正确。 基于安全的理由,只显示本信息,要查看详细的错误信息,请修改您的程序文件conn.asp。把""Const IsDeBug = 0""改为:""Const IsDeBug = 1""")
Else
Response.Write "查询数据的时候发现错误,请检查您的查询代码是否正确。"
End If
Response.End
End If
Else
'Response.Write command & " "
Set Execute = Conn.Execute(Command)
End If
SqlQueryNum = SqlQueryNum+1
End Function
'记录查询错误事件
Public Function SaveSQLLOG(sCommand,message)
Dim lConnStr,lConn,ldb,SQL,RS
ldb = "data/DvSQLLOG.mdb"
lConnStr = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath(ldb)
Set lConn = Server.CreateObject("ADODB.Connection")
lConn.Open lConnStr
Set Rs = Server.CreateObject("adodb.recordset")
Sql="select * from dv_sql_log"
Rs.open sql,lconn,1,3
Rs.addnew
Rs("ScriptName")=ScriptName
Rs("S_Info")=Left(sCommand,255)
Rs("ip")=UserTrueIP
Rs.update
Rs.close
lConn.Execute(SQL)
lConn.Close
Set lConn = Nothing
SaveSQLLOG = message
End Function
Public Sub ChecKIPlock()
Dim IPlock
IPlock = False
Dim locklist
locklist=Trim(CacheData(25,0))
If locklist="" Then Exit Sub
Dim i,StrUserIP,StrKillIP
StrUserIP=UserTrueIP
locklist=Split(locklist,"|")
If StrUserIP="" Then Exit Sub
StrUserIP=Split(UserTrueIP,".")
If Ubound(StrUserIP)<>3 Then Exit Sub
For i= 0 to UBound(locklist)
locklist(i)=Trim(locklist(i))
If locklist(i)<>"" Then
StrKillIP = Split(locklist(i),".")
If Ubound(StrKillIP)<>3 Then Exit For
IPlock = True
If (StrUserIP(0) <> StrKillIP(0)) And Instr(StrKillIP(0),"*")=0 Then IPlock=False
If (StrUserIP(1) <> StrKillIP(1)) And Instr(StrKillIP(1),"*")=0 Then IPlock=False
If (StrUserIP(2) <> StrKillIP(2)) And Instr(StrKillIP(2),"*")=0 Then IPlock=False
If (StrUserIP(3) <> StrKillIP(3)) And Instr(StrKillIP(3),"*")=0 Then IPlock=False
If IPlock Then Exit For
End If
Next
Response.Cookies(Forum_sn & "Kill").Expires = DateAdd("s", 360, Now())
Response.Cookies(Forum_sn & "Kill").Path = Cookiepath
If IPlock Then
Response.Cookies(Forum_sn & "Kill")("kill") = "1"
Else
Response.Cookies(Forum_sn & "Kill")("kill") = "0"
End If
End Sub
'IP/来源
Public Function address(sip)
Dim aConnStr,aConn,adb
Dim str1,str2,str3,str4
Dim num
Dim country,city
Dim irs,SQL
If IsNumeric(Left(sip,2)) Then
If sip="127.0.0.1" Then sip="192.168.0.1"
str1=Left(sip,InStr(sip,".")-1)
sip=mid(sip,instr(sip,".")+1)
str2=Left(sip,instr(sip,".")-1)
sip=Mid(sip,InStr(sip,".")+1)
str3=Left(sip,instr(sip,".")-1)
str4=Mid(sip,instr(sip,".")+1)
If isNumeric(str1)=0 or isNumeric(str2)=0 or isNumeric(str3)=0 or isNumeric(str4)=0 Then
Else
num=CLng(str1)*16777216+CLng(str2)*65536+CLng(str3)*256+CLng(str4)-1
adb = "data/ipaddress.mdb"
aConnStr = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath(adb)
Set AConn = Server.CreateObject("ADODB.Connection")
aConn.Open aConnStr
sql="select top 1 country,city from dv_address where ip1 <="&num&" and ip2 >="&num&""
Set irs=aConn.execute(sql)
If irs.EOF And irs.bof Then
country="亚洲"
city=""
Else
country=irs(0)
city=irs(1)
End If
Set irs=Nothing
Set aConn = Nothing
SqlQueryNum = SqlQueryNum+1
End If
address=country&city
Else
address="未知"
End If
End Function
'显示验证码
Public Function GetCode()
Dim test
On Error Resume Next
Set test=Server.CreateObject("Adodb.Stream")
Set test=Nothing
If Err Then
Dim zNum
Randomize timer
zNum = cint(8999*Rnd+1000)
Session("GetCode") = zNum
GetCode=Dvbbs.mainhtml(15)& Session("GetCode")
Else
GetCode= Dvbbs.mainhtml(15)&""
End If
End Function
'检查验证码是否正确
Public Function CodeIsTrue()
Dim CodeStr
CodeStr=Trim(Request("CodeStr"))
If CStr(Session("GetCode"))=CStr(CodeStr) And CodeStr<>"" Then
CodeIsTrue=True
Session("GetCode")=empty
Else
CodeIsTrue=False
Session("GetCode")=empty
End If
End Function
'用于用户发布的各种信息过滤,带脏话过滤
Public Function HTMLEncode(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), " ")
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=""&tRs(0)&"|||"&tRs(1)
End if
End If
'小字报部分
If IsSqlDataBase=1 Then
Set tRs=Execute("Select Top 5 S_id as id,S_username as postuser,S_title as topic From Dv_Smallpaper Where Datediff(D,S_addtime,"&SqlNowString&")<=1 And S_boardid="&lBoardID&" Order By S_addtime Desc")
Else
Set tRs=Execute("Select Top 5 S_id as id,S_username as postuser,S_title as topic From Dv_Smallpaper Where Datediff('D',S_addtime,"&SqlNowString&")<=1 And S_boardid="&lBoardID&" Order By S_addtime Desc")
End If
If tRs.Eof And tRs.Bof Then
TempStr=TempStr & "|||"
Else
Dim TempData,i
TempData=tRs.GetRows(-1)
For i=0 To Ubound(TempData,2)
If i=0 Then
TempStr = TempStr & "||| "&HtmlEncode(TempData(1,i))&":"&HtmlEncode(TempData(2,i))&" "
Else
TempStr = TempStr & " "&HtmlEncode(TempData(1,i))&":"&HtmlEncode(TempData(2,i))&" "
End If
Next
End If
MyGetData = Value
MyGetData(23,0) = TempStr
Value = MyGetData
Set tRs=Nothing
End Function
'缓存导航相关信息
Public Sub LoadBoardParentStr(MyParentStr)
Dim tRs,GetData,MyGetData
Set tRs=Execute("Select Boardid,Boardtype,Boardmaster,Parentid From Dv_Board Where Boardid In ("&MyParentStr&") Order By Orders")
If Not tRs.Eof Then
GetData = tRs.GetRows(-1)
MyGetData = Value
MyGetData(22,0) = GetData
value=MyGetData
End If
Set tRs = Nothing
End Sub
'对应Dvbbs.Board_Data(21,0),Act=1.导航菜单缓存;Dvbbs.Board_Data(26,0),Act=0不含隐藏论坛的导航菜单缓存;
Public Sub LoadBoardList(lBoardID,Act)
Dim Forum_Boards,i,ii,Depth,Board_Datas,MyBoardList,MyBoardRootID,MyBoard_Data,b_setting
If lBoardID=0 Then Exit Sub
Name="BoardInfo_" & lBoardID
MyBoard_Data=value
MyBoardRootID=Clng(MyBoard_Data(5,0))
Forum_Boards=Split(CacheData(27,0),",")
For i=0 To Ubound(Forum_Boards)
Name="BoardInfo_" & Forum_Boards(i)
If ObjIsEmpty() Then ReloadBoardInfo(Forum_Boards(i))
Board_Datas = Value
b_setting=split(Board_Datas(16,0),",")
If b_setting(1)<>"1" Or Act=1 Then
Depth=Board_Datas(4,0)
If MyBoardRootID = Board_Datas(5,0) And (Not Board_Datas(2,0) = 0) Then MyBoardList = MyBoardList & ""
Select Case Depth
Case 0
If MyBoardRootID = Board_Datas(5,0) And (Not Board_Datas(2,0) = 0) Then MyBoardList = MyBoardList & "╋"
Case 1
If MyBoardRootID = Board_Datas(5,0) And (Not Board_Datas(2,0) = 0) Then MyBoardList = MyBoardList & " ├"
End Select
If Depth>1 Then
For ii=2 To Depth
If MyBoardRootID = Board_Datas(5,0) And (Not Board_Datas(2,0) = 0) Then MyBoardList = MyBoardList & " │"
Next
If MyBoardRootID = Board_Datas(5,0) And (Not Board_Datas(2,0) = 0) Then MyBoardList = MyBoardList & " ├"
End If
If MyBoardRootID = Board_Datas(5,0) And (Not Board_Datas(2,0) = 0) Then MyBoardList = MyBoardList & Server.htmlencode(Board_Datas(1,0)) & " "
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 & "
"
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
%>
<%
Dim Dv_plus
Set Dv_plus=new Cls_plus
Class Cls_plus
'VBS类说明:属性Name用于提取设置,调用方法:实例.namr=插件ID
'变量Mian_setting数组,存储插件常规设置,
'变量plus_Settings数组,存储插件自定义扩展设置
'变量plus_Settingnames数组,存储插件自定义扩展设置的定义的
'变量plus_Copyright存储插件版权信息。
'变量Plus_Name存储插件在菜单中显示的名称。
'plus_master存储是否是插件管理员的布尔值
'方法checklogin()验证使用插件的权限,判断插件管理员的身份。
'方法updateuser()更新使用插件后的用户的数据,如金钱,经验等的更新。
Public Mian_settings,plus_Settings,plus_Copyright,Plus_Name,plus_master,plus_Settingnames
Public Property Let Name(ByVal vNewValue)
Call GetPlus_Setting(vNewValue)
End Property
'验证使用插件的权限,判断插件管理员的身份。
Public Sub checklogin()
plus_master=False
If Dvbbs.UserID>0 Then
If Dvbbs.master Then
plus_master=True
Else
Dim masterlist
If Trim(Mian_settings(3))<>"" Then
masterlist="|"&Mian_settings(3)&"|"
If InStr(masterlist,"|"&Dvbbs.MemberName&"|")>0 Then
plus_master=True
End If
End If
End If
End If
If Not plus_master Then
If Mian_settings(0)="1" Then
Dim Otime
Otime=split(Mian_settings(1),"|")
If UBound(Otime)=1 Then
If IsNumeric(Otime(0)) And IsNumeric(OTime(1)) Then
If CInt(OTime(0))< CInt(OTime(1)) Then
If Hour(Now) < Cint(Otime(0)) or Hour(Now) > Cint(Otime(1)) Then
Response.redirect "showerr.asp?ErrCodes=
"&Plus_Name&""&OTime(0)&"至"&OTime(1)&"点开放,请在规定时间内使用,谢谢。&action=plus"
End If
Else
If Hour(Now)< Cint(OTime(0)) And Hour(Now) > Cint(OTime(1)) Then
Response.redirect "showerr.asp?ErrCodes=
"&Plus_Name&""&OTime(0)&"至"&OTime(1)&"点开放,请在规定时间内使用,谢谢。&action=plus"
End If
End If
End If
End If
End If
Dim UserGroupIDlist
UserGroupIDlist="@"&Mian_settings(2)&"@"
If Not InStr(UserGroupIDlist,"@"&Dvbbs.UserGroupID&"@")>0 Then
Response.redirect "showerr.asp?ErrCodes=
您没有权限进入"&Plus_Name&"&action=plus"
End If
'检查使用插件的限制,如果设置了客人组可使用,此判断忽略。
If Not InStr(UserGroupIDlist,"@7@")>0 Then
Dim Plus_UserPost,Plus_userWealth,Plus_UserEP,Plus_UserCP,Plus_UserPower
Plus_UserPost=Mian_settings(4)
Plus_userWealth=Mian_settings(5)
Plus_UserEP=Mian_settings(6)
Plus_UserCP=Mian_settings(7)
Plus_UserPower=Mian_settings(8)
If IsNumeric(Plus_UserPost) Then
If CLng(Dvbbs.MyUserInfo(8))< CLng(Plus_UserPost) Then
Response.redirect "showerr.asp?ErrCodes=
使用"&Plus_Name&"的最少发贴数是"&Plus_UserPost&",您只有"&Dvbbs.MyUserInfo(8)&"篇&action=plus"
End If
End If
If IsNumeric(Plus_userWealth) Then
If CLng(Dvbbs.MyUserInfo(21))< CLng(Plus_userWealth) Then
Response.redirect "showerr.asp?ErrCodes=
使用"&Plus_Name&"的最少金钱"&Plus_userWealth&",您只有"&Dvbbs.MyUserInfo(21)&"&action=plus"
End If
End If
If IsNumeric(Plus_UserEP) Then
If CLng(Dvbbs.MyUserInfo(22))< CLng(Plus_UserEP) Then
Response.redirect "showerr.asp?ErrCodes=
使用"&Plus_Name&"的最少经验是"&Plus_UserEP&",您只有"&Dvbbs.MyUserInfo(22)&"&action=plus"
End If
End If
If IsNumeric(Plus_UserCP) Then
If CLng(Dvbbs.MyUserInfo(23))< CLng(Plus_UserCP) Then
Response.redirect "showerr.asp?ErrCodes=
使用"&Plus_Name&"的最少魅力是"&Plus_UserCP&",您只有"&Dvbbs.MyUserInfo(23)&"&action=plus"
End If
End If
If IsNumeric(Plus_UserPower) Then
If Dvbbs.MyUserInfo(24)="" Then Dvbbs.MyUserInfo(24)=0
If CLng(Dvbbs.MyUserInfo(24))< CLng(Plus_UserPower) Then
Response.redirect "showerr.asp?ErrCodes=
使用"&Plus_Name&"的最少魅力是"&Plus_UserPower&",您只有"&Dvbbs.MyUserInfo(24)&"&action=plus"
End If
End If
End If
End If
End Sub
'使用插件后更新用户数据部分
Public Sub updateuser()
If Dvbbs.UserID>0 Then
Dim ADDuserWealth,ADDUserEP,ADDUserCP,ADDUserPower
ADDuserWealth=Mian_settings(9)
ADDUserEP=Mian_settings(10)
ADDUserCP=Mian_settings(11)
ADDUserPower=Mian_settings(12)
If Not IsNumeric(ADDuserWealth) Then ADDuserWealth=0
If Not IsNumeric(ADDUserEP) Then ADDUserEP=0
If Not IsNumeric(ADDUserCP) Then ADDUserCP=0
If Not IsNumeric(ADDUserPower) Then ADDUserPower=0
ADDuserWealth=CLng(ADDuserWealth)
ADDUserEP=CLng(ADDUserEP)
ADDUserCP=CLng(ADDUserCP)
ADDUserPower=CLng(ADDUserPower)
If ADDuserWealth<>0 Or ADDUserEP<>0 Or ADDUserCP <>0 Or ADDUserPower<>0 Then
Dvbbs.Execute("Update Dv_user Set userWealth=userWealth+("&ADDuserWealth&"),UserEP=UserEP+("&ADDUserEP&"),UserCP=UserCP+("&ADDUserCP&"),UserPower=UserPower+("&ADDUserPower&") Where userID="&Dvbbs.userID&"")
Dvbbs.TrueCheckUserLogin
End If
End If
End Sub
'---------------取得插件设置数据
Public Sub GetPlus_Setting(plus_ID)
plus_Settingnames="设置字段1,设置字段2,设置字段3,设置字段4,设置字段5,设置字段6,设置字段7,设置字段8,设置字段9,设置字段10,设置字段11,设置字段12,设置字段13,设置字段14,设置字段15,设置字段16,设置字段17,设置字段18,设置字段19"
plus_Settings="0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0"
Mian_settings="0,0|24,1@2@3@4@5@6@7@8,,0,0,0,0,0,0,0,0,0"
plus_Copyright="dvbbs"
Plus_Name="未知插件"
Dim SettingDatas
SettingDatas=Plus_Setting()
If IsArray(SettingDatas) Then
Dim i,SettingData
For i=0 to UBound(SettingDatas,2)
If CStr(LCase(SettingDatas(0,i)))=CStr(LCase(plus_ID)) Then
SettingData=SettingDatas(1,i)
Plus_Name=SettingDatas(2,i)
plus_Copyright=SettingDatas(3,i)
Dvbbs.Forum_Copyright=Dvbbs.Forum_Copyright&" "&Plus_Name&" 由"&plus_Copyright&"开发"
Exit For
End If
Next
If SettingData<>"" Then
SettingData=Split(SettingData,"|||")
If UBound(SettingData)>1 Then
plus_Settings=SettingData(1)
plus_Settingnames=SettingData(2)
Mian_settings=SettingData(3)
End If
End If
End If
plus_Settingnames=Split(plus_Settingnames,",")
plus_Settings=Split(plus_Settings,",")
Mian_settings=Split(Mian_settings,",")
End Sub
Public Function Plus_Setting()
Dvbbs.Name="Plus_Settingts"
If Dvbbs.ObjIsEmpty() Then
Dim Rs,SQL
SQL = "select plus_ID,Plus_Setting,Plus_Name,plus_Copyright from [Dv_plus] Order By ID"
Set Rs = Dvbbs.Execute(SQL)
If Not Rs.Eof Then
Dvbbs.value = Rs.GetRows(-1)
Else
Dvbbs.value=""
End If
Set Rs = Nothing
End If
Plus_Setting=Dvbbs.Value
End Function
'--------------------
End Class
%>
<%
'*************************************************************
'*插件名称: 广告公司插件 for Dv 7.0 bulid 2004-6-5 00:33
'*
'*程序:ADRX
'*
'*类型:原创
'*
'*主页:http://bbs.go-way.net 高慧科技论坛
'*
'*时间:2004-6-6 15:33 (初次发布)
'*
'*作用:数据库连接文件
'*************************************************************
Dim Pconn
Sub ReLoadSettings()
Dim Rs
If Not IsObject(Pconn) Then ConnectionPlusDB
Set Rs=Pconn.Execute("Select adv_url,adv_txt,adv_img,adv_cheat,adv_wealth,adv_ep,adv_cp,adv_click,adv_click1 From [adv_config] Where adv_type=1")
Dvbbs.SqlQueryNum=Dvbbs.SqlQueryNum+1
Dvbbs.Name="X_AdvCom_MainSetting"
Dvbbs.Value=Rs.GetString(,,"||","","")
End Sub
Sub ConnectionPlusDB()
Dim PConnStr,DB
DB="data/X_AdvCom.mdb"
PConnStr = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath(DB)
On Error Resume Next
Set Pconn = Server.CreateObject("ADODB.Connection")
Pconn.open PConnStr
If Err Then
err.Clear
Set Pconn = Nothing
Response.Write "广告公司插件的数据库连接出错,请检查该插件的数据库路径。"
Response.End
End If
End Sub
Sub ClosePlusDB()
If IsObject(Pconn) Then
Pconn.Close
Set Pconn=Nothing
End If
End Sub
%>
<%
'*************************************************************
'*插件名称: 广告公司插件 for Dv 7.0 bulid 2004-6-5 00:33
'*
'*程序:ADRX
'*
'*类型:原创
'*
'*主页:http://bbs.go-way.net 高慧科技论坛
'*
'*时间:2004-6-6 15:33 (初次发布)
'*
'*作用:主执行文件
'*************************************************************
Dv_plus.name="X_AdvCom"
Dv_plus.checklogin()
Dvbbs.Loadtemplates("")
If Dvbbs.UserID=0 Then
Dvbbs.AddErrCode(6)
Dvbbs.Showerr()
Else
If Request("action")="save" Then
Dvbbs.stats="领取证书"
Dvbbs.Nav
Dvbbs.Head_var 0,0,"广告公司","X_AdvCom.asp"
Save()
ElseIf Request("action")="update" Then
Dvbbs.stats="领取佣金"
Dvbbs.Nav
Dvbbs.Head_var 0,0,"广告公司","X_AdvCom.asp"
Update()
Else
Dvbbs.stats="办公大厅"
Dvbbs.Nav
Dvbbs.Head_var 0,0,"广告公司","X_AdvCom.asp"
Main()
End If
End If
ClosePlusDB()
Set Dv_plus=Nothing
Dvbbs.Footer
Sub Main()
Dim MainSettings,Rs,Sql,i
Dim adv_url,adv_txt,adv_img,adv_wealth,adv_cp,adv_ep
Dvbbs.Name="X_AdvCom_MainSetting"
If Dvbbs.ObjIsEmpty() Then ReLoadSettings
MainSettings=Split(Dvbbs.Value,"||")
adv_url=MainSettings(0):adv_txt=MainSettings(1):adv_img=MainSettings(2)
If Mid(adv_url,Len(adv_url),1)="/" Then adv_url=Mid(adv_url,1,Len(adv_url)-1)
adv_wealth=Clng(MainSettings(4)):adv_ep=Clng(MainSettings(5)):adv_cp=Clng(MainSettings(6))
Response.Write "
" &_
"
" &_
"
广告经纪人排行
" &_
"
名次
姓名
反馈量
"
If Not IsObject(Pconn) Then ConnectionPlusDB
Set Rs=Pconn.Execute("Select Top 10 userid,username,count_z From [adv_broker] Order By count_Z DESC")
Dvbbs.SqlQueryNum=Dvbbs.SqlQueryNum+1
If Rs.Eof Or Rs.Bof Then
Response.write "
暂时还没有业务员。
"
Else
Sql=Rs.GetRows
For i=0 to Ubound(Sql,2)
Response.Write "
"
Set Rs=Pconn.Execute("Select count_z,count_b,updatetime From [adv_broker] where Userid="&Dvbbs.UserID)
Dvbbs.SqlQueryNum=Dvbbs.SqlQueryNum+1
Response.Write "
"
If Rs.Eof Or Rs.Bof Then
Set Rs=Nothing
Response.Write "
"&VbCrLf&_
""&VbCrLf
End Sub
Sub Save()
Dim Rs
If Not IsObject(Pconn) Then ConnectionPlusDB
Set Rs=Pconn.Execute("Select UserID From [adv_broker] where Userid="&Dvbbs.UserID)
Dvbbs.SqlQueryNum=Dvbbs.SqlQueryNum+1
If Rs.Eof and Rs.Bof Then
Set Rs=Nothing
Pconn.Execute("insert into [adv_broker] (userid,username,addtime) values ("&Dvbbs.UserID&",'"&Dvbbs.MemberName&"','"&now()&"')")
Dvbbs.SqlQueryNum=Dvbbs.SqlQueryNum+1
Dv_plus.updateuser()
Dvbbs.Dvbbs_Suc("证书申请成功,请妥善保存。")
Else
Set Rs=Nothing
Response.redirect "showerr.asp?ErrCodes=
您已经领取证书了,请不要重复申领。&action=plus"
End If
End Sub
sub update()
Dim MainSettings,Rs,Sql,Point
Dim adv_wealth,adv_cp,adv_ep
Dvbbs.Name="X_AdvCom_MainSetting"
If Dvbbs.ObjIsEmpty() Then ReLoadSettings
MainSettings=Split(Dvbbs.Value,"||")
adv_wealth=Clng(MainSettings(4)):adv_ep=Clng(MainSettings(5)):adv_cp=Clng(MainSettings(6))
If Not IsObject(Pconn) Then ConnectionPlusDB
Set Rs=Pconn.Execute("Select updatetime,count_b From [adv_broker] where Userid="&Dvbbs.UserID)
Dvbbs.SqlQueryNum=Dvbbs.SqlQueryNum+1
If Rs.Eof Or Rs.Bof Then
Set Rs=Nothing
Response.redirect "showerr.asp?ErrCodes=
你尚未办理广告经纪人证书,请到广告公司去申请吧。&action=plus"
Else
If DateDiff("d",Rs(0),Date())<=0 Then
Set Rs=Nothing
Response.redirect "showerr.asp?ErrCodes=
你今天已经领取佣金了,明天再来吧。&action=plus"
Else
Point=Rs(1)
Set Rs=Nothing
Pconn.Execute("Update [adv_broker] Set count_b=0,updatetime='"&now&"' Where userid="&Dvbbs.UserID)
Dvbbs.SqlQueryNum=Dvbbs.SqlQueryNum+1
If Point>0 Then
Dvbbs.Execute("Update [Dv_User] Set userwealth=userwealth+"&Clng(Point*adv_wealth)&",userEP=userEP+"&Clng(Point*adv_ep)&",userCP=userCP+"&Clng(Point*adv_cp)&" Where userid="&Dvbbs.UserID)
Dvbbs.TrueCheckUserLogin
End If
End If
End If
Dvbbs.Dvbbs_Suc("
你已成功领取佣金:"&Clng(Point*adv_wealth)&"两银子,"&Clng(Point*adv_cp)&"点魅力,"&Clng(Point*adv_ep)&"经验。")
End Sub
%>