Linuchs: PHP-Prüfung auf gültige Verzeichnis- und Dateinamen (Linux-Server)

Moin,

letztens hatte ich per Filezilla Verzeichnisse und Dateien auf den Linux-Server hochgeladen, die ich per Mailanhang bekommen habe. Einige mit Umlaut im Namen.

Nach dem Hochladen waren die auf der Server-Seite in Filezilla zwar mit verkrüppeltem Umlaut sichtbar, aber nicht öffnenbar und löschbar:

Klassenreise 12b, Lübeck_ Priwall, 8.-10.6.1967
…
Befehl:	cd "Klassenreise 12b, Lübeck_ Priwall, 8.-10.6.1967"
Fehler:	Directory /home/.../Klassenreise 12b, Lübeck_ Priwall, 8.-10.6.1967: no such file or directory

Nun sollen Administratoren Verzeichnisse anlegen können. Ich habe keine Ahnung, welche Zeichen sicher sind. Chinesische vermutlich nicht?

Wie lautet eine PHP-Prüfung auf gültige Verzeichnis- und Dateinamen?

Gruß Linuchs

  1. Tach!

    Nun sollen Administratoren Verzeichnisse anlegen können. Ich habe keine Ahnung, welche Zeichen sicher sind.

    a-zA-Z0-9 sowie Bindestrich und Unterstrich. Alles andere ist mehr oder weniger Glückssache, weil man mit dem Dateisystem keine Zeichenkodierung vereinbaren kann.

    dedlfix.

    1. Hallo dedlfix,

      a-zA-Z0-9 sowie Bindestrich und Unterstrich. Alles andere ist mehr oder weniger Glückssache, weil man mit dem Dateisystem keine Zeichenkodierung vereinbaren kann.

      Ich limitiere mich da sogar noch weiter. Nur klein(wegen systemkompatibel) und keinen Bindestrich( weil wenn da ein Leerzeichen mit dazu rutscht kann es bei manchen Systemen böse Überraschungen geben, habe ich zumindest mal gehört/gelesen. Irgendwas mit inode usw…). Auch für SEO soll Unterstrich besser sein, weil dann als ganzer Begriff, während bei Bindestrich nicht, na ja obs stimmt… egal also für mich nur klein/zahlen/unterstrich.

      @Linuchs

      Aber jeder so wie er möchte daher(anpassungsfähig) #^[\w_]+\.[\w]+$#is oder hier testen.

      Gruss
      Henry

      1. hallo

        Ich limitiere mich da sogar noch weiter. Nur klein(wegen systemkompatibel) und keinen Bindestrich( weil wenn da ein Leerzeichen mit dazu rutscht kann es bei manchen Systemen böse Überraschungen geben, habe ich zumindest mal gehört/gelesen. Irgendwas mit inode usw…). Auch für SEO soll Unterstrich besser sein, weil dann als ganzer Begriff, während bei Bindestrich nicht, na ja obs stimmt… egal also für mich nur klein/zahlen/unterstrich.

        • Begriffe mit _ zusammenhalten.
        • Wörter mit - trennen.
        --
        Neu im Forum! Signaturen kann man ausblenden!
      2. Hallo Henry,

        #^[\w_]+\.[\w]+$#is

        1. \w beinhaltet bereits [A-Za-z0-9_] (samt Unterstrich, Groß- und Kleinbuchstaben)
        2. Warum nur \w in eine [Zeichenklasse] setzen?
        3. Wo ist der als Metazeichen genutzte . für den der s Modifikator gesetzt wurde?

        #^\w+\.\w+$# täts wohl auch. Nur so als Randbemerkung.

        Schönen Abend, Robert

        1. Hallo Jonny(Robert),

          #^\w+\.\w+$# täts wohl auch. Nur so als Randbemerkung.

          Darum sagte ich ja auch anpassungsfähig. 😉 Bei mir läuft so was meist auf Try&Error hinaus, aber da dies hier ja keine FAQ ist, sondern ein Forum, war mir auch klar, dass es schon einer(danke) verbessern wird und solange tut's halt meine Version dann auch.

          Gruss
          Henry

  2. Hallo Linuchs,

    Was hast Du in Filezilla im Servermanager als Zeichensatz eingestellt?

    Damit konnte ich eine Datei täst.html auf einen Ubuntu Server hochladen (weiß nicht welcher FTP Daemon das war) und nachher per HTML abrufen. Habe keinen Root- oder Shell-Zugang, weiß also nicht wie das Ding jetzt im Dateisystem aussieht.

    Ob der FTP Server UTF8 unterstützt, kannst Du ihn fragen. Mit Filezilla kannst Du Serverbefehle absetzen, im (ta-da!) Server-Menü, sag ihm FEAT (wie Features). Wenn UTF8 dabei ist, sollte er es können.

    Rolf

    --
    sumpsi - posui - clusi
  3. Ich habe keine Ahnung, welche Zeichen sicher sind.

    Unter Linux sind generell alle Zeichen - bis auf das NUL-Byte und den Verzeichnistrenner- in Datei und Verzeichnisnamen gültig und "sicher".

  4. Hallo Linuchs,

    Nach dem Hochladen waren die auf der Server-Seite in Filezilla zwar mit verkrüppeltem Umlaut sichtbar, aber nicht öffnenbar und löschbar:

    Klassenreise 12b, Lübeck_ Priwall, 8.-10.6.1967
    …
    Befehl:	cd "Klassenreise 12b, Lübeck_ Priwall, 8.-10.6.1967"
    Fehler:	Directory /home/.../Klassenreise 12b, Lübeck_ Priwall, 8.-10.6.1967: no such file or directory
    

    Von wem kommt denn diese Fehlermeldung – von FileZilla oder von einem PHP-Skript?

    Nun sollen Administratoren Verzeichnisse anlegen können. Ich habe keine Ahnung, welche Zeichen sicher sind. Chinesische vermutlich nicht?

    Doch. Gängige Dateisysteme können damit umgehen.

    Wie lautet eine PHP-Prüfung auf gültige Verzeichnis- und Dateinamen?

    Das hängt vom Dateisystem ab. Aber vielleicht meinst du portabel.

    Viele Grüße
    Robert

  5. Moin,

    Wie lautet eine PHP-Prüfung auf gültige Verzeichnis- und Dateinamen?

    PHP bestimmt das gar nicht, vielmehr bestimmt das Dateisystem darüber was gültig ist oder nicht. Unabhängig davon kannst Du auch Deine eigenen Festlegungen treffen. Am besten die Namen selber festlegen. Was auch eine Frage der Sicherheit ist.

    MfG