Jump to content
Fórum Script Brasil
  • 0

Problemas com rotina de busca !


Dj Debas

Question

Fala pessoal !!!

Peço uma ajuda a quem puder me ajudar.

Tenho uma rotina de busca que funcionava e agora não funciona mais, o servidor mudou e a rotina parou de funcionar.

Percebi que o REGISTER_GLOBALS esta OFF e não sei se isso afeta a rotina que uso, por isso peço um auxilio a quem puder me ajudar.

A rotina segue abaixo:

<?
 ############################################################################
 # WFSearch Engine by jID     Version 0.8 (PHP4) (09 jan 2003)              #
 # Copyright (C) jID, 2002-2003                                             #
 #               Jean-Charles Meyrignac 2003                                #
 #                                                                          #
 # Search unit :: Ìîäóëü ïîèñêà                                             #
 ############################################################################

require ("../config3.php");
// require ("language/".$languagefile);

$time=explode(' ', microtime());
$start_time=$time[1]+$time[0];

// This function returns:
//
// 0=unauthorized access to this file
// 1=not parsable file
// 2=parsable file

function IsAllowed($f)
{
  global $allowed_names, $disallowed_names;
  for ($i=0; $i<count($disallowed_names); ++$i)
    if (stristr(realpath($f), $disallowed_names[$i])) return 0;
  for ($i=0; $i<count($allowed_names); ++$i)
    if (stristr(realpath($f), $allowed_names[$i])) return 2;
  return 1;
}

// Does buffer matches the query ?
function FindQuery($buffer)
{
  global $query, $m;
  $query = ereg_replace( '[ÁÀÂÃÄ]', 'A', $query);
    $query = ereg_replace( '[áàâãäª]', 'a', $query);
    $query = ereg_replace( '[ÉÈÊË]', 'E', $query);
    $query = ereg_replace( '[éèêë]', 'e', $query);
    $query = ereg_replace( '[ÍÌÎÏ]', 'I', $query);
    $query = ereg_replace( '[íìîï]', 'i', $query);
    $query = ereg_replace( '[ÓÒÔÕÖ]', 'O', $query);
    $query = ereg_replace( '[óòôõöº]', 'o', $query);
    $query = ereg_replace( '[ÚÙÛÜ]', 'U', $query);
    $query = ereg_replace( '[úùûü]', 'u', $query);

    $query = str_replace( 'Ç', 'C', $query);
    $query = str_replace( 'ç', 'c', $query);
        
    $query = str_replace( '´', '', $query );
    $query = str_replace( '`', '', $query );
    $query = str_replace( '~', '', $query );
    $query = str_replace( '^', '', $query );
    $query = str_replace( '¨', '', $query );

    $query = str_replace( '-', '', $query );
    $query = str_replace( '_', '', $query );
//  $query = str_replace( ' ', '', $query );
  $t=explode(" ", $query);
   if ($m=="or")
   {
     for ($j=0; $j<count($t); ++$j)
     {
       if (stristr($buffer, $t[$j])) return 1;
       $key=htmlentities($t[$j]);
       if ($key!=$t[$j])
       {
         if (stristr($buffer, $key)) return 1;
       }
     }
     return 0;
   } else
   {
     for ($j=0; $j<count($t); ++$j)
       if (!stristr($buffer, $t[$j]))
       {
         $key=htmlentities($t[$j]);
         if ($key!=$t[$j])
         {
           if (!stristr($buffer, $key)) return 0;
         } else
         {
           return 0;
         }
       }
     return 1;
   }
}

// First pass: we build a list of all files matching the criterions

function countdirs($dirname)
{
  global $filesearch;
  $dir=opendir(".");
   while(($f=readdir($dir))!==false)
  {
    if (is_dir($f))
    {
      if (($f!=".") && ($f!=".."))
      {
        if (IsAllowed($f))
        {
          chdir($f);
          countdirs($dirname."/".$f);
          chdir("..");
        }
      }
    } else
    {
      $n=IsAllowed($f);
      if ($n)
      {
        // Does the filename matches the query ?
        if (FindQuery($f))
        {
          $filesearch[] = $dirname.'/'.$f;
        } else
        if ($n==2)
        {
          // Does the content matches the query ?
          $fd=fopen($f,"r");
          $buffer=fread($fd, filesize($f));
          fclose($fd);
          if (FindQuery($buffer))
          {
            $filesearch[] = $dirname.'/'.$f;
          }
        }
      }
    }
  }
  closedir($dir);
}


function Render($dirname, $filenumber)
{
  global $ip1, $rootdir, $query, $m, $from, $showed, $pages, $color1, $color2, $explodestring, $maxoccurrences, $desc_header, $desc_footer, $lang_bytes, $interface_all;
  $f=$rootdir.$dirname;
  $arq = basename ($dirname,".mid");
  $arq = str_replace("_"," ",$arq);     // nome inteiro sem underline
  ++$showed;
  if ($showed&1)
    echo "<div align='left' style='margin-left: 100px; margin-right: 50px'>";
  else
    echo "<div align='left' style='margin-left: 100px; margin-right: 50px'>";
    echo "<p class=\"link\"><a href=\"http://www.djdebas.net/Midis$dirname\">",str_replace("%1", $filenumber, $interface_all),"&nbsp;$arq</font></a></p>";


  if (IsAllowed($dirname)==2)
  {
    $fc=file($f);
    $filet=join("", $fc);
    if (preg_match("/<title.*>(.*)<\/title.*>/isU", $filet, $match))
    {
      // display the title
      echo trim($match[1]);
    }
    // display the content matches
    $s=implode($fc, $explodestring);
    $s=strip_tags($s);
    $fc=explode($explodestring, $s);
    $q=explode(" ",$query);
    $occurrence=0;
    echo "<br>$desc_header";
    for ($i=0; $i<count($fc); ++$i)
    {
      $occ=0;
      $s=strtolower(strip_tags($fc[$i]));
      for ($j=0; $j<count($q); ++$j)
      {
        if (stristr($s, $q[$j]))
        {
          $s=str_replace($q[$j], "<b>$q[$j]</b>", $s);
          $occ=1;
        }
        else
        {
          $key=htmlentities($q[$j]);
          if (stristr($s, $key))
          {
            $s=str_replace($key, "<b>$key</b>", $s);
            $occ=1;
          }
        }
      }
      if ($occ)
      {
        $occ=0;
        echo "...$s...";
        ++$occurrence;
        if ($occurrence > $maxoccurrences) break;
      }
    }
    echo $desc_footer;
  }
  echo "</div>\n";
}

// Display navigation bar
function DisplayNavbar($all)
{
  global $PHP_SELF;
  global $color0, $pages, $query, $m, $search_separator;
  echo "<div align='center' >";
  for ($k=1; $k<=$all; $k+=$pages)
  {
    if ($k!=1)
        echo $search_separator;
          echo "<a class='navbar' href=$PHP_SELF?query=".urlencode($query)."&m=$m&from=$k>$k-";
        if ($k+$pages>$all)
             echo $all;
        else
             echo ($k-1+$pages);
 //                echo "</div>";
  }
 // echo "</td></tr>\n";
}

// ****************************> MAIN CODE <*********************************
if (!isset($from)) $from=1;
if (!isset($query)) $query="";
$query=strtolower(trim(strip_tags($query)));

if ($query!="")
{
  $rootdir=$DOCUMENT_ROOT;
  unset($filesearch);
  countdirs($start_search);
  $time=explode(' ', microtime());
  $seconds=($time[1]+$time[0]-$start_time);
  $all=count($filesearch);
  if ($all>0)
  {
    echo "<center><font color=\"#006400\">".str_replace("%2", sprintf("%01.3f", $seconds), str_replace("%1", $all, "Encontrado(s) <b>%1</b> arquivo(s)."))."</font></center><br>\n";
    echo "<div align='center'>\n";
    $showed=0;
    DisplayNavbar($all);
    for($i=$from;$i < $from+$pages;++$i)
    {
      if ($i >= $all+1) break;
      Render($filesearch[$i-1], $i);
    }
    DisplayNavbar($all);
    echo "</div><br>\n";
  }
  else
  {
    echo "<center><font color=\"#006400\">Nenhum arquivo encontrado.</font></center>";
  }
}
$time=explode(' ',microtime());
$seconds=($time[1]+$time[0]-$start_time);
// echo "<form><p align=center><input class=\"botao\" type=\"button\" value=\"Voltar\" onclick=\"history.go(-1)\"></p></form>";
?>
</tbody> </table></center></td></tr> </tbody> </table></center>
</body>
</html>

Rotina de Busca PHP

Link to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...