📄 query.asp
字号:
<!--#include file="conn.asp"-->
<!-- #include file="inc/const.asp" -->
<!-- #include file="inc/dv_clsother.asp" -->
<%
Dvbbs.LoadTemplates("query")
If request("stype")="" Then
Dvbbs.stats=template.Strings(0)
Dvbbs.nav()
If DVbbs.BoardID=0 then
Dvbbs.Head_var 0,0,template.Strings(0),"query.asp"
Else
Dvbbs.Head_var 1,Dvbbs.Board_Data(4,0),"",""
End If
If Dvbbs.boardid>0 Then GetBoardPermission
If Cint(Dvbbs.GroupSetting(14))=0 Then Dvbbs.AddErrCode(60)
Dvbbs.ShowErr()
main()
Else
Dvbbs.Stats=template.Strings(1)
Dim stype,pSearch,nSearch,keyword,stable,page,searchday,searchboard,page_count,Pcount
Dim totalrec,endpage,ordername,hidboardid,FobBoardID
Dim SqlColumn
Dim SearchMaxPageList
If Dvbbs.Forum_Setting(12)<>"0" Then
If IsNumeric(Dvbbs.Forum_Setting(12)) Then
If Clng(Dvbbs.Forum_Setting(12)) Mod Cint(Dvbbs.Forum_Setting(11))=0 Then
SearchMaxPageList = Clng(Dvbbs.Forum_Setting(12)) \ Cint(Dvbbs.Forum_Setting(11))
Else
SearchMaxPageList = Clng(Dvbbs.Forum_Setting(12)) \ Cint(Dvbbs.Forum_Setting(11))+1
End If
Else
SearchMaxPageList = 50
End If
Else
SearchMaxPageList = 50
End If
CheckRequestInfo()
Dvbbs.ShowErr()
SearchResult()
Dvbbs.ShowErr()
End If
Dvbbs.ActiveOnline
Dvbbs.footer()
Sub main()
Dim TempStr,i
TempStr = template.html(0)
Dim Forum_Boards,Board_Data,BoardJumpList,ii,Depth
Forum_Boards=Split(Dvbbs.CacheData(27,0),",")
For i=0 To Ubound(Forum_Boards)
Dvbbs.Name="BoardInfo_" & Forum_Boards(i)
If Dvbbs.ObjIsEmpty() Then Dvbbs.ReloadBoardInfo(Forum_Boards(i))
Board_Data=Dvbbs.Value
BoardJumpList = BoardJumpList & "<option value="""&Forum_Boards(i)&""" "
If Clng(Forum_Boards(i))=Dvbbs.BoardID Then BoardJumpList = BoardJumpList & "selected"
BoardJumpList = BoardJumpList & ">"
Depth=Board_Data(4,0)
Select Case Depth
Case 0
BoardJumpList = BoardJumpList & "╋"
Case 1
BoardJumpList = BoardJumpList & " ├"
End Select
If Depth>1 Then
For ii=2 To Depth
BoardJumpList = BoardJumpList & " │"
Next
BoardJumpList = BoardJumpList & " ├"
End If
BoardJumpList = BoardJumpList & Board_Data(1,0)&"</option>"
Next
Board_Data=Null
Forum_Boards=Null
TempStr=Replace(TempStr,"{$BoardJumpList}",BoardJumpList)
Dvbbs.name="Tablelist"
If Dvbbs.ObjIsEmpty() Then
Dim Rs,Tablelist
Set Rs=Dvbbs.Execute("select * from Dv_TableList")
Do while Not Rs.Eof
Tablelist = Tablelist & "<Option value="&Rs("tablename")&">"&Rs("tabletype")&"</Option>"
Rs.MoveNext
Loop
Set Rs=Nothing
Dvbbs.value=Tablelist
End If
TempStr=Replace(TempStr,"{$tablelist}",Dvbbs.value)
If Dvbbs.Forum_Setting(16)<>"0" Then
TempStr=Replace(TempStr,"{$searchbody}",template.html(5))
Else
TempStr=Replace(TempStr,"{$searchbody}","")
End If
If Dvbbs.Forum_Setting(4)<>"0" Then
Dim keywordlimited
keywordlimited = Split(Dvbbs.Forum_Setting(4),"|")
If Ubound(keywordlimited)=1 Then
TempStr=Replace(TempStr,"{$minlength}",keywordlimited(0))
TempStr=Replace(TempStr,"{$maxlength}",keywordlimited(1))
Else
TempStr=Replace(TempStr,"{$minlength}",4)
TempStr=Replace(TempStr,"{$maxlength}",20)
End If
Else
TempStr=Replace(TempStr,"{$minlength}",4)
TempStr=Replace(TempStr,"{$maxlength}",20)
End If
If Dvbbs.Forum_Setting(3)<>"0" Then
TempStr=Replace(TempStr,"{$timelimited}",Dvbbs.Forum_Setting(3))
Else
TempStr=Replace(TempStr,"{$timelimited}",120)
End If
Response.Write TempStr
End Sub
Function CheckRequestInfo()
Dim i
stype=Trim(request("stype"))
pSearch=Trim(request("pSearch"))
nSearch=Trim(request("nSearch"))
keyword=Trim(Dvbbs.checkStr(request("keyword")))
stable=Replace(Request("stable"),"'","")
If not IsNumeric(pSearch) Then pSearch=1
If not IsNumeric(nSearch) Then nSearch=1
If stable="" or len(stable)>20 Then stable=Dvbbs.NowUseBbs
If request("page")<>"" and IsNumeric(request("page")) Then
page=Clng(request("page"))
Else
page=0
End If
If Cint(Dvbbs.GroupSetting(14))=0 Then Dvbbs.AddErrCode(60)
If Len(stable)>8 Then Dvbbs.AddErrCode(35)
if stype<3 then
If keyword="" Then Dvbbs.AddErrCode(61)
If keyword<>"" Then
Dim Foundmykeyword
Foundmykeyword = False
If Dvbbs.Forum_Setting(9)<>"0" Then
Dim mykeyword
mykeyword = Split(Dvbbs.Forum_Setting(9),"|")
For i = 0 To Ubound(mykeyword)
If Instr(Lcase(keyword),Lcase(mykeyword(i)))>0 Then
Foundmykeyword = True
Exit For
End If
Next
End If
If Dvbbs.Forum_Setting(4)<>"0" And Not Foundmykeyword And Not (Dvbbs.Master Or Dvbbs.BoardMaster Or Dvbbs.SuperBoardMaster) Then
Dim keywordlimited
keywordlimited = Split(Dvbbs.Forum_Setting(4),"|")
If Ubound(keywordlimited)=1 Then
If IsNumeric(keywordlimited(0)) Then
If Len(keyword)<Clng(keywordlimited(0)) Then Response.redirect "showerr.asp?ErrCodes=<li>"&Replace(template.Strings(17),"{$minlength}",keywordlimited(0))&"&action=OtherErr"
End If
If IsNumeric(keywordlimited(1)) Then
If Len(keyword)>Clng(keywordlimited(1)) Then Response.redirect "showerr.asp?ErrCodes=<li>"&Replace(template.Strings(18),"{$maxlength}",keywordlimited(1))&"&action=OtherErr"
End If
End If
End If
End If
'搜索多少天内帖子
If Lcase(request("SearchDate"))="all" Then
searchday=" "
Else
If request("SearchDate")<>"" And IsNumeric(Request("SearchDate")) Then
If IsSqlDataBase=1 Then
searchday=" datediff(d,DateAndTime,"&SqlNowString&") < "&Dvbbs.checkStr(request("SearchDate"))&" and "
Else
searchday=" datediff('d',DateAndTime,"&SqlNowString&") < "&Dvbbs.checkStr(request("SearchDate"))&" and "
End If
Else
Dvbbs.AddErrCode(62)
End If
End If
End If
searchboard = " "
If Dvbbs.BoardID>0 Then searchboard=" BoardID="&Dvbbs.BoardID&" and "
'判断隐含板块
Dim Forum_Boards,Board_Data
Forum_Boards=Split(Dvbbs.cachedata(27,0),",")
For i=0 To Ubound(Forum_Boards)
Dvbbs.Name="BoardInfo_" & Forum_Boards(i)
If Dvbbs.ObjIsEmpty() Then Dvbbs.ReloadBoardInfo(Forum_Boards(i))
Board_Data=Dvbbs.Value
If Split(Board_Data(16,0),",")(1)="1" Then
If hidboardid="" Then
hidboardid=Forum_Boards(i)
Else
hidboardid=hidboardid & "," & Forum_Boards(i)
End If
End If
If Split(Board_Data(16,0),",")(2)="1" Then
If FobBoardID="" Then
FobBoardID=Forum_Boards(i)
Else
FobBoardID=FobBoardID & "," & Forum_Boards(i)
End If
End If
Next
Board_Data=Null
Forum_Boards=Null
'If Not (Dvbbs.GroupSetting(37)="1" and hidboardid="") Then searchboard=searchboard & " Not BoardID in ("&hidboardid&") and "
Dim FobWords
'搜索过滤字
FobWords = Array(91,92,304,305,430,431,437,438,12460,12461,12462,12463,12464,12465,12466,12467,12468,12469,12470,12471,12472,12473,12474,12475,12476,12477,12478,12479,12480,12481,12482,12483,12485,12486,12487,12488,12489,12490,12496,12497,12498,12499,12500,12501,12502,12503,12504,12505,12506,12507,12508,12509,12510,12532,12533,65339,65340)
For i = 1 to Ubound(FobWords,1)
If InStr(keyword,ChrW(FobWords(i))) > 0 Then
Dvbbs.AddErrCode(61)
Exit For
End If
Next
FobWords = Array("~","!","@","#","$","%","^","&","*","(",")","_","+","=","`","[","]","{","}",";",":","""","'",",","<",">",".","/","\","|","?","_","about","1","2","3","4","5","6","7","8","9","0","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","after","all","also","an","and","another","any","are","as","at","be","because","been","before","being","between","both","but","by","came","can","come","could","did","do","each","for","from","get","got","had","has","have","he","her","here","him","himself","his","how","if","in","into","is","it","like","make","many","me","might","more","most","much","must","my","never","now","of","on","only","or","other","our","out","over","said","same","see","should","since","some","still","such","take","than","that","the","their","them","then","there","these","they","this","those","through","to","too","under","up","very","was","way","we","well","were","what","where","which","while","who","with","would","you","your","的","一","不","在","人","有","是","为","以","于","上","他","而","后","之","来","及","了","因","下","可","到","由","这","与","也","此","但","并","个","其","已","无","小","我","们","起","最","再","今","去","好","只","又","或","很","亦","某","把","那","你","乃","它")
keyword = Left(keyword,100)
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
End Function
Function 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 & " BoardID,RootID,Topic,Expression,UserName,PostUserID,DateAndTime,IsBest,LockTopic,Body,AnnounceID From "
ElseIf stype=2 And pSearch=2 Then
If IsSqlDataBase Then
SqlColumn = SqlColumn & " T1.BoardID,T1.RootID,T1.Topic,T1.Expression,T1.UserName,T1.PostUserID,T1.DateAndTime,T1.IsBest,T1.LockTopic,T1.Body,T1.AnnounceID From "
Else
SqlColumn = SqlColumn & " BoardID,RootID,Topic,Expression,UserName,PostUserID,DateAndTime,IsBest,LockTopic,Body,AnnounceID From "
End If
ElseIf stype=3 Then
' SqlColumn = "Select Top 50 BoardID,TopicID,Title,Expression,PostUserName,PostUserID,DateAndtime,IsBest,LockTopic From "
SqlColumn = "Select Top 50 BoardID,rootid,topic,Expression,username,postuserid,dateandtime,IsBest,LockTopic,Body,Announceid from "
Else
SqlColumn = SqlColumn & " BoardID,TopicID,Title,Expression,PostUserName,PostUserID,DateAndtime,IsBest,LockTopic From "
End If
'Dvbbs.Stats = template.Strings(2)
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
SqlColumn = SqlColumn & " dv_Topic Where "&searchboard&" "&searchday&" PostUserID="&SearchUserID&" Order By TopicID Desc"
Dvbbs.Stats = Dvbbs.Stats & template.Strings(7)
'回复作者
Case 2
SqlColumn = SqlColumn & stable & " Where "&searchboard&" "&searchday&" ParentID>0 And PostUserID="&SearchUserID&" Order By AnnounceID Desc"
Dvbbs.Stats = Dvbbs.Stats & template.Strings(8)
'主题和回复作者
Case 3
SqlColumn = SqlColumn & stable & " Where "&searchboard&" "&searchday&" PostUserID="&SearchUserID&" Order By AnnounceID Desc"
Dvbbs.Stats = Dvbbs.Stats & template.Strings(9)
End Select
Case 2
Select Case pSearch
'标题
Case 1
SqlColumn = SqlColumn & " dv_Topic Where "&searchboard&" "&searchday&" Title like '%"&keyword&"%' Order By TopicID Desc"
Dvbbs.Stats = Dvbbs.Stats & template.Strings(10)
'内容,SQL全文索引
Case 2
If Dvbbs.Forum_Setting(16)<>"0" Then
If IsSqlDataBase Then
If Trim(searchboard)="" And Trim(searchday)="" Then
SqlColumn = SqlColumn & 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"
ElseIf Trim(searchboard)="" Then
SqlColumn = SqlColumn & stable & " T1 Inner Join ContainsTable("&stable&",body,'" & keyword & "'," & Dvbbs.Forum_Setting(11)*SearchMaxPageList & ") As T2 ON T1.AnnounceID = T2.[KEY] Where "&Replace(Replace(searchday,"and",""),"DateAndTime","T1.DateAndTime")&" Order By T1.AnnounceID Desc"
ElseIf Trim(searchday)="" Then
SqlColumn = SqlColumn & stable & " T1 Inner Join ContainsTable("&stable&",body,'" & keyword & "'," & Dvbbs.Forum_Setting(11)*SearchMaxPageList & ") As T2 ON T1.AnnounceID = T2.[KEY] Where "&Replace(Replace(searchboard,"and",""),"BoardID","T1.BoardID")&" Order By T1.AnnounceID Desc"
Else
SqlColumn = SqlColumn & stable & " T1 Inner Join ContainsTable("&stable&",body,'" & keyword & "'," & Dvbbs.Forum_Setting(11)*SearchMaxPageList & ") As T2 ON T1.AnnounceID = T2.[KEY] Where "&Replace(searchboard,"BoardID","T1.BoardID")&" "&Replace(Replace(searchday,"and",""),"DateAndTime","T1.DateAndTime")&" Order By T1.AnnounceID Desc"
End If
Else
SqlColumn = SqlColumn & stable & " Where "&searchboard&" "&searchday&" 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
End Select
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -