Ir para conteúdo
Fórum Script Brasil
  • 0

sistema de busca interna Ajuda


leanhils

Pergunta

Eae pessoal tudo bom .. bom eu estou com um problema em um sistema de busca interna, antes de tudo eu sou novato em php

porem eu achei um script que fais uma varredura em todos os diretorios e mostra os resultados mesmo o site sendo em html

agora esta o meu problema o site que eu fiz esta em iframe todo o conteudo do site esta sobre iframe, e os resultados da busca a parecem dessa maneria

EXEMPLO : www.osite.com/tutoriais.php

como o conteudo esta em iframe ele vai abrir a pagina so com o conteudo mas eu quero que abra a index tambem a unica forma é usar uma variavel ficaria assim

www.osite.com/?frame=tutoriais.php

meu site inteiro foi feito assim usei a index como principal e uma variavel para pegar todo o conteudo do iframe

mas agora nos resultados das buscas não esta aparecendo essa varial ?frame=

tem alguma forma de modificar o codigo fonte da busca.php para inclementar essa variavel nos links da pesquisa

vou postar aqui o code para vocês darem uma olhada

----------------------------------Code da busca.php -------------------

<?php

/**************************************************\
#   siteBuusca! v1.0                               #
#                                                  #
#     Autor:  Carlos Reche                         #
#     E-mail: carlosreche@yahoo.com                #
#                                                  #
#     Por favor, mantenha os créditos =)           #
#                                                  #
#   Sistema de busca em páginas da web. Não é      #
#   necessário um banco de dados para trabalhar    #
#   com este script. Apenas digite o caminha da    #
#   raiz onde a busca deverá ocorrer, e ele irá    #
#   buscar em todas as subpastas automaticamente.  #
#                                                  #
\**************************************************/


////////////////////////     INÍCIO DA CONFIGURAÇÃO     ////////////////////////


/*      LEIA ANTES DE MEXER NA CONFIGURAÇÃO!!!

  -> Sempre que você for informar um diretório, informe o caminho relativo sem barras no início
     ou no final. Por exemplo, imagine que seu script de busca esteja em:
     "http://www.seunome.com.br/scripts/busca/busca.php", e você queira que o script interprete
     como sendo a raiz da busca a mesma pasta que é a raiz do site (ou seja, a pasta que conteria
     o diretório "scripts"). Então, neste caso você deveria configurar da seguinte forma:
          $secao_dir[0] = "../.."
     Nota: esta regra de configuração vale para este script. Ela pode não se aplicar em outros casos.
*/

//  DIGITE O NOME E O CAMINHO DE CADA SEÇÃO EXISTENTE:   (buscará por todos os subdiretórios automaticamente)
//  Você pode incluir mais de um valor, desde que mantenha a seqüência somando 1 (um) no índice.
//  Obs: para que a pasta da busca seja a mesma de onde se encontra este script, coloque apenas um ponto "."

$secao_nome[0] = "Todo o site";
$secao_dir[0] = ".";

$secao_nome[1] = "";
$secao_dir[1] = "";

$secao_nome[2] = "";
$secao_dir[2] = "";


//  DIGITE O LIMITE DE EXIBIÇÃO POR PÁGINAS
      $limite = 10;


//  TAMANHO MÍNIMO DA PALAVRA PARA QUE A BUSCA SEJA EXECUTADA (EM CARACTERES)
      $tamanho_min = 3;


//  DIGITE OS DIRETÓRIOS QUE DESEJA EXCLUIR DA BUSCA
//  Para adicionar novas exlusões de diretórios, copie e cole o modelo da última linha (que começa com "$exc++; ...").
//  Obs: Lembre-se de NÃO colocar uma barra no início ou no final do caminho, caso contrário não excluirá o diretório

      $exc=0; $excluir_dir[$exc] = "";
      $exc++; $excluir_dir[$exc] = "";
      $exc++; $excluir_dir[$exc] = "";


///////////////   FIM DA CONFIGURAÇÃO - NÃO ALTERE OS VALORES ABAIXO SEM SABER   ///////////////


$diretorio[0] = @$secao_dir[@$_GET['secao']];


function getmicrotime() {
   list($usec, $sec) = explode(" ", microtime());
   return ((float)$usec + (float)$sec);
}

function unhtmlentities($string) {
   $trans_tbl = get_html_translation_table(HTML_ENTITIES);
   $trans_tbl = array_flip ($trans_tbl);
   return strtr ($string, $trans_tbl);
}

function limpa_tag_scripts($string) {
    $exclui = array ("'(<\?).*?(\?>)'si",     // Limpar tags PHP
                     "'(<%).*?(%>)'si");      // Limpar tags ASP
    $substitui = array ("", "");
    $string = preg_replace($exclui, $substitui, $string);
    return ($string);
}

function limpa($string) {
    $string = eregi_replace("%0D%0A", "+", urlencode($string));  // limpar "tecla enter"
    $string = eregi_replace("    ", " ", urldecode($string));     // limpar tabulações

    $exclui = array ("'<[\/\!]*?[^<>]*?>'si",     // Limpar tags HTML
                     "'([\r\n])[\s]+'",           // Limpar espaços em branco
                     "/ +/");                     // Limpar espaços consecutivos
    $substitui = array ("", "\\1", " ");
    $string = preg_replace($exclui, $substitui, $string);
    return (trim($string));
}


/////////////////////////////////  FIM DAS FUNÇÕES   /////////////////////////////////


$creditos = "<div style=\"margin-top: 30px; width: 720px; text-align: center;\">
<hr width=\"720\" align=\"center\" size=\"2\" color=\"#aaaaaa\" noshade=\"true\" />
<font style=\"font-family: verdana; font-size: 11px; color: #cc3333;\"><strong>
Desenvolvido por Carlos Reche </strong> <br />
<a href=\"mailto:carlosreche@yahoo.com\" title=\"carlosreche@yahoo.com\"><em>carlosreche@yahoo.com</em></a>
</font>\n</div>";


$busca = trim(stripslashes(@$_GET['busca']));
$busca = eregi_replace("\"", "", $busca);
$busca_quebra = explode(" ", $busca);

$achou_inicial = @$_GET['achou_inicial'];
if (!@$_GET['achou_inicial']) { $achou_inicial = "1"; }
if (!@$_GET['exibe_status']) { $_GET['exibe_status'] = "0"; }
if (!@$_GET['secao']) { $_GET['secao'] = "0"; }

?>
<html>
<head>
<title>siteBuusca! <?php
if ($busca) { echo " - Resultado da busca"; }
?></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">

body {margin: 20px;}

body,table {color: #333333; font-family: arial; font-size: 15px;}

a:link {color: #0000cc; text-decoration: none;}
a:hover {color: #0066cc; text-decoration: none;}
a:active {color: #cc7700; text-decoration: none;}
a:visited {text-decoration: none;}

.resultado {margin-top: -5px; margin-bottom: 30px; width: 700px;}
.linha {margin-top: -5px; height: 1px; width: 720px; text-align: left; color: #cccccc;}

</style>
</head>

<body vlink="#0000cc" <?php
if (!$busca) { echo "onload=\"document.formulario.busca.focus();\""; }
?>>

<form name="formulario" method="get" action="<?php
echo $_SERVER['PHP_SELF'] . "?busca=" . @$_GET['busca'];
?>">

<div style="width: 720px; margin-bottom: 10px; text-align: center;">
<font style="font-size: 20px;"><strong>site<em>Buusca</em>!</strong></font> <br /><br /><br />

Buscar por <input type="text" name="busca" size="30" <?php
if (@$busca) { echo "value=\"" . $busca . "\" "; }
?>/>
<select name="secao">
<?php

for ($sec=0; !empty($secao_nome[$sec]) && !empty($secao_dir[$sec]); $sec++) {
    echo "<option value=\"" . $sec . "\" ";
        if ($_GET['secao'] == $sec) { echo "selected"; }
    echo ">" . $secao_nome[$sec] . "</option>";
}
?>
</select>
<input type="submit" value="Buscar" />

<div style="margin-top: 10px; margin-left: 50px;">
<input type="checkbox" value="1" name="exibe_status" <?php
if ($_GET['exibe_status'] == "1") { echo "checked"; }
?>/>
<font style="font-size: 12px;">Exibir detalhes da busca (processo mais demorado)</font>
</div>
</div>
</form>


<?php

if ($busca) {
    foreach ($busca_quebra as $teste_uma) { if (strlen($teste_uma) >= $tamanho_min) { $ok = 1; } }
    if (@$ok != 1) {
        echo "<div style=\"margin-left: 30px;\"><strong>Atenção!</strong><br />";
        echo "A(s) palavra(s) pesquisada(s) não atinge(m) o tamanho mínimo permitido!</div>";
        echo $creditos . "</body>\n</html>\n";
        exit;  // sai do script caso nenhuma palavra atinja o tamanho mínimo permitido
    }


ini_set("memory_limit", 100000000);

// varre todos os subdiretórios
$x = count($diretorio)-1;
for ($y = "0"; isset($diretorio[$y]); $y++) {
    if ($dh = @opendir($diretorio[$y])) {
        while (($file = readdir($dh)) !== false) {
           if (is_dir("$diretorio[$y]/$file") && ($file != ".") && ($file != "..")) {
                $x++;
                $diretorio[$x] = $diretorio[$y] . "/" . $file;
            }
        }
        closedir($dh);
    }
}
clearstatcache();

$tempo_i = getmicrotime();


echo "<hr size=\"2\" width=\"720\" align=\"left\" color=\"#aaaaaa\" noshade=\"true\" style=\"margin-bottom: 10px;\">";
echo "<br /><br /><br /><br /><br /><br />";
if ($_GET['exibe_status'] == "1") { echo "<br />\n\n"; }


$procurou = "0";
$achou = "0";
$achados[0] = NULL;

for ($i = 0; isset($diretorio[$i]); $i++) {  // varre cada diretório encontrado

if (($dh = @opendir($diretorio[$i])) && (!in_array($diretorio[$i], $excluir_dir))) {
    while (($arquivo = readdir($dh)) !== false) {
        $arq_quebra = explode(".", $arquivo);
        $ext = strtolower(end($arq_quebra));

        // sai do laço "while" caso tenha passado do limite de exibição, otimizando o tempo no modo de busca sem detalhes
        if (($_GET['exibe_status'] != "1") && ($achou > $achou_inicial + $limite)) { break; }

        if (($arquivo != '.') && ($arquivo != '..') && ($ext != $arq_quebra[0]) && ($ext != false)) {

            if (($ext == "htm") || ($ext == "html") || ($ext == "php") || ($ext == "php3") ||
                ($ext == "asp") || ($ext == "pdf") || ($ext == "txt")) {
                $procurou++;  //  determina o número de arquivos pesquisados

                $abre = file_get_contents("$diretorio[$i]/$arquivo");

                $cam_quebra = explode("/", $_SERVER['PHP_SELF']); array_pop($cam_quebra); array_pop($cam_quebra);
                $cam_junta = implode("/", $cam_quebra);
                $caminho = "http://" . $_SERVER['HTTP_HOST'];
                $caminho .= $cam_junta;
                $caminho .= "/" . $diretorio[$i];
                $caminho .= "/" . $arquivo;
                if (!ereg("\.\./", $caminho)) { $caminho = ereg_replace("\./", "", $caminho); }

                $abre = limpa_tag_scripts($abre);
                if (eregi("<title>", $abre)) {
                    $titulo = preg_replace("'.*<title>|</title>.*'si", "", $abre);
                } else {
                    $titulo = $caminho;
                }
                if (empty($titulo)) { $titulo = "(Página sem título)"; }
                $abre = strip_tags($abre);
                $abre = unhtmlentities($abre);
                $busca_quebra = explode(" ", $busca);

foreach ($busca_quebra as $busca_uma) {

                if (strlen($busca_uma) < $tamanho_min) { continue; }
                if ((eregi($busca_uma, $abre) || eregi($busca_uma, $arquivo)) && !in_array("$diretorio[$i]/$arquivo", $achados)) {
                    // determina o número de ocorrências e cria um array para não repetir resultados
                    $achou++;
                    $achados[$achou-1] = "$diretorio[$i]/$arquivo";

                    // sai do laço se estiver fora do intervalo de exibição pra economizar tempo
                    if (($achou < $achou_inicial) || ($achou > $achou_inicial + $limite)) { continue; }

// determina até onde irá a exibição dos resultados
if (($achou >= $achou_inicial) && ($achou < $achou_inicial + $limite)) {

                    $texto = limpa($abre);
                    $tamanho = strlen($texto);
                    $pos = strpos(strtolower($texto), strtolower($busca_uma));
                    if ($pos > 100) { $texto = substr($texto, $pos-100, 300); }
                    else if ($pos <= 100 && $pos > 50) { $texto = substr($texto, $pos-50, 300); }
                    else { $texto = substr($texto, 0, 300); }

/*  Alternativa:        $texto = preg_replace("/(^.{0,300})(\W+.*$)/", "\${1}", $texto);   */

                    $texto_quebra = explode(" ", $texto);
                    if ($pos > "0") { array_shift($texto_quebra); }
                    if ($tamanho > "300") { array_pop($texto_quebra); }
                    $texto = implode(" ", $texto_quebra);

                    if ($pos > "0") { $texto = "... " . $texto;}
                    if ($tamanho > 300) { $texto = $texto . " ..."; }

                    echo "<strong>" . $achou . ". <a href=\"" . $diretorio[$i] . "/" . $arquivo . "\">";
                    echo $titulo . "</a></strong><hr class=\"linha\">\n";
                    echo "<div class=\"resultado\">\n";

                    foreach ($busca_quebra as $destaca) {
                        if (strlen($destaca) < $tamanho_min) { continue; }
                        $texto = preg_replace("/($destaca)/si", "<b>\\1</b>", $texto);
                    }
                    echo $texto;
                    if (empty($texto)) { echo "(Página sem descrição)"; }

                    echo "<div style=\"margin-top: 3px;\"><a href=\"" . $diretorio[$i] . "/" . $arquivo . "\">";
                    echo $caminho . "</a></div>\n\n</div>\n\n";

} // if $achou > $limite
                }  // if eregi()
flush();
clearstatcache();
} // foreach
            }  // if ($ext)
        }
        flush();
        clearstatcache();
    }  //  while
    flush();
    clearstatcache();
    closedir($dh);
}
flush();
unset($diretorio[$i]);
clearstatcache();
}  // fecha laço "for"


$tempo_f = getmicrotime();
$tempo_total = number_format($tempo_f-$tempo_i, 2, ",", ".");


$anterior = $achou_inicial - $limite;
$proximo = $achou_inicial + $limite;

$url_anterior = $_SERVER['PHP_SELF'] . "?busca=" . urlencode(@$_GET['busca']) . "&achou_inicial=" . $anterior;
$url_anterior .= "&secao=" . @$_GET['secao'] . "&exibe_status=" . $_GET['exibe_status'];

$url_proximo = $_SERVER['PHP_SELF'] . "?busca=" . urlencode(@$_GET['busca']) . "&achou_inicial=" . $proximo;
$url_proximo .= "&secao=" . @$_GET['secao'] . "&exibe_status=" . $_GET['exibe_status'];

if (@$achou > "0") {
    echo "\n<br />\n<div align=\"center\" style=\"width: 730px\">\n<span style=\"color: #999999;\">\n";
    if ($achou_inicial > 1) { echo "<a href=\"" . $url_anterior . "\">"; }
    echo "<strong><< Anterior</strong></a> | ";
    if ($achou > $proximo) { echo "<a href=\"" . $url_proximo . "\">"; }
    echo "<strong>Próximo >></strong></a>\n</span></div>\n\n";
}

echo $creditos;

// Início do layer
if ($_GET['exibe_status'] == "1") {
    echo "\n\n<div style=\"position: absolute; top: 180px; left: 20px;\">";
} else {
    echo "\n\n<div style=\"position: absolute; top: 160px; left: 20px;\">";
}
echo "<table border=\"0\" width=\"720\ cellpadding=\"0\" cellspacing=\"0\">
<tr><td valign=\"top\" width=\"430\"> ";

if ($_GET['exibe_status'] == "1") {
if (@$achou > "0") {
    if (@$achou == "1") { echo "Foi encontrada <strong>" . $achou . "</strong> ocorrência "; }
    else { echo "Foram encontradas <strong>" . $achou . "</strong> ocorrências "; }
    echo "para o(s) termo(s) \"<strong>" . $busca . "</strong>\"</div>";
}
} else { echo " "; }  // fecha if "exibe status"

if (@$achou == "0") {
    echo "<br />Não houve ocorrências para o(s) termo(s) \"<strong>" . $busca . "</strong>\"";
}

echo "</td><td align=\"right\" width=\"300\">";
if ($_GET['exibe_status'] == "1") {
    echo "<em>Total de " . $procurou . " arquivos pesquisados </em>";
}
echo "<br /><em>Tempo: " . $tempo_total . " segundos</em>";
echo "</td></tr>\n<tr><td colspan=\"2\" align=\"center\" style=\"padding-top: 10px;\">";

if (@$achou > "0") {
    echo "\n<br />\n\n<span style=\"color: #999999;\">\n";
    if ($achou_inicial > 1) { echo "<a href=\"" . $url_anterior . "\">"; }
    echo "<strong><< Anterior</strong></a> | ";
    if ($achou > $proximo) { echo "<a href=\"" . $url_proximo . "\">"; }
    echo "<strong>Próximo >></strong></a>\n</span>\n\n</td></tr>\n</table>\n</div>\n\n";
}


}  // fecha "if ($busca)"

clearstatcache();

if (!$busca) { echo $creditos; }

?>

</body>
</html>

--------------------------------

POW quem puder ajudar agradeço valeu

Editado por leanhils
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...