misterunknown: Dateien anzeigen

Moin,
also in meinem Dateiverwaltungsskript habe ich ein neues Problem gefunden. Ich lasse Dateien in einer Tabelle anzeigen. Ich habe jetzt auch die Funktion implementiert, dass man Dateien direkt im Skript bearbeiten kann. Also ganz simpel mit einer normalen Textarea aber für kurze Änderungen oder Ergänzungen ganz hilfreich. Nun bin ich aus versehen auf den Bearbeiten-Button bei einer Zip-Datei gekommen. In der Textarea haben dann nur wirre Zeichen gestanden und das Skript ist abgebrochen. Wie kann ich das am effizientesten ausschließen, also erkennen, ob in der Datei Klartext steht, oder ob es irgendein anderes Dateiformat ist?

Grüße Marco

  1. Wie kann ich das am effizientesten ausschließen, also erkennen, ob in der Datei Klartext steht, oder ob es irgendein anderes Dateiformat ist?

    mime_content_type() oder besser finfo_* ist als grundlegende Prüfung nicht verkehrt.

    1. Moin,

      mime_content_type() oder besser finfo_* ist als grundlegende Prüfung nicht verkehrt.

      Das habe ich gerade mal versucht, allerdings muss ich dafür ja jede Datei öffnen, was bei längeren Dateilisten die Performance ganz schön beeinträchtigt. Aber danke trotzdem :)

      Grüße Marco

      1. mime_content_type() oder besser finfo_* ist als grundlegende Prüfung nicht verkehrt.
        Das habe ich gerade mal versucht, allerdings muss ich dafür ja jede Datei öffnen, was bei längeren Dateilisten die Performance ganz schön beeinträchtigt. Aber danke trotzdem :)

        Wieso? Es reicht doch wenn du die Datei prüfst, die du zu ändern versuchst :)

        1. Moin,

          Wieso? Es reicht doch wenn du die Datei prüfst, die du zu ändern versuchst :)

          Hm... Stimmt... Ich hab das jetzt so geprüft, dass der Button gar nicht erst angezeigt werden würde. Aber man kann ja auch einfach nach dem Klick gucken^^

          Wird erneut probiert ;)

          Grüße Marco

    2. Hello,

      Wie kann ich das am effizientesten ausschließen, also erkennen, ob in der Datei Klartext steht, oder ob es irgendein anderes Dateiformat ist?

      mime_content_type() oder besser finfo_* ist als grundlegende Prüfung nicht verkehrt.

      Ich bin da leider gerade nicht auf dem laufenden mit der letzten Version. Funktioniert denn finfo_*() jetzt zufriedenstellend? Da gab es Dutzende von hässlichen Fehlstellen, also nicht Fehler, die zum Programmfehler führen, sondern Fehlantworten...

      Liebe Grüße aus dem schönen Oberharz

      Tom vom Berg

      --
       ☻_
      /▌
      / \ Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
  2. Hi!

    Ich habe jetzt auch die Funktion implementiert, dass man Dateien direkt im Skript bearbeiten kann. Also ganz simpel mit einer normalen Textarea aber für kurze Änderungen oder Ergänzungen ganz hilfreich. Nun bin ich aus versehen auf den Bearbeiten-Button bei einer Zip-Datei gekommen. In der Textarea haben dann nur wirre Zeichen gestanden und das Skript ist abgebrochen.

    Die Frage ist, warum das Skript abbrach. War die Datei zu groß und sprengte das Memory-Limit? Dann passiert dir dasselbe mit zu großen Textdateien. Hast du den Kontextwechsel beim Einfügen in die Textarea nicht beachtet? Dann stirbt das Script nicht, aber der Browser kommt durcheinander. Und das passiert auch mit Textdateien.

    Wie kann ich das am effizientesten ausschließen, also erkennen, ob in der Datei Klartext steht, oder ob es irgendein anderes Dateiformat ist?

    Generell ist so eine Inhaltserkennung nicht einfach. Für auf lateinische Buchstaben bauende Sprachen kann man das an der überwiegende Mehrheit an Bytewerten zwischen 0x20 und 0x7E vermuten. Aber darunter fällt beispielsweise auch Base64-kodiertes, was wohl eher nicht unter Klartext zu zählen ist. Andere Schriftsysteme nutzen den gesamten Wertebereich, so dass hier eine Klartexterkennung wohl eher nicht daran festzumachen geht.

    Ich würde das Editieren ja einfach nur für bestimmte Dateiendungen vorsehen, am besten konfigurierbar. Für andere kann man die Funktion ja trotzdem anbieten, dann aber mit einer Ausversehen-Sicherungsabfrage vorher. Den Rest muss dann die Intelligenz und das Lernvermögen des Bedieners regeln.

    Lo!

    1. Moin,

      Die Frage ist, warum das Skript abbrach. War die Datei zu groß und sprengte das Memory-Limit? Dann passiert dir dasselbe mit zu großen Textdateien. Hast du den Kontextwechsel beim Einfügen in die Textarea nicht beachtet? Dann stirbt das Script nicht, aber der Browser kommt durcheinander. Und das passiert auch mit Textdateien.

      Hm, jetz wo du es sagst, liegt es wahrscheinlich wirklich an der zu großen Datei. Ich war der Meinung, dass das Skript durch ein Steuerzeichen oder so abgestürzt ist, aber dann lag es wohl doch am Memory. Hab mir grade noch ein kleines Zip-Archiv gebastelt, da hat es auch funktioniert.

      Generell ist so eine Inhaltserkennung nicht einfach. Für auf lateinische Buchstaben bauende Sprachen kann man das an der überwiegende Mehrheit an Bytewerten zwischen 0x20 und 0x7E vermuten. Aber darunter fällt beispielsweise auch Base64-kodiertes, was wohl eher nicht unter Klartext zu zählen ist. Andere Schriftsysteme nutzen den gesamten Wertebereich, so dass hier eine Klartexterkennung wohl eher nicht daran festzumachen geht.

      Naja, unter Klartext verstehe ich auch base64, da ich eigentlich hauptsächlich auch Quelltexte bearbeite (mal schnell ein Semikolon im PHP-Skript ergänzt etc.)

      Ich würde das Editieren ja einfach nur für bestimmte Dateiendungen vorsehen, am besten konfigurierbar. Für andere kann man die Funktion ja trotzdem anbieten, dann aber mit einer Ausversehen-Sicherungsabfrage vorher. Den Rest muss dann die Intelligenz und das Lernvermögen des Bedieners regeln.

      Das ist ne Möglichkeit.

      Grüße Marco