⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 search.asp

📁 很好的一个论坛原代码
💻 ASP
字号:
<!--#INCLUDE FILE="inc/db_inc.asp"-->
<!--#INCLUDE FILE="inc/char_inc.asp"-->
<!--#INCLUDE FILE="header.asp"-->
<%
dim ip, strip, killip
dim StrSql, toptext, rs, rs2, StrHtml, StrHtml2, error, err

StrHtml = loadtemplate("htmltop")
StrHtml = Replace(StrHtml, "{pagetitle}", loadtemplate("searchtitle"))
StrHtml = Replace(StrHtml, "{forumtitle}", boardtitle)
response.write StrHtml
StrHtml = loadtemplate("pagetitle")
if request.cookies("sf")("username") = "" then
	toptext = loadtemplate("toptextguest")
else
	toptext = loadtemplate("toptextuser")
end if
toptext = toptext & loadtemplate("toptext")
StrHtml = Replace(StrHtml, "{top_text}", toptext)
StrHtml = Replace(StrHtml, "{username}", request.cookies("sf")("username"))
response.write StrHtml

' 论坛关闭
StrSql = "select * from sf_setup"
Set rs2 = Conn.Execute(StrSql)
if rs2("forumclose") = 1 then
StrHtml = loadtemplate("error")
StrHtml = Replace(StrHtml, "{error_text}", rs2("forumclosehint"))
response.write StrHtml
response.end
end if	

' 禁止IP访问
if rs2("killip") = 1 then
	userip = cstr(request.ServerVariables("REMOTE_ADDR"))
	killiplist = rs2("killiplist")
	if killiplist <> "" and userip <> "" then
		killip = split(killiplist, "|")
		struserip = split(userip, ".")
		i = 0
		do until i > ubound(killip)
			strkillip = split(killip(i), ".")
			bolkill = true
			if (struserip(0) <> strkillip(0)) and (strkillip(0) <> "*") then bolkill = false
			if (struserip(1) <> strkillip(1)) and (strkillip(1) <> "*") then bolkill = false
			if (struserip(2) <> strkillip(2)) and (strkillip(2) <> "*") then bolkill = false
			if (struserip(3) <> strkillip(3)) and (strkillip(3) <> "*") then bolkill = false
			if bolkill then
				StrHtml = loadtemplate("error")
				StrHtml = Replace(StrHtml, "{error_text}", rs2("killiphint"))
				response.write StrHtml
				Response.End
			end if
			i = i + 1
		loop
	end if
end if

StrHtml = loadtemplate("pagepath")
StrHtml = Replace(StrHtml, "{path_text}", "<a href=""index.asp"">" & boardtitle & "</a> &raquo; " & loadtemplate("searchtitle"))
response.write StrHtml

userid = -1

' 如果未注册或未登录...
if request.cookies("sf")("username") = "" or request.cookies("sf")("password") = "" then
	StrHtml = loadtemplate("error")
	StrHtml = Replace(StrHtml, "{error_text}", loadtemplate("err_unregistered"))
	response.write StrHtml
	response.end		
end if
' 检测密码...
StrSql = "select password, userid from sf_user where username = '" & ChkSql(request.cookies("sf")("username")) & "'"
Set rs2 = Conn.Execute(StrSql)
err = false
if rs2.bof or rs2.eof then
	err = true
else
	if request.cookies("sf")("password") <> rs2("password") then
		err = true
	else
		userid = rs2("userid")
		StrSql = "update sf_user set lastactivity = '" & now() & "' where userid = " & userid
		Conn.Execute(StrSql)
	end if
end if
if err then
	StrHtml = loadtemplate("error")
	StrHtml = Replace(StrHtml, "{error_text}", loadtemplate("err_chkpassword"))
	response.write StrHtml
	response.end
end if

step = ChkSql(request("step"))
select case step
	case "2"
		error = ""
		if request("key") = "" and request("author") = "" then error = error & loadtemplate("err_searchkeyword")
		if error <> "" then
			StrHtml = loadtemplate("error")
			StrHtml = Replace(StrHtml, "{error_text}", error)
			response.write StrHtml
			response.end
		end if
		if request("join") = "1" then
			keyjoin = " and "
		else
			keyjoin = " or "
		end if
		if request("date") = "" then
			searchdate = 0
		else
			searchdate = ChkSql(request("date"))
			if not IsNumeric(searchdate) then searchdate = 0
			searchdate = clng(searchdate)
		end if
		if request("forumid") = "" then
			forumid = -1
		else
			forumid = ChkSql(request("forumid"))
			if not IsNumeric(forumid) then forumid = -1
			forumid = clng(forumid)
		end if
		if request("author") = "" then
			author = ""
		else
			author = ChkSql(request("author"))
			StrSql2 = "select userid from sf_user where username = '" & author & "'"
   			Set rs2= Conn.Execute(StrSql2)
   			if rs2.bof or rs2.eof then
    				error = error & loadtemplate("err_usernotexist")
			else
				author = " sf_post.userid = " & rs2("userid")
			end if
		end if
		if request("type") = "1" then
			keytype = 1
		else
			keytype = 2
		end if
		if request("order") = "1" then
			order = 1
		else
			order = 2
		end if
		StrSql = "select sf_forum.title as forumtitle, sf_forum.forumid, sf_post.postid, sf_post.title as posttitle, sf_post.userid as postuserid, sf_post.username as postusername, sf_post.dateline as postdateline from (sf_forum left join sf_thread on sf_forum.forumid = sf_thread.forumid) left join sf_post on (sf_thread.threadid = sf_post.threadid) where "
		StrSql2 = ""
		if forumid > 0 then StrSql2 = StrSql2 & "sf_forum.forumid = " & forumid
		if searchdate <> 0 then
			if forumid > 0 then StrSql2 = StrSql2 & " and "
			StrSql2 = StrSql2 & " (sf_thread.dateline > #" & dateadd("d", -1 * searchdate, date()) & " 00:00:00" & "#) "
		end if
		if request("key") <> "" then
		if StrSql2 <> "" then StrSql2 = StrSql2 & "and "
		' 得到关键字
		key = ChkSql(request("key"))
		keywords = split(key, " ")
		keycnt = ubound(keywords)
		if keycnt > 0 then StrSql2 = StrSql2 & "("
		for each word in keywords
			' 关键字为标题
			if keytype = 1 then
				StrSql2 =StrSql2 & "sf_post.title like '%" & word & "%'"
			end if
			' 关键字为内容
			if keytype = 2 then
				StrSql2 =StrSql2 & "sf_post.title like '%" & word & "%' or sf_post.pagetext like '%" & word & "%'"
			end if
			if cnt < keycnt then StrSql2 = StrSql2 & keyjoin
			cnt = cnt + 1
		next
		if keycnt > 0 then StrSql2 = StrSql2 & ")"
		end if
		' 如果where子句不为空
		if StrSql2 <> "" then
			StrSql = StrSql & StrSql2
			if author <> "" then StrSql = StrSql & " and "
		end if
		StrSql = StrSql & author
		StrSql =StrSql & " order by sf_thread.threadid DESC, sf_post.postid ASC"
		if error <> "" then
			StrHtml = loadtemplate("error")
			StrHtml = Replace(StrHtml, "{error_text}", error)
			response.write StrHtml
			response.end
		end if
		Set rs2 = server.CreateObject("ADODB.RecordSet")
		rs2.open StrSql, Conn, 1, 1
		StrHtml = loadtemplate("hint_searchresult")
		if rs2.eof or rs2.bof then
			StrHtml = Replace(StrHtml, "{result_num}", "0")
			response.write StrHtml
		else
			StrHtml = Replace(StrHtml, "{result_num}", rs2.RecordCount)
			response.write StrHtml
			StrHtml = loadtemplate("searchstep2top")
			response.write StrHtml
			' 获得当前页数
			page = request("page")
			if page = "" then
				page = 1
			else
				if not IsNumeric(page) then
					page = 1
				else
					page = clng(page)
				end if
			end if
			i = 1
			pagecount = 1
			StrHtml = loadtemplate("searchstep2")
			if not (rs2.bof or rs2.eof) then
				rs2.PageSize = forumrow
				if page > rs2.PageCount then page = rs2.PageCount
				rs2.AbsolutePage = page
				pagecount = rs2.PageCount
				id = 0
				do until rs2.eof or i > rs2.PageSize
					StrHtml2 = StrHtml
					StrHtml2 = Replace(StrHtml2, "{subject}", "<a href=""showthread.asp?postid=" & rs2("postid") & """>" & rs2("posttitle") & "</a>")
					StrHtml2 = Replace(StrHtml2, "{username}", "<a href=""showuser.asp?userid=" & rs2("postuserid") & """>" & rs2("postusername") & "</a>")
					StrHtml2 = Replace(StrHtml2, "{forum}", "<a href=""showforum.asp?forumid=" & rs2("forumid") & """>" & rs2("forumtitle") & "</a>")
					StrHtml2 = Replace(StrHtml2, "{postdate}", rs2("postdateline"))
					response.write StrHtml2
					rs2.MoveNext
					i = i + 1
				loop
			end if
			StrHtml = loadtemplate("searchstep2bottom")
			urlstr = ""
			if request("key") <> "" then urlstr = urlstr & "&key=" & request("key")
			if request("join") <> "" then urlstr = urlstr & "&join=" & request("join")
			if request("type") <> "" then urlstr = urlstr & "&type=" & request("type")
			if request("author") <> "" then urlstr = urlstr & "&author=" & request("author")
			if request("forumid") <> "" then urlstr = urlstr & "&forumid=" & request("forumid")
			if request("date") <> "" then urlstr = urlstr & "&date=" & request("date")
			if request("order") <> "" then urlstr = urlstr & "&order=" & request("order")
			urlstr = urlstr & "&step=2"
			StrHtml2 = ""
			beginpage = 1
			endpage = pagecount
			if pagecount >= 9 then
				if page >= 5 then
					beginpage = page - 4
					if page <= (pagecount - 4) then
						endpage = page + 4
					else
						endpage = pagecount
						beginpage = pagecount - 4
					end if
				else
					beginpage=1
					endpage=9
				end if
			end if
					StrHtml2 = StrHtml2 & "&nbsp;<a href=""search.asp?page=1" & urlstr &""">&lt;&lt;</a>"
			for i=beginpage to endpage
				if i = page then
					StrHtml2 = StrHtml2 & "&nbsp;<b>[" & i & "]</b>&nbsp;"
				else
					StrHtml2 = StrHtml2 & "<a href=""search.asp?page=" & i & urlstr & """>&nbsp;[" & i & "]&nbsp;</a>"
				end if
			next
					StrHtml2 = StrHtml2 & "...&nbsp;<a href=""search.asp?page=" & pagecount & urlstr & """> ["&pagecount&"] &gt;&gt;</a>"
			StrHtml = Replace(StrHtml, "{page_text}", StrHtml2)
			response.write StrHtml
			response.write sfcopyright
		end if
	case else
		StrHtml = loadtemplate("searchstep1")

		StrHtml2 = "<select name=""forumid"">" & chr(10)
		StrHtml2 = StrHtml2 & "<option value=""-1"">&raquo;"& boardtitle &"</option>" & chr(10)
		StrSql = "select sf_forum.forumid, sf_forum.title from sf_forum left join sf_cate on (sf_forum.cateid = sf_cate.cateid) where sf_cate.displayorder>0 and sf_forum.displayorder>0 order by sf_cate.displayorder DESC, sf_cate.cateid ASC, sf_forum.displayorder DESC, sf_forum.forumid ASC"
		Set rs2 = Conn.Execute(StrSql)
		if not (rs2.bof or rs2.eof) then
			do until rs2.eof
				StrHtml2 = StrHtml2 & "<option value=""" & rs2("forumid") & """>&nbsp; &nbsp;" & rs2("title") & "</option>" & chr(10)
				rs2.MoveNext
			loop
		end if
		StrHtml2 = StrHtml2 & "</select>" & chr(10)
		StrHtml = Replace(StrHtml, "{forum_select}", StrHtml2)
		response.write StrHtml
		response.write sfcopyright
end select
response.write loadtemplate("htmlbottom")
response.end
Conn.Close
Set Conn = nothing
Set rs = nothing
Set rs2 = nothing
set ip = nothing
set strip = nothing
set killip = nothing
%>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -