引用网上的代码,尝试做站内搜索,虽低效率,但还是不能正常运行,求高手解答
<?php
include("./include/common.inc");
$title = "Search";
include("./include/front.inc");
?>
<P><BR>
<FORM action="<?php echo $_SERVER["PHP_SELF"];?>" METHOD="POST"><BR>
<INPUT value="aaron" name=searchstr SIZE="20" MAXLENGTH="30"><BR>
<INPUT type=submit value=Search!><BR>
</FORM><BR></P><BR>
<?php
if( !empty($searchstr) )
{
//echo $_SERVER["PHP_SELF"];echo "$searchstr";

         echo "Test1 <HR>\n";
$cmdstr = "grep -i $searchstr *";
$fp = popen( $cmdstr, "r" );
$myresult = array(); 
while( $buffer = fgetss ($fp, 4096)) 
        {    
            list($fname, $fline) = split(":",$buffer, 2);
    if ( !defined($myresult[$fname]))
$myresult[$fname] = $fline;
}
if ( count($myresult) )
{
echo "<OL>\n";
while(list($fname,$fline) = each($myresult))
echo "<LI><BR><A href='http://www.pc65.com\"$fname\"'>$fname</A> : $fline \n";
echo "</LI></OL>\n";
}else {
echo "Sorry. Search on <B>$searchstr</B><BR>returned no results.<BR>\n";
}
pclose($fp);
}else{
//echo "Test 2";
}
include("include/tail.inc");
?>

解决方案 »

  1.   

    代码没嵌套好,从新搞下:
    <?php
    include("./include/common.inc");
    $title = "Search";
    include("./include/front.inc");
    ?>
    <P><BR>
    <FORM action="<?php echo $_SERVER["PHP_SELF"];?>" METHOD="POST"><BR>
    <INPUT value="aaron" name=searchstr SIZE="20" MAXLENGTH="30"><BR>
    <INPUT type=submit value=Search!><BR>
    </FORM><BR></P><BR>
    <?php
    if( !empty($searchstr) )

    //echo $_SERVER["PHP_SELF"];echo "$searchstr";  echo "Test1 <HR>\n";
    $cmdstr = "grep -i $searchstr *";
    $fp = popen( $cmdstr, "r" );
    $myresult = array();  
    while( $buffer = fgetss ($fp, 4096))  
      {   
      list($fname, $fline) = split(":",$buffer, 2);
    if ( !defined($myresult[$fname]))
    $myresult[$fname] = $fline;
    }
    if ( count($myresult) )
    {
    echo "<OL>\n";
    while(list($fname,$fline) = each($myresult))
    echo "<LI><BR><A href='http://www.pc65.com\"$fname\"'>$fname</A> : $fline \n";
    echo "</LI></OL>\n";
    }else {
    echo "Sorry. Search on <B>$searchstr</B><BR>returned no results.<BR>\n";
    }
    pclose($fp);
    }else{ 
    //echo "Test 2";
    }include("include/tail.inc");
    ?>
      

  2.   

    既然是内部搜索引擎,而你又不打算直接搜索数据库,那为何不借助google的站内搜索功能呢?
    效率高,而且不占用你的服务器资源
      

  3.   

    Googlekeyword  site:yoursite.com
      

  4.   

    if( !empty($searchstr) )
    ????
    这种形式的使用,需要 register_globals = on
    并且,即便是 register_globals = on 你的变量名也写错了
    if( !empty($Searchstr) )
    php 的变量名和数组关联键是区分大小写的你应该写作
    if( !empty($_POST['Searchstr']) )
      

  5.   

    请问楼上的:文中定义的文本框name就是小写的,为什么要用大写呢,定义的变量searchstr 与$_SERVER["Searchstr"]有什么区别??