Suchfunktion - bestimmte Dateien nicht auslesen

  • Ersteller Sascha | Designer
  • Erstellt am
S

Sascha | Designer

Guest
hallo leute.
ich baue gerade eine website mit 3spalten.
der header und footer werden per include_once in die index.php geladen.
mein suchformular ist in der index.php enthalten.

wenn ich nun was suche passiert folgendes.
ich bekomme eine liste mit den suchergebnissen.
und da ich "zufällig" einen begriff gewählt habe, der im content, header und im footer vorkommt, kann
ich auf die header.php und auf die footer.php zugreifen. DAS MUSS VERHINDERT WERDEN!!!
Aber wie?

hier ist meine code:
CODE
<form class=formbox action="searchresult2.php" method="post">

<input type="text" name="search" id="searchForm" value="--Ihr Suchbegriff--">
<input type="image" src="img/submit.jpg" name="submit">

</form>

<?php

//Welcher Dateityp soll durchsucht werden?
$dateityp = ".php"; //= alle HTML-Dateien (.htm, .html, .shtml)
//Wenn alternativ PHP-Dateien durchsucht werden sollen, geben Sie unter $dateityp .php ein.

$exceptions = array('header.php','footer.php');
while($file = readdir($verz));
{
if($file != "." && $file != ".." && !in_array($file, $exceptions) && !is_dir($file))&#59;
}

if(empty($search)) {$search=$_POST[search];}
if(strlen($search) < "3")
{echo "Geben Sie bitte einen Suchbegriff von mindestens 3 Buchstaben Länge ein.";exit;}
$found = "0";
$verz = opendir('.');
while($file = readdir($verz))
{
if($file != "." && $file != ".." && !is_dir($file))
{
$filetype = stristr($file, $dateityp);
if(!empty($filetype))
{
$string = file_get_contents($file);
$string = html_entity_decode($string);
$string = strtolower($string);
$search = strtolower($search);
$test = substr_count($string, $search);
if(!empty($test))
{
$string = ereg_replace("\n", "", $string);
$string = strip_tags($string);

$pieces = explode($search, $string);
$piece1 = substr($pieces[0], -50);
$piece1 = explode(" ", $piece1);
array_shift($piece1);
$piece1 = implode(" ", $piece1);
$piece2 = substr($pieces[1], 0, 100);
$piece2 = explode(" ", $piece2);
array_pop($piece2);
$piece2 = implode(" ", $piece2);
$rest = "$piece1<b>$search</b>$piece2";
$array .= "<b>$test Fundstelle/n</b> <br>$rest <br><a class=\"content\" href=\"$file\" target=\"_self\" class=\"link\"> $file</a><br><br>\n";
$found ++;
}}}}
closedir($verz);
if($found != "0")
{
echo "Es wurden <strong>$found</strong> Treffer gefunden sortiert nach der Häufigkeit des Vorkommens des Suchbegriffs:<br><br>";
$array = explode("\n", $array);
natsort($array);
reset($array);
$array = array_reverse($array);
while(list($line_num, $line) = each($array))
{
$ausgabe .= "$line\n";
}
print $ausgabe;
}
if($found == "0")
{ echo "Es wurden leider keine Übereinstimmungen mit dem eingegebenen Suchbegriff gefunden !";}

?>



 
QUOTE (Sascha | Designer @ Fr 2.10.2009, 23:48)wenn ich nun was suche passiert folgendes.
ich bekomme eine liste mit den suchergebnissen.
und da ich "zufällig" einen begriff gewählt habe, der im content, header und im footer vorkommt, kann
ich auf die header.php und auf die footer.php zugreifen. DAS MUSS VERHINDERT WERDEN!!!
Aber wie?

hier ist meine code:

Wenn das 'dein Code' ist, dann weißt Du doch auch die Antwort.

Da ist doch schon eine $exceptions - Liste definiert.

Wenn die nicht greift, stellt sich die Frage, warum das so ist, warum die Erkennung


QUOTE !in_array($file, $exceptions)


nicht funktioniert.

Eventuell wird $file mit dem gesamten Pfad ausgegeben - ich nutze kein PHP, kann da bloß raten. Oder die Dateinamen werden mit Groß/Kleinschreibung zurückgegeben, in der Liste ist alles klein geschrieben (keine Ahnung, ob PHP das binär oder mit Ignorieren Groß/Klein vergleicht).
 
Zurück
Oben