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

📄 search.cgi

📁 绿叶网络小学校园网-完全适合小学的网站
💻 CGI
📖 第 1 页 / 共 2 页
字号:

                  $matches_so_far   = "处理中..." if (!$matches_so_far);
                  $forumname        = "处理中..." if (!$forumname);
      
                  $output .= qq~
			            <tr>
			            <td bgcolor=$miscbacktwo valign=middle align=center><font face="$font" color=$fontcolormisc><b>搜索中....</b></font></td></tr>
			            <tr>
			            <td bgcolor=$miscbackone valign=middle><font face="$font" color=$fontcolormisc>
			            请等待,程序正在搜索中。<br>
			            <b>当前搜索情况:</b>
			            <ul>
			            <li>详细情况....<BR>
                        <li>搜索论坛: <b>$forumname</b>
                        <li>搜索结果: <b>$matches_so_far</b>
                        <li>匹配符合: <b>$matches_in_forum</b>$matches_in_forums
			            </ul>
			            </tr>
			            </td>
			            </table></td></tr></table>
			            <meta http-equiv="refresh" content="2; url=$relocurl">
			            ~;

                  } # end if action eq continue


                    else {

                        # Print form

						&getmember("$inmembername");


						$jumphtml .= qq~
						<select name="FORUMS_TO_SEARCH">
						<option value="all">所有论坛
						~;        

						$filetoopen = "$ikondir" . "data/allforums.cgi";
						open(FILE, "$filetoopen");
						flock(FILE, 2) if ($OS_USED eq "Unix");
						@forums = <FILE>;
						close(FILE);

						foreach $forum (@forums) { #start foreach @forums
						    chomp $forum;
						    ($forumid, $category, $categoryplace, $forumname, $forumdescription, $forummoderator ,$htmlstate ,$idmbcodestate ,$privateforum, $startnewthreads ,$lastposter ,$lastposttime, $threads, $posts, $forumgraphic) = split(/\|/,$forum);
						    if ((($privateforum eq "yes") && ($userregistered ne "no") && ($allowedentry{$forumid} eq "yes"))||($membercode eq "ad")) {
						        $rearrange = ("$categoryplace|$category|$forumname|$forumdescription|$forumid");
						        }
						        elsif ($privateforum ne "yes") {
						            $rearrange = ("$categoryplace|$category|$forumname|$forumdescription|$forumid");
						            }
						        push (@rearrangedforums, $rearrange);

						} # end foreach (@forums)

						@finalsortedforums = sort(@rearrangedforums);

						foreach $sortedforums (@finalsortedforums) { #start foreach 
						    ($categoryplace, $category, $forumname, $forumdescription, $forumid) = split(/\|/,$sortedforums);
						    
						    if ($categoryplace ne $lastcategoryplace) { #start if $categoryplace
						        $jumphtml .= "<option value=\"\">\n";
						        $jumphtml .= "<option value=\"\">>>&nbsp;$category <<\n";
						        $jumphtml .= "<option value=\"$forumid\"> $forumname\n";
						        }
						        else {
						            $jumphtml .= "<option value=\"$forumid\"> $forumname\n";
						            }
						     $lastcategoryplace = $categoryplace;
						     } # end foreach 
						     
						$jumphtml .= qq~</select>\n~;


						$refineposts = qq~<select name="POST_SEARCH">
						                  <option value="topictitle_search">在主题中搜索关键字
						                  <option value="post_search">在回复中搜索关键字
						                  <option value="both_search">两者都搜索
						                  </select>
						                  ~;

                        $refinename  = qq~<select name="NAME_SEARCH">
						                  <option value="topictitle_search">搜索主题作者
						                  <option value="post_search">搜索回复作者
						                  <option value="both_search">两者都搜索
						                  </select>
						                  ~;

                     $currenttime = time;
                        
						$output .= qq~
						<tr>
						<td bgcolor="$miscbacktwo" valign=middle colspan=2 align="center">
						<p><form action="$boardurl/$thisprog" method="post">
						<input type=hidden name="action" value="startsearch">
				                <input type=hidden name="CUR_TIME" value="$currenttime">
						<font face="$font" color=$fontcolormisc><b>请输入要搜索的关键字</b></font></td></tr>
						<tr>
						<td bgcolor=$miscbackone width colspan=2 align="center" valign="middle"><font face="$font" color=$fontcolormisc><b>请输入要搜索的关键字</b>
						(多个关键字之间使用逗号 ',' 分隔)</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" value="username_search">
                        </td>
                        <td bgcolor="$miscbackone" align="left" valign="middle">
                        $refinename
                        </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" value="keyword_search" checked>
                        </td>
                        <td bgcolor="$miscbackone" align="left" valign="middle">
                        $refineposts
                        </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" colspan="2" valign="middle" align="center"><font face="$font" color=$fontcolormisc>
                        <b>搜索论坛: &nbsp; $jumphtml</b></td>
						</tr>
						<tr>
						<td bgcolor="$miscbacktwo" valign=middle colspan=2 align=center><BR>
						<input type=submit value="开始搜索">
						</td></form></tr></table></td></tr></table>
						~;
						}
                        &output(
	                    -Title   => "$boardname - 贴子搜索", 
	                    -ToPrint => "$output", 
	                    -Version => $versionnumber 
	                    );

sub displayresults {

  

   open (READ, "$searchfilename") or &error("搜索结果&对不起,搜索结果只能保存 30 分钟,请重新搜索!");
   @completed_search = <READ>;
   close (READ);

   foreach (@completed_search) {
      push (@TRUE_RESULTS, $_) if ($_ =~ /\|/)
      }

   $total_results = @TRUE_RESULTS;

   $SEARCH_STRING    = $completed_search[1];
   chomp $SEARCH_STRING;
   $TYPE_OF_SEARCH   = $completed_search[2];
   chomp $TYPE_OF_SEARCH;
   $REFINE_SEARCH    = $completed_search[3];
   chomp $REFINE_SEARCH;
   $FORUMS_TO_SEARCH = $completed_search[4];
   chomp $FORUMS_TO_SEARCH;
   
   $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");

   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>$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>
   ~;
   ### Work out if there is a span, and if so how many pages.

    $maxthreads = 25;
    $numberofitems = $total_results;
    $numberofpages = $numberofitems / $maxthreads;
    $instart = $start;

    if ($numberofitems > $maxthreads) { #if
        $showmore = "yes";
        if ($instart eq "" || $instart < 0) { $instart = 0; }
        if ($instart > 0) { $startarray = $instart; }
            else { $startarray = 0; }
            $endarray = $instart + $maxthreads - 1;
            if ($endarray < ($numberofitems - 1)) { $more = "yes"; }
            if (($endarray > ($maxthreads - 1)) && ($more ne "yes")) { $endarray = $numberofitems - 1; }
            } #
            else {
                $showmore = "no";
                $startarray = 0;
                $pages = qq~<font face="$font" color=$menufontcolor>搜索结果只有一页</font>~;
                $endarray = $numberofitems - 1;
                }

    ### if we have multiple pages, print them
    
        if ($showmore eq "yes") { #1
            if ($maxthreads < $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 + $maxthreads;
                                } #e3
                            } #e2
                $pages = qq~<font face="$font" color=$menufontcolor><b>搜索结果含有多页</b> [ $pages ]~;
                } #1

   foreach (@TRUE_RESULTS[$startarray .. $endarray]) { # start foreach loop

   ($forumid, $topicid, $topictitle, $topicdescription, $forumname, $postdate, $string_returned) = split(/\|/,$_);

   $postdate = $postdate + ($timedifferencevalue*3600) + ($timezone*3600);
   $longdate = &longdate("$postdate");

   $topicdescription = qq(&nbsp;-=> $topicdescription) if $topicdescription;

        if ($badwords) {
            @pairs = split(/\&/,$badwords);
            foreach (@pairs) {
                ($bad, $good) = split(/=/,$_);
                chop $good;
                $topictitle=~ s/$bad/$good/isg;
                }
            }

   $output .= qq(
   <tr>
      <td bgcolor=$miscbackone valign=middle>
         <font face="$font" color=$fontcolormisc>
         <B><a href="$boardurl/$threadprog?forum=$forumid&topic=$topicid">$topictitle</a></B><br>
         $topicdescription
      </td>
      <td bgcolor=$miscbackone valign=middle>
         <font face="$font" color=$fontcolormisc>
         所处论坛: <a href="$boardurl/$forumsprog?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>
         <a href="$boardurl/$thisprog"><b>>> 再 次 搜 索 <<</b></a>
         </font>
      </td>
   </tr>
   </table></td></tr></table>);


   &output( -Title   => "$boardname - 搜索结果", 
             -ToPrint => "$output", 
             -Version => $versionnumber);


} # end routine








⌨️ 快捷键说明

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