Suchfunktion innerhalb der Website

mediaroad

Mitglied
Durch das Suchen bei google*schleichwerbung* habe ich auf einer Seite den Quellcode für die Suchfunktion innerhalb einer Website gefunden.
Dieser funktioniert zwar, aber wenn man nur auf den Suchen Button klickt (auf der index.php) ohne eine Such-Eingabe zu machen, erscheint die restliche Website der suche.php (nach dem eingefügten Quellcode) nicht mehr.
Es wäre nett, wenn einer mir helfen könnte und den Quellcode nocheinmal durchzugehen, wo eventuell der Fehler liegen könnte.
Vielen Dank!

PHP:
<?php
$dateityp = ".php";

if(empty($search)) {$search=$_POST[search];}
if(strlen($search) < "3")
{echo "Geben Sie bitte einen Suchbegriff von mindestens 3 Buchstaben L&auml;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 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&auml;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 !";}
?>
 
Hi

Was mir aufgefallen ist, ist folgendes:

PHP:
{echo "Geben Sie bitte einen Suchbegriff von mindestens 3 Buchstaben L&auml;nge ein.";exit;}

Wenn du da das exit; wegmachst, hält das Script nicht mehr an.
 
Hi,

naja ist ja ganz klar

PHP:
if (strlen($search) < "3")
{
    echo "Geben Sie bitte einen Suchbegriff von mindestens 3 Buchstaben L&auml;nge ein.";
    exit;
}

wenn der Suchbegriff kleiner 3 Zeichen ist dann bricht er das Script ab.

Gruß
 
Ich habe schon versucht das "exit" zu entfernen.
Die Seite wurde auch komplett angezeigt, doch dann kam ein Fehler in der Zeile

$test = substr_count($string, $search);

Jetzt wäre die Frage was da schief läuft?
 
Dann nimm mal den Code

PHP:
<?php
$dateityp = ".php";

if (empty($search))
{
    $search = $_POST[search];
}
if (strlen($search) < "3")
{
    echo "Geben Sie bitte einen Suchbegriff von mindestens 3 Buchstaben L&auml;nge ein.";

}else{


    $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 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&auml;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 !";
    }
}
?>
 
Vielen Dank!....das funktioniert
Jetzt habe ich nur noch ein kleines Problem.
Und zwar stört mich ein wenig, dass wenn man einen Begriff sucht und auch Ergebnisse angezeigt werden, erscheint immer die direkte Seite

z.b.
7 Fundstelle/n
gmbh - lexikon
>> lexikon.php

Wie bekomme ich dieses (blau markiert) weg
Das z.b. nur >>mehr steht oder was auch immer
 
Ein unformatierter Hyperlink wird nunmal in blau darstellt. Wenn du eine andere Farben hab willst musst du ihn per CSS formatieren.

Hier mal die abgeänderte Codestelle:
PHP:
$array .= "<b>$test Fundstelle/n</b> <br>$rest <br><a href=\"$file\" target=\"_self\" class=\"link\"> >> mehr</a><br><br>\n";
 
Zurück