<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%
'Option Explicit         '强制声明变量
response.buffer=true 	'开启缓冲页面功能
%>
<!-- #include file="common.asp" -->
<!-- #include file="common_other.asp" -->
<!-- #include file="jk_encrypt.asp" -->
<!-- #include file="cms_class.asp" -->
<!-- #include file="CMS_skin.asp" -->
<!-- #include file="TempClass.asp" -->
<%
set joekoe_cms=new class_joekoe_cms

'---------------------------------数据库连接字符串----------------------------------
joekoe_cms.web_vt=0
if web_dim(6)="" then   web_dim(6)="/"           '网站路径 
web_data_path=web_dim(7)                         '数据库地址
joekoe_cms.connstr="DBQ="&server.mappath(web_data_path)&";DRIVER={Microsoft Access Driver (*.mdb)};"


dim joekoe_cms,conn,rs,sql,page_power,i,tit,tit_fir,tit2,tit3,index_url,url_fir,url1,url2,url3,action,dim_user,dim_num,data_name
dim login_username,login_id,login_password,login_mode,login_popedom,login_emoney,login_integral,login_modep,login_faces,login_lentim,login_lentimt,login_isper,login_cname,login_sex,login_bokeid,login_strength
dim ukong,redx,go_back,web_nologin,web_nopost,CMS_Skin,web_config,login_bbs_counter,dd1,dd2,ddd1,ddd2
dd1=" width='20%'"
dd2=" width='80%'"
ddd1=" width='22%'"
ddd2=" width='78%'"

'----------------------------------网站初始化，定义相关网站变量-----------------------------------
'以下变量大部分取值于 common.asp 文件
'----------------------------------网站Cookies名称----------------------------------
joekoe_cms.web_cookies=web_dim(5)                                               '即common.asp中web_dim(5)
'-----------------------------------常用变量设置--------------------------------------
joekoe_cms.web_name=web_dim(1)                                                  '网站名称
joekoe_cms.web_url=web_dim(2)                                                   '网站的网址
joekoe_cms.web_email=web_dim(4)
joekoe_cms.web_skin=hs_skin                                                     '网站的skin名称
joekoe_cms.web_upload=web_dim(13)                                               '网站上传路径
joekoe_cms.web_unit=web_dim(9)                                                  '网站虚拟货币
joekoe_cms.web_health=web_dim(18)                                               '网站健康信息(过滤字符)
joekoe_cms.web_path=web_dim(6)                                                  '网站目录相对路径
joekoe_cms.web_dir=web_dim(6)                                                   '网站目录相对路径(另一种表达方式)
joekoe_cms.web_dir_skin=joekoe_cms.web_path&"skin/"&hs_skin&"/"                 '网站skin的相对路径

if int(web_dim(0))<2 then joekoe_cms.js_tim=""
joekoe_cms.chk_creat()
dim_user=split(web_dim(19),"|")                                                 '用户类别设置
dim_num=split(web_dim(12),"|")                                                  '页面显示设置
Set CMS_Skin=new class_CMS_Skin                                                 '定义CMS_Skin为类变量
response.cookies(joekoe_cms.web_cookies).path=joekoe_cms.web_path             '定义Cookies储存路径                         
login_username=trim(request.cookies(joekoe_cms.web_cookies)("login_username"))  'cookies用户名
login_password=trim(request.cookies(joekoe_cms.web_cookies)("login_password"))  'cookies用户密码
login_id=0                                                                      '用户的ID编号
login_mode=""                                                                   '用户登录模式
login_modep=0
login_popedom=""
login_emoney=0                                                                  '用户的虚拟货币数量
login_integral=0                                                                '用户的积分
login_strength=0
login_cname=""
login_bbs_counter=0
login_lentim=0
login_lentimt=0
action=trim(request.querystring("action"))                                      '处理返回的action
action=replace(action,"'","")                                                   '去掉action中的'
action=replace(action,"""","")                                                  '去掉action中的""
ukong=CMS_Skin.skukong
redx=CMS_Skin.skredx
go_back=CMS_Skin.skgo_back
web_nologin=replace(CMS_Skin.sknologin,"%",joekoe_cms.web_path)
web_nopost=CMS_Skin.skpost
'-------------影音服务器数据读入-----------------
call joekoe_cms.chk_server(41)                                                  '读入数据库jk_server表中数据替代common.asp文件中的web_dim(41)
call joekoe_cms.chk_server(28)                                                  '读入数据库jk_server表中数据替代common.asp文件中的web_dim(28)    
'-------------影音服务器数据读入结束-------------
'================================================
'作    用：清除所有全局数组等，同时处理cookies，以及要清除的全局数组等为：dim_num,web_dim,rs,conn,cms2006
'参    数：
'	   c_end : 为1时结束网页
'基础介绍：
'   如果不永久保存cookies，则设置cookies的时间为dim_num(2)的值（即web_dim(12)的第3个参数）
'   DateAdd 函数：返回已添加指定时间间隔的日期－DateAdd(interval, number, date)，其中：
'   interval：要添加的时间间隔单位，参数可为：yyyy 年,q 季度,m 月,d 日,ww 周,h 小时,n 分钟,s 秒
'   number：要添加的时间间隔长度，本例中为 20 分钟
'   date：要进行添加的时间，本例为 当前时间 
'   DateAdd函数：此函数在本例中主要是设置cookies的过期时间为  20 分钟
'================================================
sub web_clear(c_end)
  response.cookies(joekoe_cms.web_cookies).path=joekoe_cms.web_path                 '写入cookies的路径 
  if request.cookies(joekoe_cms.web_cookies)("iscookies")="yes" then     '如果永久保存cookies，则过期时间设置为10年
      response.cookies(joekoe_cms.web_cookies).expires=date+3650
  else
    response.cookies(joekoe_cms.web_cookies).expires=DateAdd("n",dim_num(2),joekoe_cms.now_time)
  end if
  erase dim_num                                                    '清除 dim_num 用户数组
  erase web_dim                                                    '清除 web_dim 全局数组，已在common.asp中定义
  if isobject(rs) then set rs=nothing                              '如果rs是连接数据库变量，则清除
  if joekoe_cms.isconn then                               '如果数据库仍保持连接，则关闭数据库，同时清除conn变量
    conn.close
    set conn=nothing
  end if
  if isarray(web_config) then erase web_config
  set joekoe_cms=nothing                                         '清除类变量edxsky_2in1
  set CMS_Skin=nothing
  if c_end=1 then response.end                                   'c_end=1时结束网页（c_end为参数）
end sub
	'=============================================================
	'函数作用：判断发言是否来自外部
	'=============================================================
	Public Function CheckPost()
		On Error Resume Next
		Dim server_v1, server_v2
		CheckPost = 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
			CheckPost = True
		End If
	End Function
	'=============================================================
	'函数作用：判断来源URL是否来自外部
	'=============================================================
	Public Function CheckOuterUrl()
		On Error Resume Next
		Dim server_v1, server_v2
		server_v1 = Replace(LCase(Trim(Request.ServerVariables("HTTP_REFERER"))), "http://", "")
		server_v2 = LCase(Trim(Request.ServerVariables("SERVER_NAME")))
		If server_v1 <> "" And Left(server_v1, Len(server_v2)) <> server_v2 Then
			CheckOuterUrl = False
		Else
			CheckOuterUrl = True
		End If
	End Function

'================================================
'作  用：将变量置为空字符－－防止出现NULL
'================================================
function var_null(ub)
  var_null=trim(ub)
  if var_null="" or isnull(var_null) then var_null=""
end function

'================================================
'作    用：判断变量是否为整数即 int 
'基础介绍：
'    InStr 函数：返回string1在string2中首次出现的位置。InStr(string1, string2)string1,string2 为 Null 返回       Null,string1 为"" 返回 0 ,string2 为"" 返回 1,在 string1 中找到 string2 ,则返回找到匹配字符串的位置 
'    InStr 函数：本例中查找  .  小数点，用于判断变量是否为小数，如果是则返回值＞0
'================================================
function int_true(nvar)
  int_true=true
  if var_null(nvar)="" or not(isnumeric(nvar)) or instr(nvar,".")>0 then int_true=false
end function

'================================================
'作  用：判断变量是否为数值即 numeric 
'================================================
function num_true(nvar)
  num_true=true
  if var_null(nvar)="" or not(isnumeric(nvar)) then num_true=false
end function

'================================================
'作    用：从web_dim(11)变量取值－在common.asp中定义，用于设置注册用户信息(共50个参数)
'基础介绍：
'      Mid 函数：从string中返回指定数目的字符。Mid(string, start[, length])，string 字符串,如果 string 为 Null，则返回 Null。Start 开始位置,如果start 超过了 string 中字符的数目,是返回 ""Length 要返回的字符数。如果省略或 length 超过文本的字符数,则返回从 start 到结束的所有字符
'================================================
function format_mid_num(nnum)
  if nnum>len(web_dim(11)) then
    format_mid_num=0
    exit function
  end if
  format_mid_num=int(mid(web_dim(11),nnum,1))
end function

'================================================
'作  用：从ndata表中查找指定id，该id为ndata表中的最新数据
'================================================
function first_id(ndata,id)
  dim rsf
  set rsf=joekoe_cms.exec("select top 1 "&id&" from "&ndata&" order by "&id&" desc",1)
  first_id=rsf(id)
  rsf.close
  set rsf=nothing
end function

'================================================
'作    用：数据获取并处理
'参    数：
'   at=1：为表单获取 
'   at=2：为QueryString获取
'   acut：返回字符串长度，0为不限制
'================================================

function code_admin(strers,at,acut)
  dim strer
  strer=trim(strers)
  select case int(at)
  case 1
    strer=trim(request.form(strer))
  case 2
    strer=trim(request.querystring(strer))
  end select
  if isnull(strer) or strer="" then
    code_admin=""
    exit function
  end if
 ' strer=replace(strer,"'","""")
  if int(acut)>0 then strer=left(strer,acut)
  '模板替换操作
  'strer=GetNewStr(strer)
  code_admin=strer
end function

Function GetNewStr(strer)
  dim re
	set re = New RegExp
	re.Global = True
	re.IgnoreCase = True

	're.Pattern="forum_([A-Za-z0-9\./=\%\-&_~`@[\]\':+!#\ ]?).asp"
	re.Pattern="forum_([A-Za-z0-9]*).asp"
    strer=re.Replace(strer,"$1.asp")

    Set Re = Nothing
	GetNewStr = strer
	
End Function

'================================================
'作    用：根据用户的登录模式，取得用户所属类别的设置。format_power(login_mode,2)
'参    数：
'     pvar：即login_mode，用户登录模式。pt:有3个取值:1,2,3
'     pt=1：取得用户登录模式的中文名称
'     pt=2：如果把web_(19)(即dim_user())分为5类,则pt=2查找用户属于第几类
'     pt=3：取得登录用户的级别代码，用数值表示
'基础介绍：
'  UBound 函数：返回指定数组最大可用下标。用“:”将dim_user(i)分割成数据，查找用户所属的用户级别
'================================================
function format_power(pvar,pt)
  dim pi,pdim,temp1
  select case pt
  case 2
    temp1=1
  case 3
    temp1=0
  case else
    temp1=""
  end select
  if pvar="" then                              '如果用户为游客，则返回
    format_power=temp1
    exit function
  end if
  for pi=0 to ubound(dim_user)
    pdim=split(dim_user(pi),":")
    if pvar=pdim(0) then                       '找到该用户类别，对其进行pt处理
      select case pt
      case 1
        temp1=pdim(1)                          '取得用户登录模式的中文名称
      case 2
        temp1=pi+1                             '查找用户属于第几类
      case 3
        temp1=pdim(2)                          '取得登录用户的类别代码，用数值表示
      case else
        temp1=pvar                             '对pvar即login_mode不进行转换
      end select
    end if
    erase pdim                                 '削除临时数据
  next
  format_power=temp1
end function

'================================================
'作    用：如果把web_(19)(即dim_user())分为5类，则该函数取得各类中以“:”隔开的部分的值。format_power2(1,3)
'参    数：
'     pnn：须为数值,指定用户类别
'     pt ：须为数值,取值可以为1,2,3
'该函数与format_power()的区别主要在于：本函数已经明确所要处理的用户类型，而format_power()为用户类别的通用设置,调用简单。
'================================================
function format_power2(pnn,pt)	
  dim pdim
  format_power2=""
  pdim=split(dim_user(pnn-1),":")
  format_power2=pdim(pt-1)
  erase pdim
end function


function format_emoney_power(n_emoney,n_usert,n_pt)
  dim temp1,ddim,nj,nk,upnum
  upnum=ubound(dim_user)        
  ddim=split(n_usert,".")
  for nj=0 to ubound(ddim)
    nk=ddim(nj)
    if int(upnum+1)>=int(nk) then
      if int(nk)=0 then
        temp1=temp1&img_skin("icon_other")
      else
        temp1=temp1&img_skin("icon_"&format_power2(nk,1))
      end if
    end if
  next
  if isarray(ddim) then erase ddim
  if n_pt=1 then temp1=temp1&"&nbsp;<font class=red2>"&n_emoney&"</font>&nbsp;"&joekoe_cms.web_unit
  format_emoney_power=temp1
end function

'================================================
'作    用：处理网站运行时产生的任何错误的显示
'参    数：
'    rror_type：为产生错误的代码
'    error_len：显示表格的宽度
'基础介绍：
'   Replace 函数：将find全部替换为replace。Replace(expression, find, replace)本例中用于将 + 替换为错误显示的图片，以使页面更加美观
'================================================
function found_error(error_type,error_len)
  dim temp1
  temp1=replace(error_type,"+","<img src='"&joekoe_cms.web_path&"images/small/jt_err.gif' border=0 align=absmiddle>&nbsp;")
  temp1=vbcrlf&"<table border=0 width=" & error_len & ">" & _
	vbcrlf&"<tr><td align=center height=50><font class=red>系统发现你输入的数据有以下错误：</font></td></tr>" & _
	vbcrlf&"<tr><td class=htd>" & temp1& "</td></tr>" & _
	vbcrlf&"<tr><td align=center height=50><a href='javascript:history.back(1)'>返回上一页</a></td></tr>" & _
	vbcrlf&"</table>"
  found_error=temp1
end function

'================================================
'作    用：判断sn_var 用户名、代号和密码是否合法
'参    数：
'  如果sn_var为：空字符 | : ' "" chr(9)-chr(13),chr(32)(系统过滤字符)以及长度大于20，则返回false
'================================================
function symbol_name(sn_var)
  symbol_name=false
  if sn_var="" or len(sn_var)>20 or instr(sn_var,"|")>0 or instr(sn_var,":")>0 or instr(sn_var,"'")>0 or instr(sn_var,"""")>0 or instr(sn_var,chr(9))>0 or instr(sn_var,chr(10))>0 or instr(sn_var,chr(13))>0 or instr(sn_var,chr(32))>0 then
    exit function
  end if
  for i=1 to len(sn_var)
    if instr(web_dim(15),mid(sn_var,i,1))>0 then exit function      '以web_dim(15)定义的过滤字符来检验sn_var
  next
  symbol_name=true
end function

'================================================
'作    用：判断symbol_var 密码是否合法
'参    数：
'  如果symbol_var为：空字符 | : ' "" chr(9)-chr(13),chr(32)(系统过滤字符)以及长度大于20，则返回false
'================================================
function symbol_ok(symbol_var)
  symbol_ok=false
  symbol_var=symbol_var
  if symbol_var="" or len(symbol_var)>20 then exit function               '密码为空字符以及长度>20，返回false
  for i=1 to len(symbol_var)
    if instr(web_dim(16),mid(symbol_var,i,1))=0 then exit function    '以web_dim(16)定义的密码字符来检验symbol_var
  next
  symbol_ok=true
end function

'================================================
'作    用：过滤掉不健康的字符以及保留的注册用户名
'================================================
function health_name(hnn)
  dim ti,tnum,tdim,hn
  health_name=false
  hn=hnn
  tdim=split(web_dim(17)&":"&web_dim(18),":")      'web_dim(17)保留的注册用户名，web_dim(18)为用于过滤的不健康字符
  tnum=ubound(tdim)
  for ti=0 to tnum
    if instr(hn,tdim(ti))>0 then                   '如果找到了不健康字符，则返回false
      erase tdim
      exit function
    end if
  next
  erase tdim
  health_name=true
end function

'判断是否是后台超级管理员
function health_name1(hnn)
  dim ti,tnum,tdim,hn
  health_name1=false
  hn=hnn
  tdim=split(web_dim(3),":")
  tnum=ubound(tdim)
  for ti=0 to tnum
    if instr(hn,tdim(ti))>0 then
      erase tdim
      exit function
    end if
  next
  erase tdim
  health_name1=true
end function


'================================================
'作    用：过滤掉不健康的字符以及保留的注册用户名
'参    数：
'  vt为保留参数
'================================================
function health_var(hnn,vt)
  if not joekoe_cms.ishealth then                   '如果不过滤不健康字符，则返回 
    health_var=hnn
    exit function
  end if
  dim ti,tj,tdim,ht,hn
  hn=hnn
  if format_mid_num(5)=1 then                       '如果后台设置过滤不健康字符(web_dim(11)的第6个参数)
    tdim=split(web_dim(18),":")
    for ti=0 to ubound(tdim)
      ht=""
      for tj=1 to len(tdim(ti))                         
        ht=ht&"*"                                   '不健康字符将显示为“*”
      next
      hn=replace(hn,tdim(ti),ht)                    '替换掉不健康的字符
    next
    erase tdim
  end if
  health_var=hn
end function

sub textarea_resize(textareaname)
  response.write t_textarea_resize(textareaname)
end sub

function t_textarea_resize(textareaname)
dim tmp1
tmp1=vbcrlf&"<p>" & _
vbcrlf&"<a href=""javascript:textarea_resize('"&textareaname&"','-');""><img src='"&joekoe_cms.web_path&"admin/images/resize_minus.gif' border=0></a>" & _
vbcrlf&"<br>" & _
vbcrlf&"<a href='javascript:;' onclick=""javascript:textarea_resize('"&textareaname&"','+');""><img src='"&joekoe_cms.web_path&"admin/images/resize_plus.gif' border=0></a>" & _
vbcrlf&"</p>"
t_textarea_resize=tmp1
end function


'获取栏目分类  
sub getsortname()
    sql="select c_name from jk_class where c_id="&cid
    if cint(sid)>0 then 
      sql="select jk_class.c_name,jk_sort.s_name from jk_sort inner join jk_class on jk_sort.c_id=jk_class.c_id where jk_sort.c_id="&cid&" and jk_sort.s_id="&sid
    end if
    set rs=joekoe_cms.exec(sql,1)
    if rs.eof then
      rs.close
        tit="列表"
      exit sub
    end if
    tit=rs("c_name")
	url1="list.asp?c_id="&cid
    if cint(sid)>0 then tit2=rs("s_name")
    rs.close
end sub 

'另外一种获取分类 方法
sub getsortname2()
dim sn,ddim,dnum,ndim
sn=ubound(sort_dim)
  for i= 0 to sn
    ddim=split(sort_dim(i),"|")
   if cint(sid)<1 then
	tits=split(ddim(0),":")
	if cint(tits(1))=cid then
	tit=tits(0)
	 exit sub
	 end if
   end if
    dnum=ubound(ddim)
    for j=1 to dnum
     ndim=split(ddim(j),":")
	 if cint(ndim(1))=sid then
	 tits=split(ddim(0),":")
	 tit=tits(0)
	 url1="list.asp?c_id="&tits(1)
	 tit2=ndim(0)
	 exit sub
	 end if
	next
  next	
end sub 
%>




