📄 query.asp
字号:
keyword = Replace(keyword,"!"," ")
keyword = Replace(keyword,"]"," ")
keyword = Replace(keyword,"["," ")
keyword = Replace(keyword,")"," ")
keyword = Replace(keyword,"("," ")
keyword = Replace(keyword," "," ")
'keyword = Replace(keyword,"-"," ")
keyword = Replace(keyword,"/"," ")
keyword = Replace(keyword,"+"," ")
keyword = Replace(keyword,"="," ")
keyword = Replace(keyword,","," ")
keyword = Replace(keyword,"'"," ")
For i = 0 To Ubound(FobWords,1)
If keyword=FobWords(i) Then
Dvbbs.AddErrCode(61)
Exit for
End If
Next
If sType = 8 And (Request("submit")="站内搜索") Then sType = 2
If sType = 8 And (Request("submit")="") Then isWeb = 2
'Response.Write stype&Request("submit")&isweb
'response.end
End Sub
Sub SQLQueryStr()
Dim SearchUserID,Rs
SqlColumn = "Select Top " & Cint(Dvbbs.Forum_Setting(11))*SearchMaxPageList
If stype=1 And (nSearch=2 or nSearch=3) Then
SqlColumn = SqlColumn & LCase(" BoardID,RootID,Topic,Expression,UserName,PostUserID,DateAndTime,IsBest,LockTopic,Body,AnnounceID")
ElseIf stype=7 Then
If IsSqlDataBase Then
SqlColumn = SqlColumn & LCase(" T1.BoardID,T1.RootID,T1.Topic,T1.Expression,T1.UserName,T1.PostUserID,T1.DateAndTime,T1.IsBest,T1.LockTopic,T1.Body,T1.AnnounceID,T1.signflag")
Else
SqlColumn = SqlColumn & LCase(" BoardID,RootID,Topic,Expression,UserName,PostUserID,DateAndTime,IsBest,LockTopic,Body,AnnounceID,signflag")
End If
ElseIf stype=3 Then
SqlColumn = LCase("Select Top 50 BoardID,rootid,topic,Expression,username,postuserid,dateandtime,IsBest,LockTopic,Body,Announceid")
Else
SqlColumn = SqlColumn & LCase(" BoardID,TopicID as RootID,Title as topic,Expression,PostUserName as UserName,PostUserID,DateAndtime,IsBest,LockTopic,Child,Hits")
isMoreInfo = 1
End If
Dvbbs.Stats = template.Strings(4)
'If Trim(searchday)<>"" Then
' Dvbbs.Stats = Dvbbs.Stats & Replace(template.Strings(5),"{$searchday}",request("SearchDate"))
'Else
' Dvbbs.Stats = Dvbbs.Stats & template.Strings(6)
'End If
Select Case stype
Case 1
Set Rs=Dvbbs.Execute("Select UserID From Dv_User Where UserName='"&keyword&"'")
If Rs.Eof And Rs.Bof Then
Set Rs=Nothing
Response.redirect "showerr.asp?ErrCodes=<li>"&template.Strings(21)&"&action=OtherErr"
Else
SearchUserID = Rs(0)
End If
Select Case nSearch
'主题作者
Case 1
If Not Dvbbs.master Then SearchUserID =SearchUserID&" And HideName=0"
SqlColumn = SqlColumn & " From dv_Topic Where "&searchboard&" PostUserID="&SearchUserID&" Order By TopicID Desc"
Dvbbs.Stats = Dvbbs.Stats & template.Strings(7)
'回复作者
Case 2
If Not Dvbbs.master Then SearchUserID =SearchUserID&" And signflag<2"
SqlColumn = SqlColumn & " From " & stable & " Where "&searchboard&" ParentID>0 And PostUserID="&SearchUserID&" Order By AnnounceID Desc"
Dvbbs.Stats = Dvbbs.Stats & template.Strings(8)
'主题和回复作者
Case 3
If Not Dvbbs.master Then SearchUserID =SearchUserID&" And signflag<2"
SqlColumn = SqlColumn & " From " & stable & " Where "&searchboard&" PostUserID="&SearchUserID&" Order By AnnounceID Desc"
Dvbbs.Stats = Dvbbs.Stats & template.Strings(9)
End Select
Case 2
SearchUserID="'%"&keyword&"%'"
SqlColumn = SqlColumn &",HideName From dv_Topic Where "&searchboard&" Title like "&SearchUserID&" Order By TopicID Desc"
'Response.write SqlColumn
Dvbbs.Stats = Dvbbs.Stats & template.Strings(10)
Case 3
'最新50贴
If Dvbbs.BoardID > 0 then
SqlColumn = SqlColumn & ",signflag From "&stable&" where BoardID="&Dvbbs.BoardID&" ORDER BY announceID desc"
Else
SqlColumn = SqlColumn &",signflag From "&stable&" ORDER BY announceID desc"
End if
Dvbbs.Stats = template.Strings(12)
Case 4
'用户热贴
If keyword<>"" Then
Set Rs=Dvbbs.Execute("Select UserID From Dv_User Where UserName='"&keyword&"'")
If Rs.Eof And Rs.Bof Then
Set Rs=Nothing
Response.redirect "showerr.asp?ErrCodes=<li>"&template.Strings(21)&"&action=OtherErr"
Else
SearchUserID = Rs(0)
End If
End If
Dim HotTopicDay,HotTopicView,MyHotTopic
If Dvbbs.Forum_Setting(13)<>"0" Then
MyHotTopic = Split(Dvbbs.Forum_Setting(13),"|")
If Ubound(MyHotTopic)=1 Then
HotTopicDay = MyHotTopic(0)
HotTopicView = MyHotTopic(1)
Else
HotTopicDay = 10
HotTopicView = 200
End If
Else
HotTopicDay = 10
HotTopicView = 200
End If
Dvbbs.Stats = Replace(Replace(template.Strings(13),"{$daylimited}",HotTopicDay),"{$viewlimited}",HotTopicView)
If IsSqlDataBase=1 Then
searchday=" datediff(d,DateAndTime,"&SqlNowString&") < "&HotTopicDay&" and "
Else
searchday=" datediff('d',DateAndTime,"&SqlNowString&") < "&HotTopicDay&" and "
End If
If keyword<>"" Then
keyword = " And PostUserID="&SearchUserID
If Not (Dvbbs.master Or Dvbbs.SuperBoardmaster) Then keyword =keyword&" And HideName=0"
End If
SqlColumn = SqlColumn & ",HideName From dv_Topic Where "&searchday&" hits>"&HotTopicView&" "&keyword&" Order By TopicID Desc"
'Response.write SqlColumn
keyword = Dvbbs.CheckStr(Request("keyword"))
Case 5
'我的主题和被回复的主题
If Dvbbs.UserID=0 Then
Dvbbs.AddErrCode(61)
Exit Sub
End If
Dim s
s=request("s")
If s="" Or Not IsNumerIc(s) Then s=1
s=clng(s)
If s=1 Then
SqlColumn=LCase("select BoardID,TopicID as rootid,Title as topic,Expression,PostUserName as UserName,PostUserID,DateAndtime,IsBest,LockTopic,Child,Hits from Dv_Topic where Boardid<>444 And topicid in (select top 200 rootid from "&stable&" where ParentID>0 And PostUserID="&Dvbbs.UserID&" order by AnnounceID desc) order by topicid desc")
Dvbbs.Stats = template.Strings(14)
Else
SqlColumn=LCase("select BoardID,TopicID as rootid ,Title as topic,Expression,PostUserName as UserName,PostUserID,DateAndtime,IsBest,LockTopic,Child,Hits from dv_topic where Boardid<>444 And postUserID="&Dvbbs.UserID&" ORDER BY topicid desc")
Dvbbs.Stats = template.Strings(15)
End If
isMoreInfo = 1
Case 6
'版面或用户精华贴
If keyword<>"" Then
Set Rs=Dvbbs.Execute("Select UserID From Dv_User Where UserName='"&keyword&"'")
If Rs.Eof And Rs.Bof Then
Set Rs=Nothing
Response.redirect "showerr.asp?ErrCodes=<li>"&template.Strings(21)&"&action=OtherErr"
Else
SearchUserID = Rs(0)
End If
End If
If Trim(searchboard)="" Then
If keyword<>"" Then
keyword = " Where PostUserID="&SearchUserID
Else
isWeb = 0
End If
SqlColumn = LCase("select BoardID,RootID,Title as topic ,Expression,PostUserName as username,PostUserID,DateAndtime,PostUserID As IsBest,PostUserID As LockTopic From dv_BestTopic ")& keyword&" Order By ID Desc"
Else
If keyword<>"" Then
keyword = " And PostUserID="&SearchUserID
End If
SqlColumn = LCase("select BoardID,RootID,Title as topic,Expression,PostUserName as username ,PostUserID,DateAndtime,PostUserID As IsBest,PostUserID As LockTopic From dv_BestTopic Where ") & Replace(searchboard,"and","")&" "&keyword&" Order By ID Desc"
End If
keyword = Dvbbs.CheckStr(Request("keyword"))
Dvbbs.Stats = template.Strings(16)
Case 7
'内容或全文索引
If Dvbbs.Forum_Setting(16)<>"0" Then
If IsSqlDataBase Then
If Trim(searchboard)="" Then
SqlColumn = SqlColumn & " From " & stable & " T1 Inner Join ContainsTable("&stable&",body,'" & keyword & "'," & Dvbbs.Forum_Setting(11)*SearchMaxPageList & ") As T2 ON T1.AnnounceID = T2.[KEY] Order By T1.AnnounceID Desc"
Else
SqlColumn = SqlColumn & " From " & stable & " T1 Inner Join ContainsTable("&stable&",body,'" & keyword & "'," & Dvbbs.Forum_Setting(11)*SearchMaxPageList & ") As T2 ON T1.AnnounceID = T2.[KEY] Where "&Replace(Replace(searchboard,"BoardID","T1.BoardID"),"and","")&" Order By T1.AnnounceID Desc"
End If
Else
SqlColumn = SqlColumn & " From " & stable & " Where "&searchboard&" body like '%"&keyword&"%' Order By AnnounceID Desc"
End If
Dvbbs.Stats = Dvbbs.Stats & template.Strings(11)
Else
Response.redirect "showerr.asp?ErrCodes=<li>"&template.Strings(19)&"&action=OtherErr"
End If
Case 8
SqlColumn = "Select Top 1 id as BoardID,id as RootID,Forum_lastUser as topic,Forum_lastUser as Expression,Forum_lastUser as UserName,id as PostUserID,Forum_MaxPostDate as DateAndtime,id as IsBest,id as LockTopic,id as Child,id as Hits From Dv_setup"
Dvbbs.Stats = Dvbbs.Stats & "搜索引擎搜索结果"
Case Else
Dvbbs.AddErrCode(61)
Exit Sub
End Select
Dvbbs.Nav()
If Dvbbs.BoardID=0 then
Dvbbs.Head_var 0,0,template.Strings(0),"query.asp"
Else
Dvbbs.Head_var 1,Application(Dvbbs.CacheName&"_boardlist").documentElement.selectSingleNode("board[@boardid='"&Dvbbs.BoardID&"']/@depth").text,"",""
End If
If IsEmpty(Session("QueryLimited")) Then
Session("QueryLimited") = keyword & "|" & stype & "|" & Now()
Else
If IsWeb <> 2 Then
Dim QueryLimited
QueryLimited = Split(Session("QueryLimited"),"|")
If Ubound(QueryLimited) = 2 Then
If Cstr(Trim(QueryLimited(0))) = Cstr(keyword) And Cstr(Trim(QueryLimited(1))) = Cstr(stype) Then
Session("QueryLimited") = keyword & "|" & stype & "|" & Now()
Else
If DateDiff("s",QueryLimited(2),Now()) < Clng(Dvbbs.Forum_Setting(3)) And Not(Dvbbs.Master Or Dvbbs.BoardMaster Or Dvbbs.SuperBoardMaster) Then
Response.redirect "showerr.asp?ErrCodes=<li>"&Replace(template.Strings(20),"{$timelimited}",Dvbbs.Forum_Setting(3))&"&action=OtherErr"
Else
Session("QueryLimited") = keyword & "|" & stype & "|" & Now()
End If
End If
Else
Session("QueryLimited") = keyword & "|" & stype & "|" & Now()
End If
End If
End If
End Sub
Sub SearchResult()
Dim Rs
Dim Record_Count,n,sql
SQLQueryStr()
If Dvbbs.ErrCodes<>"" Then Exit Sub
If Not IsObject(Conn) Then ConnectionDatabase
Dvbbs.SqlQueryNum = Dvbbs.SqlQueryNum + 1
Set Rs=server.createobject("adodb.recordset")
'Response.Write SqlColumn
Rs.Open SqlColumn,Conn,1,1
If Err Then
Dvbbs.AddErrCode(61)
Exit Sub
Else
If Not Rs.Eof Then
Record_Count = Rs.RecordCount
If Record_Count Mod Cint(Dvbbs.Forum_Setting(11))=0 Then
n = Record_Count \ Cint(Dvbbs.Forum_Setting(11))
Else
n = Record_Count \ Cint(Dvbbs.Forum_Setting(11))+1
End If
Rs.MoveFirst
If page > n Then page = n
If page < 1 Then page = 1
If page > 1 Then
Rs.Move (page-1) * Clng(Dvbbs.Forum_Setting(11))
End if
Sql = Rs.GetRows(Clng(Dvbbs.Forum_Setting(11)))
Set XMLDOM=QueryArrayToxml(sql,rs,"","")
Else
Dvbbs.AddErrCode(32)
Exit Sub
End If
End If
Rs.Close:Set Rs=Nothing
Dim SearchStr
SearchStr = "stype="& Request("stype") &"&pSearch="& Request("pSearch")&"&nSearch=" & Request("nSearch") &"&boardid="&Request("boardid")&"&SearchDate="& Request("SearchDate")&"&keyword=" &Server.urlencode(Request("keyword"))&"&s="&Request("s")&"&isWeb="&isWeb&"&stable="&stable
XMLDOM.documentElement.attributes.setNamedItem(XMLDOM.createNode(2,"pagecount","")).text=Record_Count
XMLDOM.documentElement.attributes.setNamedItem(XMLDOM.createNode(2,"loginhidden","")).text=Dvbbs.GroupSetting(37)
XMLDOM.documentElement.attributes.setNamedItem(XMLDOM.createNode(2,"page","")).text=page
XMLDOM.documentElement.attributes.setNamedItem(XMLDOM.createNode(2,"action","")).text=action
XMLDOM.documentElement.attributes.setNamedItem(XMLDOM.createNode(2,"pagesize","")).text=Dvbbs.Forum_Setting(11)
XMLDOM.documentElement.attributes.setNamedItem(XMLDOM.createNode(2,"PageStr","")).text=SearchStr
XMLDOM.documentElement.attributes.setNamedItem(XMLDOM.createNode(2,"boardid","")).text=Dvbbs.boardid
XMLDOM.documentElement.attributes.setNamedItem(XMLDOM.createNode(2,"keyword","")).text=KeyWord
XMLDOM.documentElement.attributes.setNamedItem(XMLDOM.createNode(2,"isWeb","")).text=isWeb
XMLDOM.documentElement.attributes.setNamedItem(XMLDOM.createNode(2,"sType","")).text=sType
XMLDOM.documentElement.attributes.setNamedItem(XMLDOM.createNode(2,"isMoreInfo","")).text=isMoreInfo
XMLDOM.documentElement.attributes.setNamedItem(XMLDOM.createNode(2,"SelSearch","")).text=SelSearch
If Dvbbs.Master Or Dvbbs.SuperBoardMaster Then
XMLDOM.documentElement.attributes.setNamedItem(XMLDOM.createNode(2,"Master","")).text=1
Else
XMLDOM.documentElement.attributes.setNamedItem(XMLDOM.createNode(2,"Master","")).text=0
End If
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -