发信人: jaron() 
整理人: workingnow(2002-09-30 12:01:16), 站内信件
 | 
 
 
#!/usr/local/bin/perl
 #####################################################################
 # 在 http://www.jdinfo.net/cgi-bin/search.cgi 可以看演示!
 $basedir    = "/usr/home/wuXXXX/www/"; # 要搜索的目录路径(绝对路径)
 $baseurl    = "http://www.jdinfo.net/";
 $title      = "江都资讯网";
 $title_url  = "http://www.jdinfo.net/"; # 网址
 $searchlogo =" http://www.jdinfo.net/images/searchlogo.jpg"; # 图标
 $adjs = "http://www.jdinfo.net/jsscript/randomad.js"; # 广告显示
 $search_url = "http://www.jdinfo.net/";
 @files      =('*.htm','*.html','*/*.htm','*/*.html','*/*/*.htm','*/*/*.html','*/*/*/*.htm','*/*/*/*.html'); # 要搜索的文件类型
 #####################################################################
 &parse_form;
 &get_files;
 &search;
 &return_html;
 
 sub parse_form {
    read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
    @pairs = split(/&/, $buffer);
 
    foreach $pair (@pairs) {
       ($name, $value) = split(/=/, $pair);
 
       $value =~ tr/+/ /;
       $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
 
       $FORM{$name} = $value;
    }
 }
 
 sub get_files {
 
    chdir($basedir);
    foreach $file (@files) {
       $ls = `ls $file`;
       @ls = split(/\s+/,$ls);
       foreach $temp_file (@ls) {
          if (-d $file) {
             $filename = "$file$temp_file";
             if (-T $filename) {
                push(@FILES,$filename);
             }
          }
          elsif (-T $temp_file) {
             push(@FILES,$temp_file);
          }
       }
    }
 }
 
 sub search {
 
    @terms = split(/\s+/, $FORM{'terms'});
 
    foreach $FILE (@FILES) {
 
       open(FILE,"$FILE");
       @LINES = <FILE>;
       close(FILE);
 
       $string = join(' ',@LINES);
       $string =~ s/\n//g;
       if ($FORM{'boolean'} eq 'AND') {
          foreach $term (@terms) {
             if ($FORM{'case'} eq 'Insensitive') {
                if (!($string =~ /$term/i)) {
                   $include{$FILE} = 'no';
   		  last;
                }
                else {
                   $include{$FILE} = 'yes';
                }
             }
             elsif ($FORM{'case'} eq 'Sensitive') {
                if (!($string =~ /$term/)) {
                   $include{$FILE} = 'no';
                   last;
                }
                else {
                   $include{$FILE} = 'yes';
                }
             }
          }
       }
       elsif ($FORM{'boolean'} eq 'OR') {
          foreach $term (@terms) {
             if ($FORM{'case'} eq 'Insensitive') {
                if ($string =~ /$term/i) {
                   $include{$FILE} = 'yes';
                   last;
                }
                else {
                   $include{$FILE} = 'no';
                }
             }
             elsif ($FORM{'case'} eq 'Sensitive') {
                if ($string =~ /$term/) {
 		  $include{$FILE} = 'yes';
                   last;
                }
                else {
                   $include{$FILE} = 'no';
                }
             }
          }
       }
       if ($string =~ /<title>(.*)<\/title>/i) {
          $titles{$FILE} = "$1";
       }
       else {
          $titles{$FILE} = "$FILE";
       }
    }
 }
       
 sub return_html {
 print "Content-type: text/html\n\n";
 print "<html>\n <head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\">\n<title>搜索结果</title>\n \n";
 print qq~
 <style>.main        { font-style: normal; font-variant: normal; font-weight: normal; line-height: 
                15px; font-size: 9pt; font-family: 宋体 }
 a:link       { text-decoration: none; font-size: 9pt ;color: #000000}
 a:visited    { text-decoration: none; font-size: 9pt ;color: #000000}
 a:active     { text-decoration: none; font-size: 9pt}
 a:hover      { text-decoration: underline; color: #FF0000 }
 body, table  { font-size: 9pt }
 tr, td       { font-size: 9pt }
 </style>
 </head>
 <body>
 <div align="center">
 <center>
 <form method="POST" action="search.cgi">
 <table border="0" cellspacing="0" cellpadding="0" width="90%" align="center">
 <tr>
 <td align="left"><img border="0" src="$searchlogo" width="200" height="42"></td>
 <td align="right"><script src="$adjs"></script></td>
 </tr>
 <tr><td colspan="2" height="15" valign="top"></td></tr>
 <tr><td bgcolor="#EBEBEB">>> 位置: <a href="$baseurl">$title >> 全文检索</td><td bgcolor="#EBEBEB" align="right"><a href="$search_url">回到检索页</td></tr>
 <tr><td colspan="2"></td></tr>
 <tr><td colspan="2" align="left" bgcolor="#66CCFF" valign="bottom">
 <p class="main">  填入查询内容:<input type="text" name="terms" style="width: 115; background-color: #FFFF99; color: #FF0000" size="22"> 
 <input type="hidden" name="case" value="Insensitive"> <select size="1" name="boolean" style="background-color: #FFFF99"><option value="AND">= AND=</option><option value="OR">=O  R=</option>  </select> <input type="submit" value="继续搜索" style="font-family: 新细明体, 宋体, Arial; font-size: 9pt; background-color: #ffff99; color: 000000; text-align: center; vertical-align: middle; border: 1 double" padding-bottom:1px" onmouseover="this.style.color='#ff0000'" onmouseout="this.style.color='#000000'"></p>
 </td>
 </tr>
 <tr><td colspan="2" align="left" height="25">您输入的关健字:~;
 $i = 0;
    foreach $term (@terms) {
 	if ($term ne "") {
 	print qq~$term<br></td></tr>~;
 	}
 	else {
 			print qq~(您没有输入查询关键字)<br></td></tr>~;}
 	  $i++;
       if (!($i == @terms)) {
          print ", ";
 	  }
    }
    foreach $key (keys %include) {
 		$match++;
 	  if ($include{$key} eq 'yes') {
 		if ((int($match/2))!=($match/2)) {
 			print qq~<tr><td colspan="2" bgcolor="#FFFFFF"><a href="$baseurl$key">$titles{$key}</td></tr>~;
 		}
 		else {print qq~<tr><td colspan="2" bgcolor="#F9F9F9"><a href="$baseurl$key">$titles{$key}</td></tr>~;}
       }
    }
 print qq~<td colspan="2"></td>
 <tr><td colspan="2"><hr color="#0000FF" size="1" noshade></td></tr>
 <tr><td colspan="2"><script src="http://www.jdinfo.net/script/system_set.js"></script></td></tr>
 </table></form></center></div></body></html>
 ~;
 }
 
 
  ---- 欢迎下载使用 网站新闻管理系统 v2.2
 http://www.jdinfo.net/download
 http://www.jdinfo.net/demo (演示)
 oicq:942488  | 
 
 
 |