kostenloser Webspace werbefrei: lima-city


PHP Dateinamensucher

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    l**r

    Hallo Leute,
    Ich habe daf?r dieses Script genommen, allerdings klappt es nicht, dass er mir folgene tag/fehler">Fehlermeldung anzeigt, wenn ich auf die suchen.php klicke:

    Parse error: parse error, unexpected '<' in /home/webpages/lima-city/laar/html/search.php on line 167

    Und egal was ich auch eingebe er findet nie was.
    ?brigens habe ich das Verzeichniss so gelassen, wie im Beispiel:

    // Hier werden die zu durchsuchenden Verzeichnisse festgelegt
    // Beispiel: $dirs = array('./','./subdir/','./subdir/subsub/');

    BSo m?ssten doch die Unterordner durchsucht werden oder nicht ?

    Beitrag ge?ndert am 12.04.2006 03:48 von laar
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. c*********c

    Ich gehe davon aus, das Script stammt von diesem Tutorial -> http://www.lima-city.de/tutorials.php?m=show&id=1452

    Wenn dem so ist, musst Du folgenden Code-Abschnitt

    // Wenn sie eine E-Mailbenachrichtigung eingestellt haben, wird dieser Teil an sie gesendet
    if($mail == true && $search != $value) {
    mail("$adminaddress","Suche auf $seite","Folgender Begriff wurde
    soeben auf der Seite $seite gesucht: \n$search\nTreffer: $found");<p><hr><p>
    Um die E-Mailbenachrichtigung auszuschalten, setzen sie bitte $mail auf false
    }


    durch diesen ersetzen:

    // Wenn sie eine E-Mailbenachrichtigung eingestellt haben, wird dieser Teil an sie gesendet
    if($mail == true && $search != $value) {
    mail("$adminaddress","Suche auf $seite","Folgender Begriff wurde
    soeben auf der Seite $seite gesucht: \n$search\nTreffer: $found\n<p><hr><p>
    Um die E-Mailbenachrichtigung auszuschalten, setzen sie bitte $mail auf false");
    }


    Die Ursache f?r den Fehler ist darauf zur?ckzuf?hren, dass ein Teil der Mail-Nachricht f?lschlicherweise nicht mitgesendet wird (sprich: sich nicht im mail()-Befehl befindet).



    //edit: Code korrigiert :P *sich_sch?m*

    Beitrag ge?ndert am 12.04.2006 14:03 von compactdisc

  4. [...]
    // Wenn sie eine E-Mailbenachrichtigung eingestellt haben, wird dieser Teil an sie gesendet
    if($mail == true && $search != $value) {
    mail("$adminaddress","Suche auf $seite","Folgender Begriff wurde
    soeben auf der Seite $seite gesucht: \n$search\nTreffer: $found\n<p><hr><p>
    Um die E-Mailbenachrichtigung auszuschalten, setzen sie bitte $mail auf false
    }


    Die Ursache f?r den Fehler ist darauf zur?ckzuf?hren, dass ein Teil der Mail-Nachricht f?lschlicherweise nicht mitgesendet wird (sprich: sich nicht im mail()-Befehl befindet).


    Beitrag ge?ndert am 12.04.2006 09:50 von compactdisc

    Du hast leider auch einen Fehler. ;-)
    Der Parameter String wird nicht geschlossen und das Semikolon hinter "mail ()" fehlt. Au?erdem hast du anstatt der schlie?endens Klammer eine geschweifte Klammer geschrieben. Pfui compactdisc, programmier mal lieber wieder was mit PHP anstatt mit C++. :P

    // Wenn sie eine E-Mailbenachrichtigung ingestellt haben, wird dieser Teil an sie gesendet
    
    if($mail == true && $search != $value) {
    mail("$adminaddress","Suche auf $seite","Folgender Begriff wurde
    soeben auf der Seite $seite gesucht: \n$search\nTreffer: $found\n<p><hr><p>
    Um die E-Mailbenachrichtigung auszuschalten, setzen sie bitte $mail auf false
    ");


    MfG Lucas
  5. Autor dieses Themas

    l**r

    Oh hatte vergessen von wo ich es habe ( trotzdem gut geraten :biggrin: ).

    Also ich habe es ausprobiert, aber leider habe ich nun andere Fehler.

    Notice: Undefined variable: search in /home/webpages/lima-city/laar/html/uploadervision/search.php on line 16
    und
    Notice: Undefined variable: wdw in /home/webpages/lima-city/laar/html/uploadervision/search.php on line 232
    Ich m?chte ja das der mail nicht geschickt, aslo habe ich true durch false ersetzt, wie beschriben.
    Der Fehler trat aber auch schon vorher auf.
    +++++++++++++++++++++++++++++++++++++++++++++++++
    search.php

    <!--Diese Datei als search.php speichern//-->
    <?php

    ob_start();

    $mtime = microtime(); $mtime = explode( ' ', $mtime); $mtime = $mtime[1] + $mtime[0];
    $such_start = $mtime;

    if(!function_exists('file_get_contents')) {
    echo "Dieses Script erfordert PHP Version 4.3.0 oder h?her!";
    exit; //Gibt eine Fehlermeldung zur?ck, wenn auf deinem Server kein PHP installiert ist
    }
    include("search_config.php");

    //Falls kein Suchbegriff gefunden wird
    $noresult = "Zu ihrem Suchbegriff <b><em>\"$search\"</em>
    </b> wurde leider keine passende Datei gefunden.<br>
    Versuchen sie es bitte erneut";
    $minlength = "Geben Sie bitte einen Suchbegriff von mindestens ".$length."
    Buchstaben L?nge ein.";
    $searchtip = "<br /><br /><strong>Suchtips:</strong></p><ul>
    <li>Die Eingabe von Platzhalterzeichen (*) ist nicht erforderlich.</li>
    <li>Wenn Sie Ihre Suche auf ganze W?rter einschr?nken wollen, f?gen
    Sie vor und nach dem Suchbegriff jeweils einen Leerschlag ein.</li></ul>";
    if(isset($_POST["search"])) {
    if ($_POST["search"] != "") {
    $search = $_POST["search"];
    $search = htmlspecialchars($search);
    $search = str_replace('*','',$search);
    }

    if(empty($search)) {$search=$_POST[search];}

    if(strlen($search) >= $length && $search != $value) {

    $array = "";
    $ausgabe ="";
    $found = "0";
    $n = "";
    $e = "";
    $sorthinweis = "";


    echo "Sie suchten nach dem Begriff <em>\"$search\"</em> <br />\n";

    // die Funktion zum Durchsuchen des Verzeichnisses:
    function tree($ordner, $sub = true) {
    global $ergeb;
    $handle = opendir($ordner);
    while (false !== ($file = readdir ($handle))) {
    if($file != "." && $file != ".." && is_dir($ordner."/".$file)) {
    $compl = $ordner."/".$file."/";
    //echo $compl."<br>";
    $ergeb = $ergeb.",".$compl;
    tree($ordner."/".$file, TRUE);
    }
    }
    closedir($handle);
    }

    if ($alledirs) {
    tree(".");
    $ergeb = "./".$ergeb;
    $dirs = explode (",", $ergeb);
    }

    foreach($dirs as $dir) {
    $verz = opendir($dir);

    while($file = readdir($verz)) {

    // Mit dieser Funktion schliessen sie einzelne Dateien von der Suche aus
    if(!in_array($file,$exclude_files) && preg_match("=(\.$dat_type)$=",$file)) {

    $string = file_get_contents($dir.$file);
    $string = html_entity_decode($string);

    foreach($exclude_strings as $k) $string = str_replace($k,"",$string);


    //Die nachfolgenden Zeilen lesen die Meta-Tags der gefunden Dokumente aus
    $del_start = '<meta name="description" content="';
    $del_end = '"';

    $pos=strpos(strtolower($string),$del_start) + strlen($del_start);
    $substring_rest = substr($string,$pos);
    $end_pos=strpos($substring_rest,$del_end);
    $description = substr($substring_rest,0,$end_pos);

    //Die kommenden Zeilen werten die Keywordtags aus
    $del_start = '<meta name="keywords" content="';
    $del_end = '"';

    $pos=strpos(strtolower($string),$del_start) + strlen($del_start);
    $substring_rest = substr($string,$pos);
    $end_pos=strpos($substring_rest,$del_end);
    $keywords = substr($substring_rest,0,$end_pos);


    // Diese Zeile wertet den <title>-tag aus; Der Titel wird im Suchergebnis angezeigt
    $del_start = '<title>';
    $del_end = '</title>';

    $pos=strpos($string,$del_start) + strlen($del_start);
    $substring_rest = substr($string,$pos);
    $end_pos=strpos($substring_rest,$del_end);
    $titel = substr($substring_rest,0,$end_pos);

    // Die kommenden Zeilen zeigen die Metatags der gefunden Dokumente an
    if ($key) $string=$string.$keywords;
    if ($desc) $string=$string.$description;
    if ($tit) $string=$string.$titel;

    if ($limit_start != "") {
    $pos=strpos($string,$limit_start) + strlen($limit_start);
    $substring_rest = substr($string,$pos);
    }
    else {
    $substring_rest = $string;
    }

    if ($limit_end != "") {
    $end_pos=strpos($substring_rest,$limit_end);
    $string = substr($substring_rest,0,$end_pos);
    }
    else {
    $string = $substring_rest;
    }


    //Inhalt von tags auswerten:
    if ($tags==false) $string = strip_tags($string);

    $string = ereg_replace("\n", "", $string);

    // jetzt die Ausgabe des Kontext vorbereiten:
    $stringlow = strtolower($string);
    $searchlow = strtolower($search);
    $test = substr_count($stringlow, $searchlow);

    if(!empty($test)) {

    $pos=strpos($stringlow,$searchlow);
    $piece1 = strip_tags(substr($string,$pos-$vor,$vor));
    $piece2 = strip_tags(substr($string,$pos+strlen($search),$nach));
    $rest = "$piece1<strong>$search</strong>$piece2";
    if($vor=="0" && $nach=="0") $rest = "";

    if($filename) $titel = $file;

    if($titel == "") $titel = $file;

    if($titel != "") {
    //$array .= '['.$test.'] <a href="'.$dir.$file.'">'.$titel.'</a><br />'.$rest.'<br /><br />';
    $array .= "[".$test."] <a href=\"".$dir.$file."\">".$titel."</a><br />".$rest."<br /><br />\n";
    $found ++;

    $link = $file; //Dieser Link wird im Suchergebnis angezeigt
    }
    }
    }
    }
    closedir($verz);
    }
    // Wenn sie eine E-Mailbenachrichtigung ingestellt haben, wird dieser Teil an sie gesendet
    if($mail == false && $search != $value) {
    mail("$adminaddress","Suche auf $seite","Folgender Begriff wurde
    soeben auf der Seite $seite gesucht: \n$search\nTreffer: $found\n<p><hr><p>
    Um die E-Mailbenachrichtigung auszuschalten, setzen sie bitte $mail auf false
    ");
    }

    // Die folgenden Zeilen schreiben ein ein Logfile
    $today = date("d.m. H:i ");
    //$nl = $today.$_POST["search"] ;
    $nl = html_entity_decode($today.$_POST["search"])."(".$found.")\n";

    if($fp = fopen('verwendete_suchbegriffe.txt', 'a+')) {
    // falls die Logdatei nicht existiert, wird versucht, sie anzulegen.
    flock($fp, LOCK_EX | LOCK_NB) or die("Die Logdatei kann derzeit nicht ver?ndert werden.");
    //flock($fp,2) or die("Die Logdatei kann derzeit nicht ver?ndert werden");
    fwrite($fp, $nl);
    fclose($fp);
    }
    //Bei keinen Suchresultaten:
    if($found == "0") {
    echo $noresult;
    }
    //Falls eine Datei - direkt zu ihr
    if($found == "1" && $jump == true) {
    header("Location: http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])."/".$link);
    exit;
    }
    //Falls mehrere Dateien gefunden wurden
    if($found > "1") {
    $n = "n"; $e = "e";
    if($treffer) {
    $sorthinweis = "<br />Sortiert nach [Anzahl der Treffer pro Dokument].";
    }
    }

    if($found >= "1") {
    echo "Es wurde$n <b><strong>$found</strong></b> Dokument$e gefunden.$sorthinweis";
    echo "<br /><br />";

    $array = explode("\n", $array);
    natsort($array);
    reset($array);
    $array = array_reverse($array);

    while(list($line_num, $line) = each($array)) {
    if($treffer) {
    $ausgabe .= "$line\n";
    } else {
    $ausgabe .= substr(strstr($line, '] '),2)."\n";
    }
    }
    print $ausgabe;
    }
    }

    else {echo $minlength;}
    }
    else {echo $minlength;}
    echo $searchtip;

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

    $such_ende = $mtime;
    $time_gesamt = $such_ende - $such_start;
    if(isset($found)) {
    echo "<div id='searchfooter'><p>Suche in ".number_format($time_gesamt,2,',','.')." Sekunden ausgef?hrt</p></div>";
    } else {
    echo "<div id='searchfooter'><p>Suchscript $wdw</p></div>";
    }
    ?>
    ++++++++++++++++++++++++++++++++++++++++++++++++++++
    suchen.php

    <!--Diese Datei als suchen.php abspeichern, sie liefert die Suchergebnisse//-->
    <html>

    <title>Suchergebnisse</title>

    <?php ob_start(); ?>

    <a>Suchergebnisse</a>
    <!--Eingabeformular//-->
    <form id="search" method="post" action="suchen.php">
    <p><label for="suchbegriff">Im Projekt suchen:</label>
    <input type="text" name="search" id="suchbegriff" value="Suchbegriff" size="13" title=" Suchbegriff hier eingeben " onblur="if(this.value=='')this.value='Suchbegriff';" onfocus="if(this.value=='Suchbegriff')this.value='';" />
    <input type="submit" value="Suchen" />
    </p>
    </form>
    <div id="output">
    <p><?php include("search.php");?> <!--include Befehl; ?ffnet die Suchergebnisse//-->
    </div>

    <!--
    <?php
    # --><p>Dein Server unterst?tzt kein PHP!</p><!--
    ?>
    -->

    </html>
    +++++++++++++++++++++++++++++++++++++++++++
    suchmaske.php

    !--Diese Datei als suchmaske.php speichern//-->
    <html>

    <!--Diese Datei ist lediglich als Suchmaske gedacht//-->

    <title>Dateisuche</title>

    <!--Suchformular//-->
    <center><form id="search" method="post" action="suchen.php">
    <p><label for="suchbegriff">Suchbegriff:</label><p>
    <input type="text" name="search" id="suchbegriff" value="Suchbegriff" size="13" title=" Suchbegriff hier eingeben "
    onblur="if(this.value=='')this.value='Suchbegriff';" onfocus="if(this.value=='Suchbegriff')this.value='';" /><br>
    <input type="submit" value="Suchen" />
    </p>
    </form></center>



    </html>
    ++++++++++++++++++++++++++++++++++++++++++++++
    search_config

    <?php
    //In dieser Datei werden die Suchoptionen bestimmt

    error_reporting(E_ALL);

    // Falls sie eine E-Mailbenachrichtigung w?nschen, die nachfolgenden Zeilen ?ndern

    $mail = false;
    // true f?r E-Mail Benachrichtigung, false, falls keine E-Mail Benachrichtigung gew?nscht.

    $adminaddress = "ihre@email.de";
    // an diese Adresse geht die E-Mail

    $seite = "Suchbegriffe";
    // wird im E-Mail Betreff und Text angegeben

    //Von hier an sind optionale Einstellungen zu t?tigen

    // Die unten angegeben Dateiendungen werden von der Suche ber?cksichtigt
    // Dateiendungen m?ssen durch Pipe "|" getrennt werden
    $dat_type = "jpg|bmp|gif|tga|png";

    $value = "Suchbegriff";

    // Legt die Mindestl?nge des Suchbegriffes fest
    $length = 5;

    // Hier werden die zu durchsuchenden Verzeichnisse festgelegt
    // Beispiel: $dirs = array('./','./subdir/','./subdir/subsub/');

    $alledirs = true;
    // Falls du nur das aktuelle Verzeichnis durchsuchen lassen m?chtest,
    //setze hier false (Verringert die Suchzeit)


    // Diese Dateien werden von der Suche ausgeschlossen:
    $exclude_files = array('search.php','search_config.php','searchlog.txt','suchmaske.php');
    // Wichtig: Hier m?ssen die Dateien dieses Scripts sein!!!


    // Hier wird festegelegt ob in den Suchergebnissen der Dateiname
    //oder der Dateititel ausgegeben wird
    $filename = true;
    //true, wenn immer filename ausgegeben werden soll.
    //false, wenn title-tag ausgegeben werden soll.
    //wenn die Datei kein title-tag oder ein leeres title-tag enth?lt,
    //wird in jedem Fall filename ausgegeben.

    // Hier wird festgelegt, welche Tags bei der Suche ber?cksichtig werden sollen

    $key = true;
    //true, wenn das meta tag keywords durchsucht werden soll, andernfalls false

    $desc = true;
    //true, wenn das meta tag description durchsucht werden soll, andernfalls false

    $tit = true;
    //true, wenn das meta tag title durchsucht werden soll, andernfalls false

    $tags = true;
    //true, wenn alle tags durchsucht werden sollen, andernfalls false

    // Erst ab dem ersten vorkommen dieses Strings werden die Dateien durchsucht...
    // damit lassen sich z.B. header, Men?s, include files etc. recht gut ausschlie?en
    // hier bieten sich z.B an: '<h1> oder '<body>'
    // wenn der $limit_start nicht im Dokument vorkommt,
    // wird das Dokument von Anfang an durchsucht!
    $limit_start = "";

    // ... bis zu diesem String durchsuchen
    // damit lassen sich z.B. footer ausschlie?en
    $limit_end = "";

    // unerw?nschte Strings von der Suche ausschlie?en
    $exclude_strings = array('Nichtfinden','externer Link:');


    //Von hier an wird das Ausgabeformat des Suchergebnisses bestimmt
    // so viele Buchstaben vor dem Treffer anzeigen:
    $vor = 20;

    // so viele Buchstaben nach dem Treffer anzeigen:
    $nach = 20;

    // wenn sowohl $vor als auch $nach auf 0 gesetzt wird, wird KEIN Kontext angezeigt,
    // sondern nur der Link zur Datei mit dem Treffer

    $jump = false; // Wenn hier "true" steht wird bei nur einem Suchergebnis dieses direkt angezeigt

    // Anzahl der Treffer anzeigen:
    $treffer = true; // $treffer = false; einsetzen, wenn Anzahl der Treffer nicht angezeigt werden soll.


    // Anmerkung: Tags, die in <> eingeschlossen sind, werden NICHT durchsucht.
    // dies gilt auch f?r html Kommentare, die mit <!-- Kommentare --> ausgezeichnet sind.


    ?>
    _______________________________________________

    Vielleicht findet Ihr ja noch mehr Fehler.

    Danke schon mal La ?r
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!