[PHP5] Dateityp ermitteln

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

  • [PHP5] Dateityp ermitteln

    Hallo,

    ich ermittle für hochgeladene Dateien den Typ.
    Dafür habe ich in einer Klasse die folgende Methode.

    Ich möchte aber auch gerne Text- (HTML, PHP, CSS, JS etc.) und MS Word-Dateien erkennen. Hat jemand eine Idee, an welchen Merkmalen ich das relativ sicher erkennen kann? Nicht nur an der Dateiendung.
    PHP-Code:
    private function _getFileFormat($strFileContent)
    {
        if(isset(
    $strFileContent) && $strFileContent<>"")
        {
            
    $this->_strFileHeader=substr($strFileContent,0,10);
            
    // PDF
            
    if(substr($this->_strFileHeader,0,4)=="%PDF")
            {
                return 
    "PDF";
            }
            
    // TIF
            
    elseif(
    strtoupper(bin2hex(substr($this->_strFileHeader,0,2)))=="4949" || 
    strtoupper(bin2hex(substr($this->_strFileHeader,0,2)))=="4D4D")
            {
                return 
    "TIF";
            }
            
    // JPG
            
    elseif(
    strtoupper(bin2hex(substr($this->_strFileHeader,0,4)))=="FFD8FFE0" && 
    strtoupper(bin2hex(substr($this->_strFileHeader,6,4)))=="4A464946")
            {
                return 
    "JPG";
            }
            
    // PNG
            
    elseif(
    strtoupper(bin2hex(substr($this->_strFileHeader,0,8)))=="89504E470D0A1A0A")
            {
                return 
    "PNG";
            }
            
    // GIF
            
    elseif(
    substr($this->_strFileHeader,0,6)=="GIF89a" || 
    substr($this->_strFileHeader,0,6)=="GIF87a")
            {
                return 
    "GIF";
            }
            else
            {
                return 
    "???";
            }
        }
        else
        {
            return 
    FALSE;
        }

    Poscht

  • #2
    HTML, PHP, CSS, JS => Nicht nur an der Dateiendung.
    garnicht. das sind alles nackte textdateien. bei php kannst du z.b. mit <?php überprüfen, bei html auf < ... > ohne <?php, bei css mit irgendeiner eigenschaft und js ???. allerdings musst da alle varianten berücksichtigen, also z.b. ein php-datei, die html , css und js enthält.

    gruß
    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Original geschrieben von Kropff
      garnicht. das sind alles nackte textdateien.
      Genau das is ja mein Problem.
      Ich dachte nur, es gibt eine andere Lösung als den Dateiinhalt komplett auszuwerten.

      Poscht

      Kommentar


      • #4
        OffTopic:
        Wenn du so eine Erkennung fertiggestellt hast kannst du sie ja mal hier posten - in den Codeschnipseln macht sich sowas immer gut.
        Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

        Kommentar


        • #5
          Also, wie Kropf gesagt hat:
          Eine php-datei, die html, css und js enthält, was ist das?

          Wenn das eine PHP-Datei ist muss du nach "<\?.*\?>" suchen (Die " oder ' müssen dabei dazwischen immer in gerader Zahl vorhanden sein). <--- Das Problem ist dann, dass ein Text in einer HTML-Datei über PHP als PHP identifiziert würde, aber das ist wohl mit keiner Variante zu verhindern.
          sonst, wenn du eine HTML-datei hast nach "</HTML" ausserhalb eines Strings suchen <-- bei js und css wäre diese Zeichenfolge ungültig
          js und css könnte man z.B. am "=" unterscheiden, das in javascript recht oft vorkommt, im css aber nur ".*\[.+=.+\]" vorkommen darf (im Javascript darf es hingegen so nicht vorkommen).

          PS: Die RegExp sind nur Ansätze und gingen so nicht. Bei den . kannst du ja selbst nachschauen welche Zeichen im css für attribut und element erlaubt sind.

          Kommentar

          Lädt...
          X