<!--#include file="md5.asp"-->
<!--#include file="cfig.asp"-->
<%
'容错
On Error Resume Next
'Application.Contents.RemoveAll()

'----数据库设置-------------------------------
bbstable="bbs"                        '主题帖子数据表
rebbstable="rebbs"                    '回复帖子数据表
boardtable="bbsboard"                 '分类数据表
usertable="bbsuser"                   '用户数据表
linktable = "friendlink"              '友情链接数据表
configtable = "config"                '站点参数链接数据表
conn_db_way="2"                       '数据库连接方式

TieBa_version="" '当前版本号
TieBa_UpdateDate="2012-10-18" '最新更新时间


'防止SQL注入代码
Dim Fy_Url,Fy_a,Fy_x,Fy_Cs(),Fy_Cl,Fy_Ts,Fy_Zx
	Fy_Url=Request.ServerVariables("QUERY_STRING")
	Fy_a=split(Fy_Url,"&")
	redim Fy_Cs(ubound(Fy_a))
	for Fy_x=0 to ubound(Fy_a)
		Fy_Cs(Fy_x) = left(Fy_a(Fy_x),instr(Fy_a(Fy_x),"=")-1)
	Next
	For Fy_x=0 to ubound(Fy_Cs)
		If Fy_Cs(Fy_x)<>"" Then
			If Instr(LCase(Request(Fy_Cs(Fy_x))),"'")<>0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"and ")<>0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"select ")<>0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"update ")<>0 or Instr(LCase(Request(Fy_Cs(Fy_x)))," chr")<>0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"delete%20from")<>0 or Instr(LCase(Request(Fy_Cs(Fy_x))),";")<>0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"insert")<>0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"mid")<>0 Or Instr(LCase(Request(Fy_Cs(Fy_x))),"master.")<>0 Then
				Response.Write "<Script Language=JavaScript>alert(' 您输入的参数不合法');window.close();</Script>"
				Response.End
			End If
		End If
	Next


Dim conn   
Dim connstr
'两种连接Access数据库的方式，3是连接sql的方式。
Select Case conn_db_way
	Case "1"
		'两种连接Access数据库的方式，建议选择ADO模式，即：2。
		'ODBC
		connstr="DBQ="+server.mappath(""&dataStr & dreamsundb&"")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
	Case "2"
		'OleDb
		connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(""&dataStr & dreamsundb&"")
	Case "3"
		connstr="Driver={SQL Server};Server=(local);Database=DDPTieBa;Uid=ddptieba;Pwd=ddptieba123;"
End Select

Set conn=server.createobject("ADODB.CONNECTION")
conn.open connstr
SQLQueryNums=0



If Application(webname&"CacheTime")<>"" And datediff("n",Application(webname&"CacheTime"),Now()) > cacheTime Then
	Application.Contents.RemoveAll()
End If 

'========================================================================
'缓存变量
'========================================================================
If Application(webname&"CacheTime")="" Then
	Application.Contents.RemoveAll()
	GetTieBaInfoCache()
	GetBoardCache()
	GetLinkCache()
	Application.Lock
	Application(webname&"CacheTime")=Now()
	Application.Unlock
	app="Executing"
Else 
	app="Achieved"
End If


	'--------------读取基本信息缓存------------------
If Not IsArray(Application(webname&"_TieBa_Category")) Then GetBoardCache()
If Not IsArray(Application(webname&"_TieBa_Infos")) Then GetTieBaInfoCache()
Arr_Category=Application(webname&"_TieBa_Category")
TieBa_Infos=Application(webname&"_TieBa_Infos")
	TieBa_Name = TieBa_Infos(1,0) '网站名称
	TieBa_Url=TieBa_Infos(2,0)'网站路径
	Sys_Admin = TieBa_Infos(3,0) '管理员.多个版主请用|分割。
	Sys_skins=TieBa_Infos(4,0)'皮肤风格！
	Sys_BadWords=TieBa_Infos(6,0)'脏话过滤[标题和内容]
	Sys_ADWords=TieBa_Infos(7,0)'广告过滤
	Sys_KeepName = TieBa_Infos(8,0)'被保留的用户名
	Sys_close = TieBa_Infos(9,0)'系统是否关闭 0,开放；1，关闭； + 关闭原因
	TieBa_AD_Top = TieBa_Infos(10,0)'顶部广告banner
	TieBa_AD_Tie = TieBa_Infos(11,0)'帖间广告
	TieBa_AD_A = TieBa_Infos(12,0) '广告A
	TieBa_AD_B = TieBa_Infos(13,0) '广告B
	Sys_Config=TieBa_Infos(5,0)
	if instr(Sys_Config,"|")>0 Then
		Sys_Array=Split(Sys_Config,"|")
	Else
		Sys_Array=Split("50|2|1|3|5|20|10|30|0|0|50|50|60|30|60|50|0|0|0|0|1|1|22|23|24|25|26|27|28|29|30|31|32|33|34","|")
	End If 
		Sys_Default_Money=int(Sys_Array(0)) '注册初始论坛分数
		Sys_Add_Money=int(Sys_Array(1)) '发布文章分数
		Sys_Re_Money=int(Sys_Array(2)) '回复文章分数
		Sys_Del_Money=int(Sys_Array(3)) '删除文章分数
		Sys_Good_Money=int(Sys_Array(4))'文章被推荐分数

		Sys_List_Num=int(Sys_Array(5)) '首页每页显示条数
		Sys_Show_Num = int(Sys_Array(6)) '帖子每页显示条数
		Sys_PostTime=int(Sys_Array(7)) '发帖防止灌水时间，单位：秒
		Sys_Guest_Add=int(Sys_Array(8)) '游客是否可以发贴
		Sys_Guest_Re=int(Sys_Array(9)) '游客是否可以回复

		Sys_uploadMoney=int(Sys_Array(10))'多少分才可以上传图片
		Sys_ModMoney=int(Sys_Array(11))'多少分才可以自定义头像？建议大于上传图片分数
		Sys_DyTime=int(Sys_Array(12))'侧边栏调用多少天之内的各种帖子？
		Sys_RegTime=int(Sys_Array(13)) '多少分钟后才可以同一个电脑注册？
		Sys_EditTime=int(Sys_Array(14)) '多长时间以后修改帖子将自动增加 被xx修改过（仅限管理员和普通作者）

		Sys_MaxOnline = int(Sys_Array(15))'最大显示的在线人数
		Sys_UserCheck=int(Sys_Array(16))'新注册用户是否需要审核----0需要审核1自动审核
		Sys_IsCheck=int(Sys_Array(17))'会员发帖子是否需要审核------0需要审核1自动审核
		Sys_GuestIsCheck=int(Sys_Array(18))'游客发帖是否需要审核---0审核，1，自动审核
		Sys_Sys_isuserinfo=int(Sys_Array(19))'必须登陆才能察看用户信息．1是任何人可以看，0为登陆察看。
		Sys_isShowIpName =int(Sys_Array(20))'0:不显示IP的详细位置 1:按纯真数据库进行显示(来自于外部数据)
		Sys_isSideBar =int(Sys_Array(21))'是否带有侧边栏，取决于模板中skin。xml

		HitsSession=int(Sys_Array(22)) '点击率是否防止刷新？
		Sys_isReView=int(Sys_Array(23))'是否允许回复可见
		Sys_loginTime=int(Sys_Array(24))'多少分钟内重复登录不计算
		Sys_loginMoney=int(Sys_Array(25))'登送积分


'判断用户是否登陆
temp_user=Request.Cookies("DreamSun_Post_"&webname)("username")
temp_rnd=Request.Cookies("DreamSun_Post_"&webname)("rnd")
If temp_user<>"" And temp_rnd<>"" Then 
temp_rndduan=Left(md5(temp_rnd),5)&right(md5(temp_rnd),5)
	set rs=conn.execute("select cookrnd from "& UserTable &" where username='"&temp_user&"'",0,0)
	SQLQueryNums=SQLQueryNums+1
			if not rs.eof then temp_user_rnd=rs(0)
		rs.close
	set rs=Nothing
		If temp_user_rnd=temp_rndduan Then 
			Dreamsun_name=temp_user
		Else
			Dreamsun_name=""
		End If 
End If 

'判断用户是否总管理员
Dim IsAdmin
IsAdmin =0
If DreamSun_name<>"" Then 
	cbz=split(Sys_Admin,"|")
	For cbzi=0 To Ubound(cbz)
		If Lcase(DreamSun_name)=Lcase(cbz(cbzi)) Then
			IsAdmin = 9 '超级管理员
		End If 
	Next
End If 

'生成基本信息缓存过程
Sub GetTieBaInfoCache()
	Dim log_Infos
	SQL="select top 1 * from "& configtable
	Set log_Infos=Conn.Execute(SQL)
	SQLQueryNums=SQLQueryNums+1
	TieBa_Infos=log_Infos.GetRows()
	Set log_Infos=nothing
	Application.Lock
	Application(webname&"_TieBa_Infos")=TieBa_Infos
	Application.UnLock
End Sub


'生成分类缓存过程
Sub GetBoardCache()
	 Dim Arr_Category,log_Category
	SQL="SELECT board_name,board_id,board_about,board_admin,board_order,board_father,board_photo FROM "&boardtable&"  ORDER BY board_order DESC,board_id DESC"
	Set log_Category=Conn.Execute(SQL)
	SQLQueryNums=SQLQueryNums+1
	if log_Category.eof or log_Category.bof then
		Arr_Category=""
	else
		 Arr_Category=log_Category.GetRows()
	end if
	Set log_Category=Nothing
	Application.Lock
	Application(webname&"_TieBa_Category")=Arr_Category
	Application.UnLock
End Sub

'生成友情链接缓存过程
Sub GetLinkCache()
	 Dim Arr_Category,log_Category
	SQL="SELECT id,link_name,link_url,link_info,link_type FROM "&linktable&"  ORDER BY link_order DESC,id DESC"
	Set log_Link=Conn.Execute(SQL)
	SQLQueryNums=SQLQueryNums+1
	if log_Link.eof or log_Link.bof then
		 ReDim Arr_FriendLink(0,0)
	else
		 Arr_FriendLink=log_Link.GetRows()
	end if
	Set log_Link=Nothing
	Application.Lock
	Application(webname&"_TieBa_Link")=Arr_FriendLink
	Application.UnLock
End Sub

Class Cls_Template
	private tempurl,xml,xmldoc
	Private Sub Class_Initialize
		set xml=server.createobject("Msxml2.DOMDocument.3.0")
		tempurl=server.mappath("skins/"&Sys_skins&"/"&skinfile&".xml")
		if xml.load(tempurl)=false then
			response.clear
			response.write "模板格式已经被破坏，请先修复模板"
			response.end
		end if
		set xmldoc=xml.documentElement
	End Sub
	
	Private Sub Class_Terminate
		set xmldoc=nothing
		set xml=nothing
	End Sub
	
	Public default function html(byval node)
		html=xmldoc.selectSingleNode(node).text
		html=replace(html,"$TieBa_Name$",TieBa_Name)
		html=replace(html,"$TieBa_Url$",TieBa_Url)
		html=replace(html,"$TieBa_BeiAn$",TieBa_BeiAn)
		html=replace(html,"$bbslogin$",bbslogin())
		html=replace(html,"$Sys_skins$",Sys_skins)
		html=replace(html,"$Now$",Now())
		html=replace(html,"$poweredInfo$",poweredInfo)
		html=replace(html,"$TieBa_AD_Top$",TieBa_AD_Top)
		html=replace(html,"$Tieba_AD_A$",Tieba_AD_A)
		html=replace(html,"$Tieba_AD_B$",Tieba_AD_B)
		html=replace(html,"$list_page_name$",list_page_name)
	End function
End Class



'容错
If Err.Number<>0 Then
Response.Write("系统出现错误，请联系管理员！. " & FormatDateTime(now(),2))
'Response.Write("<p>describ:"&err.Description)
On Error GoTo 0
Response.End()
End If
%>
