📄 search.cgi
字号:
</ul><center><a href=$thisprog?action=display><b>>> 停 止 搜 索 <<</b></a></center>
</tr></td></table></td></tr></table>
<meta http-equiv="refresh" content="1; url=$relocurl">
~;
}
else {
$filetoopen = "$lbdir" . "data/allforums.cgi";
&winlock($filetoopen) if ($OS_USED eq "Nt");
open(FILE, "$filetoopen");
flock(FILE, 1) if ($OS_USED eq "Unix");
@forums = <FILE>;
close(FILE);
&winunlock($filetoopen) if ($OS_USED eq "Nt");
$a=0;
foreach $forum (@forums) { #start foreach @forums
$a = sprintf("%09d",$a);
chomp $forum;
($forumid, $category, $categoryplace, $forumname, $forumdescription, $forummoderator ,$htmlstate ,$idmbcodestate ,$privateforum, $startnewthreads ,$lastposter ,$lastposttime, $threads, $posts, $forumgraphic, $ratings, $misc,$forumpass,$hiddenforum,$indexforum,$teamlogo,$teamurl,$fgwidth,$fgheight, $miscadd3, $miscadd4, $miscad5) = split(/\t/,$forum);
next if (($forumid !~ /^[0-9]+$/)||($categoryplace !~ /^[0-9]+$/));
$categoryplace = sprintf("%09d",$categoryplace);
if ((($privateforum eq "yes") && ($userregistered ne "no") && ($allowedentry{$forumid} eq "yes"))||($membercode eq "ad")||($membercode eq 'smo')) {
$rearrange = ("$categoryplace\t$a\t$category\t$forumname\t$forumdescription\t$forumid\t$forumgraphic\t$ratings\t$misc\t$forumpass\t$hiddenforum\t$indexforum\t$teamlogo\t$teamurl\t$fgwidth\t$fgheight\t$miscadd3\t$miscadd4\t$miscad5\t");
}
elsif ($privateforum ne "yes") {
$rearrange = ("$categoryplace\t$a\t$category\t$forumname\t$forumdescription\t$forumid\t$forumgraphic\t$ratings\t$misc\t$forumpass\t$hiddenforum\t$indexforum\t$teamlogo\t$teamurl\t$fgwidth\t$fgheight\t$miscadd3\t$miscadd4\t$miscad5\t");
}
push (@rearrangedforums, $rearrange);
$a++;
} # end foreach (@forums)
@rearrangedforums = sort (@rearrangedforums);
$count=1;
foreach (@rearrangedforums) {
chomp $_;
(my $categoryplace,my $a, my $category, my $forumname, my $forumdescription, my $forumid, my $forumgraphic, my $ratings, my $misc, my $forumpass, my $hiddenforum, my $indexforum,my $teamlogo,my $teamurl,my $fgwidth,my $fgheight, my $miscadd3, my $miscadd4, my $miscad5) = split(/\t/,$_);
$categoryplace = sprintf("%01d",$categoryplace);
$child=($category =~/^childforum-[0-9]+/)?" |":"";
if ($categoryplace ne $lastcategoryplace) {
$jumphtml .= "<option value=\"\" style=background-color:$titlecolor>╋$category\n</option>";
$jumphtml2 .= qq(<input type="radio" name="CAT_TO_SEARCH" value="cat$categoryplace">$category<BR>);
$jumphtml .= "<option value=\"$forumid\">$child |- $forumname\n</option>";
}
else {
$jumphtml .= "<option value=\"$forumid\">$child |- $forumname\n</option>";
}
$lastcategoryplace = $categoryplace;
}
if ($forum) { $jumphtml =~ s/\ value="$forum"/\ value="$forum" selected/isg; }
$currenttime = time;
$output .= qq~<tr><td bgcolor="$miscbacktwo" valign=middle colspan=2 align="center">
<p><FORM action="$thisprog" method="post" name="Search">
<input type=hidden name="action" value="startsearch">
<input type=hidden name="CUR_TIME" value="$currenttime">
<font face="$font" color=$fontcolormisc>$ssboom<b>请输入要搜索的关键字</b></font></td></tr>
<tr><td bgcolor=$miscbackone width colspan=2 align="center" valign="middle"><font face="$font" color=$fontcolormisc>
(多个关键字之间使用逗号 ',' 分隔,关键字中不要使用 # \$ < > ( ) { } & ; | * ? 这些特殊符号)</font><br><br>
<input type=text size=40 name="SEARCH_STRING"></td></tr>
<tr><td bgcolor="$miscbacktwo" valign=middle colspan=2 align=center><font face="$font" color=$fontcolormisc><b>搜索选项</b></font></td></tr>
<tr><td bgcolor="$miscbackone" align="right" valign="middle"><font face="$font" color=$fontcolormisc>
<b>作者搜索</b></font> <input name="TYPE_OF_SEARCH" type="radio" class=1 value="username_search"></td>
<td bgcolor="$miscbackone" align="left" valign="middle">
<select name="NAME_SEARCH">
<option value="topictitle_search">搜索主题作者
<option value="post_search">搜索回复作者
<option value="both_search">两者都搜索
</select>
</td></tr>
<tr><td bgcolor="$miscbackone" align="right" valign="middle"><font face="$font" color=$fontcolormisc>
<b>关键字搜索</b></font> <input name="TYPE_OF_SEARCH" type="radio" class=1 value="keyword_search" checked></td>
<td bgcolor="$miscbackone" align="left" valign="middle">
<select name="POST_SEARCH">
<option value="topictitle_search">在主题中搜索关键字
<option value="post_search">在贴子内容中搜索关键字
<option value="both_search">在主题和贴子内容中搜索关键字
</select>
</td></tr>
<tr><td bgcolor="$miscbackone" align="right" valign="middle"><font face="$font" color=$fontcolormisc>
<b>帖子类型</b></font></td>
<td bgcolor="$miscbackone" align="left" valign="middle">
<select name="JH_SEARCH"><option value="no">所有帖子<option value="jinghua">精华帖子<option value = "poll">投票帖子<option value="lock">锁定帖子<option value="hot">热门帖子<option value="top">置顶帖子</select>
</td></tr>
<tr><td bgcolor="$miscbackone" align="right" valign="middle"><font face="$font" color=$fontcolormisc>
<b>搜寻日期</b></font></td>
<td bgcolor="$miscbackone" align="left" valign="middle">自
<select name="SEARCH_DAY"><option value="any" selected>任何日期<option value="1"> 1 天<option value ="7"> 1 周<option value = "14"> 2 周<option value="30"> 1 个月<option value="90"> 3 个月<option value="180"> 6 个月<option value="365"> 1 年</select>
<select name="SEARCH_TIME"><option value="b" selected>之前<option value="f">之后</select>
</td></tr>
<tr><td bgcolor="$miscbackone" align="right" valign="middle"><font face="$font" color=$fontcolormisc>
<b>请选择要搜索的论坛或分类</b></font></td>
<td bgcolor="$miscbackone" align="left" valign="middle">
<input type="radio" name="CAT_TO_SEARCH" value="all"$Seleced[0]>所有论坛<BR>$jumphtml2
</td></tr>
<tr><td bgcolor="$miscbackone" align="right" valign="middle"><font face="$font" color=$fontcolormisc>
<input type="radio" name="CAT_TO_SEARCH" value="select"$Seleced[1] checked><b>自选论坛</b><br>按 Ctrl 键多选,分类无效</font></td>
<td bgcolor="$miscbackone" align="left" valign="middle">
<select name="FORUMS_TO_SEARCH" size="6" width=100% multiple>$jumphtml</select>
</td></tr>
<tr>
<td bgcolor="$miscbacktwo" valign=middle colspan=2 align=center><BR>
<input type=submit value="开始搜索"> <input value="调入搜索结果" type=button onclick="javascript:location.href='$boardurl/$thisprog?action=loadresults'">
</td></form></tr></table></td></tr></table>
~;
}
&output( -Title => "$boardname - 贴子搜索", -ToPrint => "$output", -Version => $versionnumber );
exit;
sub displayresults {
open (READ, "$searchfilename") or &error("搜索结果&对不起,搜索结果只能保存 30 分钟,请重新搜索!");
@completed_search = <READ>;
close (READ);
foreach (@completed_search) {
push (@TRUE_RESULTS, $_) if ($_ =~ /\t/)
}
$total_results = @TRUE_RESULTS;
$SEARCH_STRING = $completed_search[1];
chomp $SEARCH_STRING;
($TYPE_OF_SEARCH,$DAY_TO_SEARCH,$TIME_TO_SEARCH) = split(/\,/,$completed_search[2]);
chomp ($TYPE_OF_SEARCH,$DAY_TO_SEARCH,$TIME_TO_SEARCH);
$REFINE_SEARCH = $completed_search[3];
chomp $REFINE_SEARCH;
chomp $completed_search[4];
($FORUMS_TO_SEARCH,$JH_SEARCH)=split(/\,/,$completed_search[4]);
$TYPE_OF_SEARCH = "关键字" if ($TYPE_OF_SEARCH eq "keyword_search");
$TYPE_OF_SEARCH = "作者" if ($TYPE_OF_SEARCH eq "username_search");
$REFINE_SEARCH = "主题" if ($REFINE_SEARCH eq "topictitle_search");
$REFINE_SEARCH = "贴子内容" if ($REFINE_SEARCH eq "post_search");
$REFINE_SEARCH = "主题和回复" if ($REFINE_SEARCH eq "both_search");
$TYPE_SEARCH = "所有帖子" if ($JH_SEARCH eq "no");
$TYPE_SEARCH = "精华帖子" if ($JH_SEARCH eq "jinghua");
$TYPE_SEARCH = "投票帖子" if ($JH_SEARCH eq "poll");
$TYPE_SEARCH = "锁定帖子" if ($JH_SEARCH eq "lock");
$TYPE_SEARCH = "热门帖子" if ($JH_SEARCH eq "hot");
$TYPE_SEARCH = "置顶帖子" if ($JH_SEARCH eq "top");
if ($total_results > 0) {
$result_line = qq(使用<b>$TYPE_OF_SEARCH</b>搜索方式,在<b>$REFINE_SEARCH</b>中搜索到 <b>$total_results</b> 个相匹配的贴子);
}
else {
$result_line = qq(对不起,使用<b>$TYPE_OF_SEARCH</b>搜索方式,在帖子类型为<b>$TYPE_SEARCH</b>的<b>$REFINE_SEARCH</b>中<b>没有</b>搜索到任何相匹配的贴子);
}
$output .= qq~<tr><td bgcolor="$miscbacktwo" valign=middle colspan=3 align=center>
<font face="$font" color=$fontcolormisc>$result_line</font>
</td></tr>
<tr><td bgcolor=$miscbackone valign=middle align=center>
<font face="$font" color=$fontcolormisc><b>主题</b></font></td>
<td bgcolor=$miscbackone valign=middle align=center>
<font face="$font" color=$fontcolormisc><b>发表时间、位置</b></font></td>
<td bgcolor=$miscbackone valign=middle align=center>
<font face="$font" color=$fontcolormisc><b>关键字匹配说明</b></font></font>
</td></tr>
~;
$numberofitems = $total_results;
$numberofpages = $numberofitems / 25;
$instart = $start;
if ($numberofitems > 25) {
$showmore = "yes";
if ($instart eq "" || $instart < 0) { $instart = 0; }
if ($instart > 0) { $startarray = $instart; }
else { $startarray = 0; }
$endarray = $instart + 25 - 1;
if ($endarray < ($numberofitems - 1)) { $more = "yes"; }
if (($endarray > (25 - 1)) && ($more ne "yes")) { $endarray = $numberofitems - 1; }
}
else {
$showmore = "no";
$startarray = 0;
$pages = qq~<font face="$font" color=$menufontcolor>搜索结果只有一页</font>~;
$endarray = $numberofitems - 1;
}
if ($showmore eq "yes") { #1
if (25 < $numberofitems) { #2
($integer,$decimal) = split(/\./,$numberofpages);
if ($decimal > 0) { $numberofpages = $integer + 1; }
$pagestart = 0;
$counter = 0;
while ($numberofpages > $counter) { #3
$counter++;
if ($instart ne $pagestart) { $pages .= qq~<a href="$thisprog?action=display&start=$pagestart"><font face="$font" color=$fonthighlight><b>$counter</b></font></a> ~; }
else { $pages .= qq~<a href="$thisprog?action=display&start=$pagestart"><font face="$font" color=$menufontcolor>$counter</font></a> ~; }
$pagestart = $pagestart + 25;
} #e3
} #e2
$pages = qq~<font face="$font" color=$menufontcolor><b>搜索结果含有多页</b> [ $pages ]~;
} #1
$timeadd = $timedifferencevalue*3600 + $timezone*3600;
foreach (@TRUE_RESULTS[$startarray .. $endarray]) { # start foreach loop
($forumid, $topicid, $topictitle, $topicdescription, $forumname, $postdate, $string_returned) = split(/\t/,$_);
$topictitle =~ s/^*#!&*//;
$postdate = $postdate + $timeadd;
$longdate = &longdate("$postdate");
$topicdescription = qq( -=> $topicdescription) if $topicdescription;
if (($dofilter eq "no")||($dofilter eq "all")) {
$topictitle = &postwordfilter("$topictitle");
}
$inforum = $forumid;
if (($membercode eq "ad") || ($membercode eq 'smo') || ($inmembmod eq "yes")) {
$admini = qq~<DIV ALIGN=Right><font color=$titlecolor>|$jhbuttom$abslockbuttom<a href=postings.cgi?action=locktop&forum=$inforum&topic=$topicid><font color=$titlecolor>固</font></a>|<a href=postings.cgi?action=puttop&forum=$inforum&topic=$topicid&checked=yes><font color=$titlecolor>提</font></a>|<a href=postings.cgi?action=lock&forum=$inforum&topic=$topicid&checked=yes><font color=$titlecolor>锁</font></a>|<a href=postings.cgi?action=unlock&forum=$inforum&topic=$topicid&checked=yes><font color=$titlecolor>解</font></a>|<a href=delpost.cgi?action=delete&forum=$inforum&topic=$topicid><font color=$titlecolor>删</font></a>|<a href=delpost.cgi?action=movetopic&forum=$inforum&topic=$topicid&checked=yes><font color=$titlecolor>移</font></a>|</font> </DIV>~;
}
elsif ((lc($inmembername) eq lc($startedby)) && ($inpassword eq $password) && ($inmembername !~ /^客人/)) {
if ($arrowuserdel eq "on") {
$admini = qq~<DIV ALIGN=Right><font color=$titlecolor>~;
$admini .= qq~| <a href=postings.cgi?action=lock&forum=$inforum&topic=$topicid><font color=$titlecolor>锁定此贴,不允许别人回复</font></a> ~ unless ($threadstate eq "closed");
$admini .= qq~| <a href=delpost.cgi?action=delete&forum=$inforum&topic=$topicid><font color=$titlecolor>删除此贴</font></a> |</font> </DIV>~;
}
else { undef $admini; }
}
else { undef $admini; }
$output .= qq(<tr><td bgcolor=$miscbackone valign=middle>
<font face="$font" color=$fontcolormisc><B><a href="topic.cgi?forum=$forumid&topic=$topicid" target=_blank>$topictitle</a></B><br>
$topicdescription$admini</td>
<td bgcolor=$miscbackone valign=middle>
<font face="$font" color=$fontcolormisc>所处论坛: <a href="forums.cgi?forum=$forumid">$forumname</a><BR>发表时间: $longdate</font></td>
<td bgcolor=$miscbackone valign=middle align=center>
<font face="$font" color=$fontcolormisc>$string_returned</font></td></tr>
);
undef $topicdescription;
} # end foreach
$output .= qq(<tr><td bgcolor="$miscbacktwo" valign=middle colspan=2 align=center>
<font face="$font" color=$fontcolormisc>$pages</font></td>
<td bgcolor="$miscbacktwo" valign=middle colspan=1 align=center>
<font face="$font" color=$fontcolormisc>
<img src=$imagesurl/images/icon.gif align=absmiddle border=0> <a href="$thisprog"><b>再次搜索 </b></a>
</font><br><font face="$font" color=$fontcolormisc>
<img src=$imagesurl/images/saveas.gif align=absmiddle> <a href="$thisprog?action=saveresults"><b>保存搜索结果 </b></a>
</font></td></tr></table></td></tr></table>
);
&output( -Title => "$boardname - 搜索结果", -ToPrint => "$output", -Version => $versionnumber);
}
exit;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -