Hilfe Suche darf nur Dateien mit Zahlem im Dateinamen durchsuchen.

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

  • Hilfe Suche darf nur Dateien mit Zahlem im Dateinamen durchsuchen.

    Hallo zusammen,

    ich benötige eine Anpassung eines Skriptes für eine Suche nach bestimmten Wörtern auf einer Internetseite. Diese darf aber nur bestimmte Dateien durchsuchen. Die Datenseiten haben ausschließlich Zahlen als Namen z.B. 10236482.php und die dürfen nur durchsucht werden.

    Wie kann ich die array erweitern das nur Dateinamen mit Zahlen durchsucht werden:
    PHP-Code:
    $AllowedDir $RootDir;
    $AllowedExts = array(".php");
    $files=ReadDirs($AllowedDir,$AllowedExts); 
    Zuletzt geändert von luerwald; 26.01.2010, 00:23.

  • #2
    Zuerst mal - Regeln lesen, Posting anpassen.

    (Aktueller Link ist in meiner Signatur.)

    Kommentar


    • #3
      Sorry war mein erstes Posting in einem Forum. Bin leider nicht fit genug um nur das Wichtigste heraus zu schreiben und hoffe das es so richtig ist.

      Kommentar


      • #4
        Hallo,

        es ist zwar gut, dass du den Code etwas zusammengestrichen hast, aber leider fehlt jetzt etwas, nämlich die Funktion ReadDirs. Darin liegt der Schlüssel zu deinem Problem. Wenn du die nicht verändern willst, musst du deren Rückgabe weiter filtern. Da das vermutlich ein Array sein wird, sieh dir mal array_filter an.

        Bitte ändere den Quelltext nochmal und benutze die PHP-Tags statt der Zitat-Tags.

        Gruß,

        Amica
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Den Code kann man nicht erweitern. Er lässt nur eine Beschränkung auf Verzeichnisse und Dateiendungen zu.

          Du müsstest also zunächst die Programmlogik von ReadDirs() entsprechend anpassen, vermute ich.



          Wenn du Programmieren kannst, würde ich dich bitten, die die entsprechende Stelle in der Funktion herauszusuchen und nachzusehen wie dort die Einschränkung vorgenommen wird. Dann sollte es ein leichtes sein, das zu erweitern. Eventuell kannst du der Funktion dann sogar noch einen dritten Parameter (allowedChars) geben. Das wäre die optimale Variante.

          Wenn du nicht Programmieren kannst, bleibt dir nur übrig es zu lernen, dann helfen wir natürlich gerne dabei, sofern erkenntlich ist, dass du es selbst versuchst.

          Alternativ verschiebe ich dich ins entsprechende Forum, die Chance auf hilfe ist dort allerdings geringer.

          Kommentar


          • #6
            Zitat von TobiaZ Beitrag anzeigen
            Den Code kann man nicht erweitern.
            Kann man schon, ...

            Zitat von TobiaZ Beitrag anzeigen
            Den Code kann man nicht erweitern. Er lässt nur eine Beschränkung auf Verzeichnisse und Dateiendungen zu.
            ... wenn man den gegebenen Beschränkungen noch eine weitere hinzufügt, indem man das Rückgabearray filtert.
            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
            Super, danke!
            [/COLOR]

            Kommentar


            • #7
              Das bezieht sich auf die drei oben genannten Zeilen.

              Das Vorgehen zur Anpassung von ReadDirs ist ja im weiteren Text beschrieben.

              Kommentar


              • #8
                Danke für die schnelle Antwort. Hier habe ich mal die ReadDirs herausgeschrieben.
                PHP-Code:
                function ReadDirs($d$ExtArray) {
                    
                $fileArray = array();
                    if (
                $hDir opendir($d)) {
                        while (
                $file readdir($hDir)) {
                            if (!
                is_dir($d "/" $file)) {
                                
                // *** .*-Dateien (zB .htaccess) ignorieren ***
                                
                if (substr($file01) != ".") {
                                    foreach (
                $ExtArray as $ext){
                                        if (
                                            
                substr(strtolower($file), strlen($file) - strlen($ext), strlen($ext))
                                                == 
                strtolower($ext)
                                        ) {
                                            
                array_push($fileArray$d "/" $file);
                                        }
                                    }
                                }
                            }
                        }
                        
                closedir($hDir);
                    }
                    return 
                $fileArray;

                Zuletzt geändert von AmicaNoctis; 26.01.2010, 00:56. Grund: Code eingerückt, alles muss man selber machen...

                Kommentar


                • #9
                  Nochmal: Du sollst endlich PHP-Tags benutzen und den Code nicht als Zitat und auch nicht als Fließtext posten! Ändere das bitte jetzt!
                  [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                  Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                  Super, danke!
                  [/COLOR]

                  Kommentar


                  • #10
                    Benutze bitte endlich die [php]-Tags! (steht auch in den Regeln genaustens beschrieben.)

                    Und dann bitte auch deine Ansätze. Hinweise hast du von Amica und mir ja schon die ersten bekommen.

                    Ansonsten könntest du auch an der Stelle, wo beispielsweise die htaccess-Dateien ausgeschlossen werden, auch alle Dateien ausschließen, die nicht nur aus zahlen (+Dateiendung) bestehen. (preg_match() hilft dir dabei)

                    Kommentar


                    • #11
                      So, jetzt wo du den Code richtig getaggt hast und ich die Einrückung übernommen hab, damit man ihn auch lesen kann, geht es weiter im Text.

                      Hast du dich schon entschieden, ob du die Funktion ReadDirs modifizieren oder beibehalten und nur deren Rückgabe filtern willst? Das Entscheidungskriterium dafür liegt darin, ob du sie woanders nochmal im Original brauchst oder nicht.
                      [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                      Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                      Super, danke!
                      [/COLOR]

                      Kommentar


                      • #12
                        Also für mich wäre es am besten, wenn man nur die Funktion ReadDirs modifizieren kann. Der Rest funzt ja dann wie gehabt.

                        Kommentar


                        • #13
                          OK und worin besteht da das konkrete Problem? Du hast noch nicht auf TobiaZ' Beitrag geantwortet, ob du programmieren kannst.
                          [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                          Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                          Super, danke!
                          [/COLOR]

                          Kommentar


                          • #14
                            Ne leider noch nicht. Einige Sachen konnte ich mir bis jetzt anpassen, so das diese für mich passten. Nur mit diesem Problem bin ich überfordert und habe mir hier hilfe erhofft.

                            Kommentar


                            • #15
                              Statt der bisherigen Vorfilterung
                              PHP-Code:
                              substr($file01) != "." 
                              innerhalb der Bedingung musst du mit preg_match arbeiten, um die Dateinamen zu überprüfen. Der Reguläre Ausdruck, den du dafür brauchst, lautet
                              PHP-Code:
                              '<^\\d+\\.\\w+$>i' 
                              Den Rest solltest du selbst schaffen.

                              Gruß,

                              Amica
                              [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                              Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                              Super, danke!
                              [/COLOR]

                              Kommentar

                              Lädt...
                              X