Ankündigung

Einklappen
Keine Ankündigung bisher.

Such Script ändern

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Such Script ändern

    Hallo,

    Ich möchte gerne, dass das Such Script alle Ordner und Subdomain Ordner dursucht. Nur wie mache ich das?

    PHP-Code:
    <?php
    /*
    Kleine Suchmaschine - Version vom: 11.02.2020
    Eine aktuelle Version finden Sie unter:
    https://werner-zenk.de/archiv/kleine-suchmaschine.php

    Diese Suchmaschine durchsucht die angegebenen Verzeichnisse
    und die darin enthaltenen Dateien nach einem Suchbegriff!
    Benötigt: PHP 5.6 oder höher.

    * Die zu durchsuchenden Dateien müssen über gültigen HTML-Code (<title>, <head>, <body>, …) verfügen.
    * Um Probleme bei der Darstellung der Zeichen zu vermeiden, sollten alle Dateien mit der Zeichenkodierung UTF-8 (ohne BOM)
    gespeichert sein, siehe: https://werner-zenk.de/tipps/schriftzeichen_richtig_darstellen.php
    * Lassen Sie nur Verzeichnisse oder Dateien durchsuchen die keine sensiblen Daten oder ungeschützte Scripte enthalten!
    */


    /* Die zu durchsuchenden Verzeichnisse eintragen,
    ausgehend vom aktuellen Verzeichnis in dem diese Datei liegt.
    Aktuelles Verzeichnis durchsuchen mit "./" */
    $verzeichnisse = [
    "./",
    "",
    "",
    ];

    /* Die Dateiendungen der Dateien die gefunden werden sollen.
    Dateiendungen mit Großbuchstaben (z. B.: .JPG) müssen extra
    eingetragen werden! */
    $dateiendungen = [
    ".gif",
    ".htm",
    ".html",
    ".jpg",
    ".mp3",
    ".pdf",
    ".php",
    ".png",
    ".txt",
    ".zip",
    ".mp4",
    ".jpeg",
    ];

    /* Die Dateiendungen der Dateien die von der oberen Liste "keine"
    Textdateien sind (es wird nur der Dateiname angezeigt) */
    $_dateiendungen = [
    ".gif",
    ".jpg",
    ".mp3",
    ".pdf",
    ".png",
    ".zip",
    ".mp4",
    ".jpeg",
    ];

    /* Vorzeichen bei Dateien die nicht durchsucht werden
    sollen zum Beispiel: _intern.htm, _log.php, _data.txt */
    $vorzeichen ""// _ (1 Zeichen)

    /* Einzelne Dateien die nicht durchsucht werden sollen */
    $nicht_durchsuchen = [
    "suche.txt",
    "",
    ];

    /* Länge des minimalen Suchbegriffs */
    $suchbegriff_min 1// 4

    /* Länge des maximalen Suchbegriffs */
    $suchbegriff_max 100// 100

    /* Maximale Anzeige (Begrenzung) der Ergebnisse */
    $suchergebnisse_max 50// 25

    /* Unerwünschte Eingaben von der Suche ausschließen */
    $ausschluss_eingaben = [
    "suche",
    "suche.txt",
    ];

    /* Automatische Weiterleitung wenn nur eine Datei
    gefunden wurde (ja/nein) */
    $auto_weiterleitung "nein"// nein

    /* HTML-Quellcode in den Suchergebnissen anzeigen (ja/nein)
    Achtung - Diese Option zeigt auch PHP-Quellcode an! */
    $html_quellcode "nein"// nein

    /* HTML-Tags bei der Eingabe zulassen (ja/nein) */
    $html_eingabe "ja"// nein

    /* Ziel in neuem Fenster/Tab öffnen.
    $target = "_blank"; Bei einem iFrame kann "_top" verwendet werden. */
    $target ""// leer!

    /* Tipps anzeigen wenn nichts gefunden wurde (ja/nein) */
    $tipps_anzeigen "ja"// ja

    /* Die Ergebnisse nach der letzten Dateiänderung sortieren (ja/nein).
    Bei "nein" erfolgt die Sortierung nach der Anzahl der gefundenen Ergebnisse. */
    $sortierung_dateiaenderung "nein"// nein

    /* Ergebnis der Suche (Suchanfragen und Trefferzahl) speichern (ja/nein) */
    $sucheingabe_speichern "ja"// nein

    /* Name der Datei in der die Sucheingaben gespeichert werden.
    Diese Datei wird beim ersten Eintrag autom. erzeugt! */
    $suchdatei "suche.txt"// suchbegriffe.txt

    /* Datei-Info - Letzte Änderung, Dateigröße und Pfad anzeigen (ja/nein) */
    $datei_info "nein"// ja

    /* Status-Info - Anzahl der durchsuchten Verzeichnisse
    und Dateien anzeigen (ja/nein) */
    $status_info "nein"// ja

    /* Länge des angezeigten Textausschnitts */
    $textausschnitt 100// 100 Zeichen

    /* Folgende Zeichen, Wörter oder HTML-Attribute
    aus demTextausschnitt ersetzen oder entfernen. */
    $entfernung_zeichen = [
    '' => '',
    ];

    /* Inhalt entfernen der zwischen den folgenden HTML-Tags liegt.
    Dieser Inhalt taucht dann nicht in den Suchergebnissen auf!
    Wenn z. B. der <nav>-Tag zusätzliche HTML-Attribute enthält, so müssen
    diese mit der vorherigen Option ($entfernung_zeichen) entfernt werden. */
    $entfernung_inhalt = [
    ""// <head></head>
    ""// <nav></nav>
    ""// <footer></footer>
    ];

    /* META-Tags, wenn diese vorhanden sind, anzeigen (ja/nein).
    Z. B. der Inhalt vom 'content'-Attribut: <meta name="description" content="Beschreibung der Seite."> */
    $metatags_anzeigen "ja"// nein

    /* META-Tags durchsuchen (ja/nein) */
    $metatags_durchsuchen "ja"// nein

    /* Diese META-Tags durchsuchen */
    $metatags_attribute = [
    "description",
    "keywords",
    "author",
    "date",
    "title",
    ];

    /* Zeitzone setzen (siehe: http://php.net/manual/de/timezones.europe.php) */
    date_default_timezone_set("Europe/Vienna");

    /* PHP-Fehlermeldungen anzeigen (0/E_ALL) */
    error_reporting(0); // 0


    // Formular anzeigen
    echo '<form method="get" action="" id="Form">
    <input type="search" name="suchbegriff" placeholder="Suchbegriff(e) eingeben" value="' 
    .
    (isset(
    $_GET["suchbegriff"]) ? htmlspecialchars($_GET["suchbegriff"], ENT_HTML5'UTF-8') : '') .
    '" size="35" minlength="' $suchbegriff_min '" maxlength="' $suchbegriff_max '" required="required" spellcheck="true">
    <input type="submit" name="Suchen" value="suchen">
    </form>
    '
    ;

    $suchergebnisse = [];
    $gefunden 0;
    $anzahl_dateien 0;
    $hyperlink "";
    $startzeit microtime(true);
    $url 'https' . (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == 'on' 's' '') . '://' $_SERVER["HTTP_HOST"] . rtrim(dirname($_SERVER["SCRIPT_NAME"])) . '/';
    array_push($nicht_durchsuchenbasename($_SERVER["SCRIPT_NAME"]));

    if (isset(
    $_GET["suche"]) ||
    isset(
    $_GET["suchbegriff"])) {
    $_GET["suchbegriff"] = rawurldecode($_GET["suchbegriff"]);
    $_GET["suchbegriff"] = str_replace([',''.'':'';''/''|'"\t"], ' 'preg_replace('/\s\s+/'' 'trim($_GET["suchbegriff"])));
    $_GET["suchbegriff"] = str_ireplace($ausschluss_eingaben""$_GET["suchbegriff"]);
    $_GET["suchbegriff"] = $html_eingabe != "ja" htmlspecialchars($_GET["suchbegriff"], ENT_HTML5'UTF-8') : strip_tags($_GET["suchbegriff"]);
    if (
    mb_strlen($_GET["suchbegriff"]) >= $suchbegriff_min &&
    mb_strlen($_GET["suchbegriff"]) <= $suchbegriff_max) {
    foreach (
    $verzeichnisse as $verzeichnis) {
    foreach (
    $dateiendungen as $dateiendung) {
    foreach (
    glob($verzeichnis "*" $dateiendung) as $datei) {
    $dateiname basename($datei);
    if (
    $dateiname[0] != $vorzeichen &&
    !
    in_array($dateiname$nicht_durchsuchen)) {
    $text = (!in_array($dateiendung$_dateiendungen)) ? file_get_contents($datei) : mb_substr(strtoupper($dateiendung), 1) . '-Datei';
    preg_match('/<title>(.*?)<\/title>/i'$text$treffer);
    $titel = isset($treffer[1]) ? $treffer[1] : $dateiname;
    unset(
    $treffer[1]);
    $anzahl_dateien++;
    $meta = ($metatags_anzeigen == "ja" && count(get_meta_tags($datei)) > 0) ? '<br><cite>➧ ' implode(' ➧ 'get_meta_tags($datei)) . '</cite>' '';
    if (
    $metatags_durchsuchen == "ja" && get_meta_tags($datei)) {
    $metatag_array get_meta_tags($datei);
    foreach (
    $metatags_attribute as $attribut) {
    if (isset(
    $metatag_array[$attribut])) $text .= ' [' $attribut ': ' $metatag_array[$attribut] . ']';
    }
    }
    $text strtr($text$entfernung_zeichen);
    foreach (
    $entfernung_inhalt as $htmltag) {
    $text preg_replace('/\<' $htmltag '\>(.*)\<\/' $htmltag '\>/Usi'''$text);
    }
    $text $html_quellcode != "nein" htmlspecialchars($textENT_HTML5'UTF-8') : strip_tags($text);
    $text strtr($text, ["&auml;"=>"ä""&ouml;"=>"ö""&uuml;"=>"ü""&Auml;"=>"Ä""&Ouml;"=>"Ö""&Uuml;"=>"Ü""&szlig;"=>"ß",
    "\r" =>" ""\n" =>" ""\t" =>" "" " =>" "" " =>" "]);
    $preg explode(" "$_GET["suchbegriff"]);
    if (
    strstr($_GET["suchbegriff"], "-")) $preg explode("-"$_GET["suchbegriff"]);
    $pregCount count($preg);
    $preg implode(".*?|"$preg);
    if ((
    mb_strstr($text$_GET["suchbegriff"]) or
    mb_stristr($text$_GET["suchbegriff"]) or
    mb_stristr($textmb_strtolower($_GET["suchbegriff"])) or
    mb_stristr($dateiname$_GET["suchbegriff"]) or
    preg_match("/" $preg "/i"$text)) &&
    $gefunden <= $suchergebnisse_max) {
    $gefunden++;
    $hyperlink $datei;
    $start mb_strpos(mb_strtolower($text), mb_strtolower($_GET["suchbegriff"])) - $textausschnitt;
    if (
    $start 0$start 0;
    $ende mb_strlen($_GET["suchbegriff"]) + $textausschnitt *2;
    $textteil mb_substr($text$start$ende);
    $textteil = (mb_strlen($textteil) < $textausschnitt mb_substr($textmb_strpos($text$_GET["suchbegriff"]), $textausschnitt) : $textteil);
    $treffer mb_substr_count(mb_strtolower($text), mb_strtolower($_GET["suchbegriff"]));
    $worte preg_split('/[\s]+/'$_GET["suchbegriff"]);
    foreach (
    $worte as $wort) {
    $textteil preg_replace('/(' $wort ')/i'"<mark>$1</mark>"$textteil);
    }
    $suchergebnisse[($sortierung_dateiaenderung == "ja" date("Y-m-d h:i:s"filemtime($datei)) : sprintf("%02s"$treffer) . sprintf("%02s"$gefunden))] =
    '<li><a href="' $datei '" target="' $target '">' $titel '</a> <small>(' . ($treffer == $treffer) . 'x)</small>' $meta '<br><samp>&hellip; ' $textteil ' &hellip;</samp>' .
    (
    $datei_info == "ja" '<br><var>Stand: ' date("d.m.Y h:i"filemtime($datei)) . ' Uhr - ' number_format((filesize($datei) / 1024), 1","".") . ' KB - ' $url $datei '</var>' '') .
    '</li>';
    }
    }
    }
    }
    }

    // Ergebnisse nach Anzahl der Treffer oder der letzten Dateiänderung sortieren
    krsort($suchergebnisse);
    $suchergebnisse implode($suchergebnisse);

    // Ergebnis der Suche speichern
    if ($sucheingabe_speichern == "ja") {
    $fh fopen($suchdatei"a+");
    fputs($fhdate("d.m.Y H:i") . '|' htmlspecialchars($_GET["suchbegriff"], ENT_HTML5'UTF-8') . '|' $gefunden "\n");
    fclose($fh);
    }

    // Keine Übereinstimmungen gefunden
    if ($gefunden == 0) {
    echo 
    '<p>Es wurden keine Übereinstimmungen mit dem eingegebenen Suchbegriff gefunden.</p>';

    // Tipps anzeigen
    if ($tipps_anzeigen == "ja") {
    echo 
    '<p>Tipp: Beachten Sie die Rechtschreibung';
    if (
    strtolower($_GET["suchbegriff"]) != $_GET["suchbegriff"]) {
    echo 
    ', verwenden Sie nur Kleinbuchstaben';
    }
    if (isset(
    $pregCount) &&
    $pregCount 1) {
    echo 
    ' oder verwenden Sie einen einzelnen Suchbegriff';
    }
    echo 
    '!</p>';
    }
    }
    else {

    // Automatische Weiterleitung
    if ($auto_weiterleitung == "ja" &&
    $gefunden == 1) {
    exit(
    '<h4>Datei wird geladen ...</h4>
    <p><a href="' 
    $hyperlink '">Gefundene Datei anzeigen</a></p>
    <script>window.location.href="' 
    $hyperlink '";</script>
    <meta http-equiv="refresh" content="0; URL=' 
    $hyperlink '">');
    }

    // Ausgabe der Suchergebnisse
    echo '<p>Es ' . ($gefunden == 'wurde '$gefunden ' Datei' 'wurden ' $gefunden ' Dateien') . ' gefunden:</p>' .
    '<ol>' $suchergebnisse '</ol>';
    }

    // Datei-Info anzeigen
    if ($status_info == "ja") {
    printf('<p>Durchsuchte Verzeichnisse: ' count($verzeichnisse) . ' - Dateien: ' $anzahl_dateien ' (in %.2f Sekunden)</p>'microtime(true) - $startzeit);
    }
    }

    // Länge des Suchbegriffs zu kurz/zu lang
    else {
    echo 
    '<p>Es sind ' . (mb_strlen($_GET["suchbegriff"]) < $suchbegriff_min ?
    'mindestens ' $suchbegriff_min ' Zeichen nötig' :
    'maximal ' $suchbegriff_max ' Zeichen erlaubt') . '!</p>';
    }
    }
    ?>
    AGW von AGW International

  • #2
    Kuck mal was her steht ?
    PHP-Code:
    /* Die zu durchsuchenden Verzeichnisse eintragen,
    ausgehend vom aktuellen Verzeichnis in dem diese Datei liegt.
    Aktuelles Verzeichnis durchsuchen mit "./" */
    $verzeichnisse = [
    "./",
    "",
    "",
    ]; 
    Jetzt mußt du nur wissen in welchen Ordner du das Script gespeichert hast ?
    Wenn es im Rootverzeichniss liegt sollte das gehen
    PHP-Code:
    $verzeichnisse = ["./"]; 
    Hast du das Script in einen oder zweiten Unterordnern gespeichert must du es so versuchen
    PHP-Code:
    $verzeichnisse = ["./../"];
    oder
    $verzeichnisse 
    = ["./../../"]; 
    Wo liegt den dein Script ( Ordner ) ?
    Mein (Basti1012) Forum und Chat

    Kommentar


    • #3
      Zitat von basti1012 Beitrag anzeigen
      Kuck mal was her steht ?
      PHP-Code:
      /* Die zu durchsuchenden Verzeichnisse eintragen,
      ausgehend vom aktuellen Verzeichnis in dem diese Datei liegt.
      Aktuelles Verzeichnis durchsuchen mit "./" */
      $verzeichnisse = [
      "./",
      "",
      "",
      ]; 
      Jetzt mußt du nur wissen in welchen Ordner du das Script gespeichert hast ?
      Wenn es im Rootverzeichniss liegt sollte das gehen
      PHP-Code:
      $verzeichnisse = ["./"]; 
      Hast du das Script in einen oder zweiten Unterordnern gespeichert must du es so versuchen
      PHP-Code:
      $verzeichnisse = ["./../"];
      oder
      $verzeichnisse 
      = ["./../../"]; 
      Wo liegt den dein Script ( Ordner ) ?
      Es liegt im Verzeichnis /root/htdocs/search
      Zuletzt geändert von AGW; 13.09.2020, 07:37.
      AGW von AGW International

      Kommentar


      • #4
        Wenn ich das richtig sehe mußt du im Script alle Ordner angeben die durchsucht werden sollen.
        Hatte das gerade bei mir getestet, und wenn ich den Root Ordner angebe durchsucht er nur den ohne Unterordner.
        Wenn in dein fall der root Ordner auch das Rootverzeichniss ist sollte es wohl so klappen.
        PHP-Code:
        $verzeichnisse = [
        "../../",                  // root
        "../../tutorials/",  // unterordner im Root
        "../../tutorials/php/",  // unterordner im unterordner
        ]; 
        Wenn du alle Unterordner durchsuchen willst mußt du die Ordner da alle eintragen oder den Code ändern bzw ein anderes Script wählen.
        Mein (Basti1012) Forum und Chat

        Kommentar


        • #5
          Ist die Frage ob der die Rechte freigibt die man braucht um in den root bereich zu kommen.
          Es wäre besser da einfacher wenn die Ablage innerhalb der Ablage liegt in der die Webseite sich befindet.
          https://arnego2.com <Webseiten, Umbau ab €80 und einiges mehr>

          VPS 8GB RAM 50 GB ROM < Server in der EU, 1rstes Jahr €37

          Kommentar


          • #6
            Zitat von basti1012 Beitrag anzeigen
            Wenn ich das richtig sehe mußt du im Script alle Ordner angeben die durchsucht werden sollen.
            Hatte das gerade bei mir getestet, und wenn ich den Root Ordner angebe durchsucht er nur den ohne Unterordner.
            Wenn in dein fall der root Ordner auch das Rootverzeichniss ist sollte es wohl so klappen.
            PHP-Code:
            $verzeichnisse = [
            "../../"// root
            "../../tutorials/"// unterordner im Root
            "../../tutorials/php/"// unterordner im unterordner
            ]; 
            Wenn du alle Unterordner durchsuchen willst mußt du die Ordner da alle eintragen oder den Code ändern bzw ein anderes Script wählen.
            Kannst du ein Such Script empfehlen, wo gleich alles durchsucht wird ohne den Code Großartig zu verändern?
            Ich habe ca. 100 Unterordner und dann das alles eingeben dauert zu lange.


            AGW von AGW International

            Kommentar


            • #7
              Ja kann ich
              https://webdesign.weisshart.de/suchen.php , in der config muss $alldirs auf true gesetzt werden.

              Ich bezweifel aber das eine Php suche sinn macht.
              Ich hatte mal den fall das ich wie du 100 Ordner hatte mit 20.000 files.
              Das mit Php zu durchsuchen dauert auch ewig , kann sogar sein das ein timeout kommt.

              Wenn man auf den 20.000 files nur noch 20 macht und den ganzen Inhalt in einer DB speicherst , kannst du eine DB suche machen.
              Dann wäre auch eine Suche nach ähnlichen Wörter und so alles kein problem und es würde nur noch Millisekunden dauern bis du Suchergebnisse bekommst.

              Wie viele Datein hast du den insgesammt ?
              Mein (Basti1012) Forum und Chat

              Kommentar


              • #8
                Zitat von basti1012 Beitrag anzeigen
                Ja kann ich
                https://webdesign.weisshart.de/suchen.php , in der config muss $alldirs auf true gesetzt werden.

                Ich bezweifel aber das eine Php suche sinn macht.
                Ich hatte mal den fall das ich wie du 100 Ordner hatte mit 20.000 files.
                Das mit Php zu durchsuchen dauert auch ewig , kann sogar sein das ein timeout kommt.

                Wenn man auf den 20.000 files nur noch 20 macht und den ganzen Inhalt in einer DB speicherst , kannst du eine DB suche machen.
                Dann wäre auch eine Suche nach ähnlichen Wörter und so alles kein problem und es würde nur noch Millisekunden dauern bis du Suchergebnisse bekommst.

                Wie viele Datein hast du den insgesammt ?
                Wie kann ich den den Inhalt in einer DB speichern?
                AGW von AGW International

                Kommentar


                • #9
                  Mit eintragen.
                  Das kommt auch drauf an wie deine Webseite aufgebaut ist und so weiter.
                  Ich glaube WP speichert die Inhalte auch in der DB.
                  Wenn du sowas selber machen willst mußt du dir wohl erstmal gedanken machen wie du die Seite aufbauen willst und so weiter.
                  Den Inhalt der Seite kannst du in der Db speichern und theoretisch alles auf einer Seite ( Link ) wieder ausgeben.
                  Deswegen sagte ich das man 20.000 Seiten auch eine raus machen kann.
                  Nur wie das alles geht kann ich nicht erklären.
                  Da solltest du mal Googeln und nach fertigen CMS suchen die das machen.
                  Die haben dann auch eine fertige suche mit eingebaut bzw gibt es da Plugins für.
                  Mein (Basti1012) Forum und Chat

                  Kommentar

                  homepage-forum.de - Hilfe für Webmaster! Statistiken

                  Einklappen

                  Themen: 56.684   Beiträge: 428.988   Mitglieder: 28.449   Aktive Mitglieder: 116
                  Willkommen an unser neuestes Mitglied, Marketingneuling.

                  Online-Benutzer

                  Einklappen

                  184 Benutzer sind jetzt online. Registrierte Benutzer: 5, Gäste: 179.

                  Mit 3.502 Benutzern waren am 23.01.2020 um 17:20 die meisten Benutzer gleichzeitig online.

                  Die neuesten Themen

                  Einklappen

                  • daniel5959
                    Antwort auf Büromöbel gesucht
                    Hallo,

                    @spreadlovee: sieht ja wieder nach gekaufter (?) Linksetzung aus, diesmal für eine Affiliate-Webseite mit Amazon-Werbelinks.

                    Die Empfehlungen auf der verlinkten Seite als "beste" Produkte sehen eher nach billiger Massenware aus.

                    Im Impressum steht...
                    Gestern, 17:33
                  • arnego2
                    Antwort auf Eigene E-Mail Adresse kostenlos für Kunden
                    Das ist klar, nur warum suchst du Sachen die über deine Fähigkeiten liegen?
                    Auch be deineri Serverausfall hast du hoffentlich ins Schwarze getroffen denn der ist ziemlich überteuert.

                    Wenn du soviel Unternehmergeist hast um Dienste anzubieten die du nicht beherrscht musst du dir...
                    Gestern, 14:40
                  • spreadlovee
                    Antwort auf Büromöbel gesucht
                    Zum Ordnen von Heftern würde ich persönlich immer einen Rollcontainer empfehlen. Schau mal bei diesem Artikel vorbei, da werden nochmal die unterschiedlichen Arten von Rollcontainern aufgezeigt und wie du diesen in dein Büro bzw. Arbeitszimmer integrieren kannst. Preislich solltest du sicherlich einen...
                    Gestern, 13:51
                  • ST747
                    Antwort auf die Gelddruckmaschinen
                    hi,
                    es ist doch anders wie in der realen Geschäftwelt. Es gibt in Deutschland z.B. 100 große Städte und sehr große Städte.
                    Das sind vielleicht 100 mal 50 Geschäfte einer Branche, also 5000, die können alle gute Geschäfte machen, auch ohne große Werbung. 1% wären 50 Geschäfte....
                    Gestern, 12:51
                  • Marketingneuling
                    Antwort auf Handschrift
                    Ich schreibe auch wichtige Dinge, die ich mir gerne in den Notizkalender kleben möchte noch per Hand. So kann man es sich oft leichter merken!
                    Gestern, 07:35

                  Die neuesten Beiträge

                  Einklappen

                  Lädt...
                  X