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>
Pergunta
leanhils
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 -------------------
--------------------------------
POW quem puder ajudar agradeço valeu
Editado por leanhilsLink 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.