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

📄 search.cgi

📁 一个linux论坛
💻 CGI
📖 第 1 页 / 共 3 页
字号:
</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>&nbsp;<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>&nbsp;<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(&nbsp;-=> $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>&nbsp;</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 + -