TransferFunctionUTF.asp
上传用户:rblchem
上传日期:2022-04-27
资源大小:1941k
文件大小:9k
源码类别:

编辑器/阅读器

开发平台:

C#

  1. <%
  2. Dim Temp_Dv_ForumNews
  3. '//*****************************************************************************//
  4. ''@ 设置外部调用限制
  5. Const LockUrl = ""
  6. ''@ 说明:只允许调用网址,要以"HTTP://"开头,为空则不限制所有外部调用.(可允许多网址限制,要以","分隔。)
  7. ''@ 使用:例如只允许此两个网址调用: lockurl="http://www.artistsky.net/,http://www.artbbs.net/"
  8. '//*****************************************************************************//
  9. '//*****************************************************************************//
  10. ''@ 设置临时文件名
  11. Temp_Dv_ForumNews = "Admin/temp.xml" '临时文件名可自行修改。该文件可以随时删除清理。
  12. '//*****************************************************************************//
  13. If CheckServer(Lockurl)=False then
  14. OUTPUT "数据被保护,禁止被其他站点调用!"
  15. Response.End
  16. End If
  17. Dim NewsConfigFile
  18. Dim XmlDoc,Node,NewsMainStr
  19. Dim GetName,Nexttime
  20. GetName = Lcase(Request.QueryString("GetName"))
  21. NewsConfigFile = "Admin/NewsSetting.xml"
  22. If isempty(Application(SessionStr&"News"&GetName)) OR isempty(Application(SessionStr&"NewsTime"&GetName)) then
  23. '缓存空
  24.     Call LoadXml()
  25. Call Page_Main()
  26. Call CloseFile()
  27. Else
  28. '缓存BU空
  29.   
  30. IF Datediff("s",Application(SessionStr&"NewsTime"&GetName),now())>0 then
  31.   '时间已过(是)
  32. Call LoadXml()
  33. Call Page_Main()
  34. Call CloseFile()
  35.   Else
  36.   '时间未到(否)
  37.    ' RESPONSE.END
  38.      OutPut Application(SessionStr&"News"&GetName)
  39.  '&"~~~~~~~~~~"&Application(SessionStr&"NewsTime"&GetName)&NOW
  40.   End If
  41. End If
  42. Sub OutPut(Strings)
  43. Response.Write "document.write('"
  44. Response.Write Strings
  45. Response.Write "');"
  46. Response.Write vbNewline
  47. End Sub
  48. 'Response.Write "<br>页面执行时间 "&FormatNumber((Timer()-Startime)*1000,5)&" 毫秒"
  49. Sub Page_Main()
  50. If GetName = "" Then
  51. OutPut "参数错误,调用已中止!"
  52. Exit Sub
  53. End If
  54. Set Node = XmlDoc.DocumentElement.selectSingleNode("NewsCode[@NewsName='"&GetName&"']")
  55. If (Node is nothing) Then
  56. OutPut "设置数据不存在,调用已中止!"
  57. Exit Sub
  58. End If
  59. Dim Updatetime,LastTime
  60. Updatetime = CheckNumeric(Node.getAttribute("Updatetime"))
  61. LastTime = Node.getAttribute("LastTime")
  62. If Updatetime>0 and IsDate(LastTime) Then
  63. NextTime=Dateadd("s",Updatetime,LastTime)
  64. Application.Lock
  65. Application(SessionStr&"NewsTime"&GetName)=NextTime
  66. Application.unLock
  67. If Datediff("s",LastTime,now()) > Updatetime Then
  68. '更新
  69. Call UpNewsData()
  70. Call SaveData()
  71. Application.Lock
  72. Application(SessionStr&"NewsTime"&GetName)=empty
  73. Application.unLock
  74. Else
  75. Call LoadNewsData()
  76. End If
  77. Else
  78. Call UpNewsData()
  79. End If
  80. Call ShowData()
  81. End Sub
  82. Sub LoadXml()
  83. NewsConfigFile = Server.MapPath(NewsConfigFile)
  84. Temp_Dv_ForumNews = Server.MapPath(Temp_Dv_ForumNews)
  85. Set XmlDoc = Server.CreateObject("MSXML.DOMDocument")
  86. XmlDoc.Async = False
  87. If Not XmlDoc.load(NewsConfigFile) Then
  88. XmlDoc.loadxml "<?xml version=""1.0"" encoding=""utf-8""?><NewscodeInfo/>"
  89. End If
  90. End Sub
  91. Sub CloseFile()
  92. Set XmlDoc = Nothing
  93. End Sub
  94. Sub ShowData()
  95. If NewsMainStr <>"" Then
  96. OutPut NewsMainStr
  97. Application.Lock
  98. Application(SessionStr&"News"&GetName)=NewsMainStr
  99. Application.UnLock
  100. End If
  101. End Sub
  102. Sub SaveData()
  103. If NewsMainStr = "" Then Exit Sub
  104. Node.Attributes.getNamedItem("LastTime").Text = Now()
  105. XmlDoc.save NewsConfigFile
  106. Dim TempXmlDoc,TempXml_Nodes,attributes,ChildNode,createCDATASection
  107. Set TempXmlDoc = Server.CreateObject("MSXML.DOMDocument")
  108. TempXmlDoc.Async = False
  109. If Not TempXmlDoc.load(Temp_Dv_ForumNews) Then
  110. TempXmlDoc.loadxml "<?xml version=""1.0"" encoding=""utf-8""?><TempNewsData/>"
  111. End If
  112. Set TempXml_Nodes = TempXmlDoc.DocumentElement.selectSingleNode("NewsData[@NewsName='"&Node.getAttribute("NewsName")&"']")
  113. If Not (TempXml_Nodes is nothing) Then
  114. TempXmlDoc.DocumentElement.RemoveChild(TempXml_Nodes)
  115. End If
  116. '创建调用数据
  117. Set TempXml_Nodes = XmlDoc.createNode(1,"NewsData","")
  118. Set attributes = TempXmlDoc.createAttribute("NewsName")
  119. attributes.text = Node.getAttribute("NewsName")
  120. TempXml_Nodes.attributes.setNamedItem(attributes)
  121. Set ChildNode = TempXmlDoc.createNode(1,"Temp_Data","")
  122. Set createCDATASection=TempXmlDoc.createCDATASection(NewsMainStr)
  123. ChildNode.appendChild(createCDATASection)
  124. TempXml_Nodes.appendChild(ChildNode)
  125. TempXmlDoc.documentElement.appendChild(TempXml_Nodes)
  126. TempXmlDoc.save Temp_Dv_ForumNews
  127. Set TempXmlDoc = Nothing
  128. End Sub
  129. Sub LoadNewsData()
  130. Dim TempXmlDoc,TempXml_Nodes
  131. Set TempXmlDoc = Server.CreateObject("MSXML.DOMDocument")
  132. TempXmlDoc.Async = False
  133. If Not TempXmlDoc.load(Temp_Dv_ForumNews) Then
  134. Call UpNewsData()
  135. Call SaveData()
  136. Exit Sub
  137. End If
  138. Set TempXml_Nodes = TempXmlDoc.DocumentElement.selectSingleNode("NewsData[@NewsName='"&Node.getAttribute("NewsName")&"']")
  139. If Not (TempXml_Nodes is nothing) Then
  140. NewsMainStr = TempXml_Nodes.selectSingleNode("Temp_Data").text
  141. Else
  142. Call UpNewsData()
  143. Call SaveData()
  144. End If
  145. Set TempXmlDoc = Nothing
  146. End Sub
  147. Sub UpNewsData()
  148.     Call NewsType_1() '帖子调用
  149. NewsMainStr = Fixjs(NewsMainStr)
  150. End Sub
  151. '条目调用
  152. Sub NewsType_1()
  153. Dim Skin_Main
  154. Dim SQL,Rs,i
  155. set conn=connectdb()
  156. SET Rs = conn.Execute(Node.selectSingleNode("Search").text)
  157. If Not Rs.eof Then
  158. SQL=Rs.GetRows(-1)
  159. Else
  160. OutPut "暂未有新条目!"
  161. closedb(conn)
  162. Exit Sub
  163. End If
  164. Rs.close:Set Rs = Nothing
  165.     closedb(conn)
  166. Dim Topic,Topic2,Description2,Topiclen,Descriptionlen
  167. Topiclen = Node.getAttribute("Topiclen")
  168. Descriptionlen = Node.getAttribute("Descriptionlen")
  169. If Not Isnumeric(Topiclen) or Topiclen = "" Then
  170. Topiclen = 20
  171. Else
  172. Topiclen = Cint(Topiclen)
  173. End If
  174. If Not Isnumeric(Descriptionlen) or Descriptionlen = "" Then
  175. Descriptionlen = 1000
  176. Else
  177. Descriptionlen = Cint(Descriptionlen)
  178. End If
  179. 'Call TiaoShi(SQL)
  180. '调试专用
  181. For i=0 To Ubound(SQL,2)
  182. Skin_Main = Node.selectSingleNode("Skin_Main").text
  183. Topic2=RegExpHtml(SQL(0,i),"[NoJavaScriptAndHtml]")
  184. Description2=RegExpHtml(SQL(4,i),"[NoJavaScriptAndHtml]")
  185. If Len(Topic2)>Topiclen then
  186. Topic = Left(Topic2,Topiclen)&"..."
  187. Else
  188.             Topic=Topic2
  189. End if
  190. If Len(Description2)>Descriptionlen then
  191. Description = Left(Description2,Topiclen)&"..."
  192. Else
  193. Description=Description2
  194. End if
  195.     Skin_Main = Replace(Skin_Main,"{$WholeTopic}",SQL(0,i))
  196. Skin_Main = Replace(Skin_Main,"{$Topic}",Topic)
  197. Skin_Main = Replace(Skin_Main,"{$Topic2}",Topic2)
  198. Skin_Main = Replace(Skin_Main,"{$UserName}",SQL(1,i))
  199. Skin_Main = Replace(Skin_Main,"{$link}",SQL(2,i))
  200. Skin_Main = Replace(Skin_Main,"{$PostTime}",SQL(3,i))
  201. Skin_Main = Replace(Skin_Main,"{$site}",SQL(5,i))
  202. Skin_Main = Replace(Skin_Main,"{$CateName}",SQL(23,i))
  203. Skin_Main = Replace(Skin_Main,"{$WholeDescription}",SQL(4,i))
  204. Skin_Main = Replace(Skin_Main,"{$Description}",Description)
  205. Skin_Main = Replace(Skin_Main,"{$Description2}",Description2)
  206. Skin_Main = Replace(Skin_Main,"{$XmlUrl}",SQL(9,i))
  207. Skin_Main = Replace(Skin_Main,"{$SiteTitle}",SQL(12,i))
  208. Skin_Main = Replace(Skin_Main,"{$LastUpdateTime}",SQL(10,i))
  209. Skin_Main = Replace(Skin_Main,"{$SiteDescription}",SQL(16,i))
  210. NewsMainStr = NewsMainStr & Skin_Main
  211. Next
  212. NewsMainStr = Node.selectSingleNode("Skin_Head").text & NewsMainStr & Node.selectSingleNode("Skin_Footer").text
  213.     NewsMainStr = Replace(NewsMainStr,CHR(39),"&#39;")
  214. End Sub
  215. Function Fixjs(Strings)
  216. Dim Str
  217. Str = Strings
  218. str = Replace(str, CHR(39), "'")
  219. str = Replace(str, CHR(13), "")
  220. str = Replace(str, CHR(10), "")
  221. str = Replace(str, "]]>","]]&gt;")
  222. Fixjs = str
  223. End Function
  224. Function FormatTime(Strings,val)
  225. If IsDate(Strings) and val<>"" Then
  226. Strings = FormatdateTime(Strings,val)
  227. End If
  228. FormatTime = Strings
  229. End Function
  230. Function CheckServer(str)
  231. Dim i,servername
  232. If str="" Then
  233. CheckServer = True
  234. Exit Function
  235. Else
  236. CheckServer = False
  237. End If
  238. str=split(Cstr(str),",")
  239. servername=Request.ServerVariables("HTTP_REFERER")
  240. For i=0 to Ubound(str)
  241. If Right(str(i),1)="/" Then str(i)=left(Trim(str(i)),Len(str(i))-1)
  242. If Lcase(left(servername,Len(str(i))))=Lcase(str(i)) then
  243. checkserver = True
  244. Exit For
  245. Else
  246. checkserver = False
  247. End if
  248. Next
  249. End Function
  250. Function CheckNumeric(Byval CHECK_ID)
  251. If CHECK_ID<>"" and IsNumeric(CHECK_ID) Then _
  252. CHECK_ID = cCur(CHECK_ID) _
  253. Else _
  254. CHECK_ID = 0
  255. CheckNumeric = CHECK_ID
  256. End Function
  257. Function TiaoShi(SQL)
  258. For i=0 To Ubound(SQL,2) '遍历记录行
  259. For j=0 To Ubound(SQL,1) '遍历记录列
  260. Response.Write "得到第"&i+1&"行,第"&j+1&"列的记录数据(i="&i&")(j="&j&")"&SQL(j,i)&"<br>" '得到第i+1行,第j+1列的记录数据
  261. Next
  262. Next
  263. Response.end
  264. End Function
  265. %>