sandra: onBlur + input type="file"

hallo zusammen,
ich möchte dateien uploaden, von denen ich die dateiendung wissen muss. nun habe ich versucht, per onBlur die daten in eine hidden-variable einzulesen, macht er aber nicht.
sinn und zweck der aktion ist, dass ich die daten in eine db schreibe und vor dem auslesen wissen muss, ob es sich um ein gif, jpg oder swf handelt. wenn ich also den pfad der datei habe, kann ich die endung erkennen.
ich zähl auf euch :o))
viele grüsse,
sandra

  1. Hallo Sandra,

    wie werden denn die Dateien oder ihre Namen in die Datenbank geschrieben? Perl oder PHP?

    Für PHP lege ich Dir den Link ans Herz: http://www.php.net/manual/de/features.file-upload.php

    Pass auf, dass Du nicht aus versehen php-files in den öffentlichen Bereich (innerhalb document-root) Deines Servers lädst.

    Grüße aus http://www.braunschweig.de

    Tom

    1. hi tom,
      ich benutze php und probiere deinen link mal aus
      danke für den tipp :o)
      sandra

      Hallo Sandra,

      wie werden denn die Dateien oder ihre Namen in die Datenbank geschrieben? Perl oder PHP?

      Für PHP lege ich Dir den Link ans Herz: http://www.php.net/manual/de/features.file-upload.php

      Pass auf, dass Du nicht aus versehen php-files in den öffentlichen Bereich (innerhalb document-root) Deines Servers lädst.

      Grüße aus http://www.braunschweig.de

      Tom

    2. Moin!

      Pass auf, dass Du nicht aus versehen php-files in den öffentlichen Bereich (innerhalb document-root) Deines Servers lädst.

      Häh? Irgendwas in dieser Aussage ist falsch. Solltest du dich nicht verschrieben haben, ist die ganze Aussage falsch. PHP-Dateien müssen zwingend im "öffentlichen Bereich" des Webspaces liegen, sonst kann man doch gar nicht auf sie zugreifen als Besucher. Denn die Skripte haben eine URL, die man abfordert. Ist die URL nicht im DocumentRoot erreichbar, kriegt man 404.

      Sicherlich meintest du andere Dateien - aber welche?

      - Sven Rautenberg

      1. Moin,

        Sicherlich meintest du andere Dateien - aber welche?

        Nein, er meint sicher PHP-Dateien, undzwar solche die vom Besucher hochgeladen werden. Das ist nämlich eine Blöde Idee[tm] da dann der Code in diesen Dateien ausgeführt werden könnte.

        --
        Henryk Plötz
        Grüße aus Berlin

        1. Moin!

          Sicherlich meintest du andere Dateien - aber welche?

          Nein, er meint sicher PHP-Dateien, undzwar solche die vom Besucher hochgeladen werden. Das ist nämlich eine Blöde Idee[tm] da dann der Code in diesen Dateien ausgeführt werden könnte.

          Ok, da hast du durchaus Recht. War mir aber nicht klar genug formuliert.

          Wesentlich besser ist ohnehin, alle Dateien, die nicht das richtige Format haben, gleich zu löschen. Formatprüfungen für Bilder erlaubt z.B. getimagesize() - und das für eine recht stattliche Anzahl an Formaten: GIF, JPG, PNG, TIF, BMP, SWF,... Wenn getimagesize() keine Bildgröße ermitteln kann, dann ist die Datei kein Bild eines der bekannten Bildformate und sollte gelöscht (bzw. bei PHP nicht in ein rettendes Verzeichnis kopiert) werden.

          - Sven Rautenberg

      2. Ok, ok sven,

        wenn Du das schon verkehrt verstehst, dann wird es Sandra vielleicht auch nicht verstanden haben. Also nochmal in lang:

        Pass auf, dass Du nicht aus versehen php-files in den öffentlichen Bereich (innerhalb document-root) Deines Servers lädst.

        Beim Hochladen von Dateien vom Client auf den Server landen diese zunächst in einm temporären Verzeichnis. Von dort aus müssen sie in das eigentliche Zielverzeichnis kopiert werden. Dafür ist das "Uploadscript" verantworlich. Endet das Script, wird die Temp-Datei automatisch gelöscht. Wird als Zielverzeichnis nun ein öffentliches, also innerhalb des Document-Path benutzt, dann soll Sandra aufpassen, dass sie keine *.php-Dateien dorthin kopiert, die ihr zuvor von irgendweinem Anonymous hochgeladen wurden. Diese Dateien wären dann von dem Anonymous über http://.../datei.php ganz normal aufrufbar und würden dann geparst und ausgeführt werden.

        Das will Sandra ja bestimmt nicht, das ihr irgendjemand (zum Beispiel Du oder ich) irgendwelche PHP-Programme auf den Server lädt UND AUSFÜHRT.

        War das jetzt ausführlich genug? ;-))

        So, nun leg dich wieder hin

        Grüße aus http://www.braunschweig.de

        Tom

  2. Moin,

    sinn und zweck der aktion ist, dass ich die daten in eine db schreibe und vor dem auslesen wissen muss, ob es sich um ein gif, jpg oder swf handelt. wenn ich also den pfad der datei habe, kann ich die endung erkennen.

    Zum Erkennen eines Dateityps ist die Endung in der Regel relativ nutzlos[1]. a) Kannst du den Mime-Type benutzen den der Browser beim Senden der Datei in der Regel mitsendet und b) kannst du das Serverseitig selbst prüfen, zum Beispiel mit http://aktuell.de.selfhtml.org/artikel/phpasp/php-uploadcheck/index.htm#a4.

    [1] Einige Betriebssysteme kennen keine Dateiendungen per se, zum Beispiel Linux, andere benutzen wesentlich verlässlichere Informationsquellen, zum Beispiel MacOS (der Typ liegt unabhängig vom Namen im Ressourcenzweig).

    --
    Henryk Plötz
    Grüße aus Berlin