Welche Zeichen machen in Dateinamen probleme?

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

  • Welche Zeichen machen in Dateinamen probleme?

    Hi!
    Ich habe mir ein (recht) normales Upload script gebastelt. Das Funktioniert auch wunderbar. Zur überprüfung des Dateinamens beim Upload habe ich das hier eingebaut:
    PHP-Code:
    if (ereg('^[a-zA-Z0-9._-]*$'$dateiname)) {
        
    //Alles OK --> Weiterverarbeitung
    }
    else { 
        return 
    "Fehler: Ungültiger Dateiname \"" htmlspecialchar ($dateiname) . "\"";
    }; 
    Nun, unter Windows sind aber noch viel mehr Zeichen in Dateinamen erlaubt, wie z.B Umlaute, Leerzeichen,....
    Die Datei einfach umbenennen möchte ich nicht, denn der User soll die Datei wieder finden können. Den User die Datei umbenennen lassen (wie oben durch Ausgabe einer Fehlermeldung) auch nicht, zumindest nicht, wenn es nicht absolut notwendig ist.
    Unter anderem werden auch Bilder hochgeladen. Der Pfad incl. Dateinamen des Bildes wird dann in eine MySQL Datenbank gespeichert. Die Bilder können dann angezeigt werden, indem unter src im img-Tag der Pfad aus der Datenbank eingefügt wird.

    Meine Fragen:
    Welche Zeichen machen denn überhaupt Probleme, und wo? (1&1 Server)
    Wie sieht dann der entsprechende Ausdruck hinter ereg aus?

    Mfg,
    Stefan
    PS: Ich habe im Netz sowie hier im Forum schon gesucht, und zwar schon Stunden, nur gefunden habe ich nichts... Also Danke ich um so mehr für jeden Hinweis! :-)

  • #2
    Welches Betriebsystem?
    also der \ und / machen aufjedenfall Probleme
    Mafia Browsergame - Scripts

    Wer glaubt, ein Christ zu sein, weil er die Kirche besucht, irrt sich. Man wird ja auch kein Auto, wenn man in eine Garage geht.
    Albert Schweitzer (14.01.1875 - 04.08.1965)

    Kommentar


    • #3
      Re: Welche Zeichen machen in Dateinamen probleme?

      Original geschrieben von KleinesOnlein29 Meine Fragen:
      Welche Zeichen machen denn überhaupt Probleme, und wo? (1&1 Server)
      Wie sieht dann der entsprechende Ausdruck hinter ereg aus?[/B]
      dein regex sieht grundsätzlich ok aus, aber warum möchtest du ihn noch zusätzlich aufbohren?
      ich würde ihn eher beschränken: \w : ein Buchstabe, eine Ziffer oder der Unterstrich [a-zA-Z_0-9] dann ein punkt und dann die extension.

      bei der extension dann zusätzlich prüfen, ob z.b. nicht *.php hochgeladen wird, usw...

      nach dem motto: weniger ist oft mehr (oder sicherer)

      Kommentar


      • #4
        Hi!
        Erstmal Danke für die Antworten!

        Ich habe jetzt folgenden Ausdruck verwendet:
        PHP-Code:
        if (ereg("^[a-zA-Z0-9_-]*\.[a-zA-Z]{3,4}$"$dateiname)) 
        Sind bei dem Ausdruck Probleme zu erwarten?
        Ich hätte allerdings gerne noch das leerzeichen erlaubt. Wo ist das Problem bei einem Leerzeichen? Bilder, die ein Leerzeichen im Namen haben, zeigt der IE 6 problemlos an. Haben andere Browser damit Probleme?
        Ich habe es auch noch nicht hinbekommen, in dem Ausdruck ein Leerzeichen einzubauen, wie also sieht dann der Ausdruck aus?

        Zu den Extensions: Welche können denn Probleme bereiten? Mir fallen da ein: ".php", ".cgi", ".exe"....

        Mfg,
        Stefan

        PS: Schön wäre ein Tutorial oder Sticky zu diesem Thema, denn irgendwie findet man nichts wirklich brauchbares dazu im Netz. (oder ich bin zu doof dazu.. )

        Kommentar


        • #5
          nachtrag:
          Zum Betriebssystem:
          Es soll auf allen Betriebssystemen laufen!
          Auch vom Server her möchte ich mich da eigendlich nicht auf einen bestimmten festlegen. Zur Zeit ist das der 1&1 Server. (http://faq.1und1.de/hosting/scripte_...ken/php/6.html )
          Mfg,
          Stefan

          Kommentar


          • #6
            Also Leerzeichen werden normalerweise mit %20 maskiert. Vllt. hilft dir ja auch urlencode?
            Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
            var_dump(), print_r(), debug_backtrace und echo.
            Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
            Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
            Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

            Kommentar

            Lädt...
            X