Kai: mehrere mime types ???

Hallo Zusammen,

hab einen upload script anhand eines tutorials geschrieben.

<?php

$tempname = $_FILES['file']['tmp_name'];
$name = $_FILES['file']['name'];
$type = $_FILES['file']['type'];
$size = $_FILES['file']['size'];

if($type != "image/gif" && $type != "image/pjpeg") {
$err[] = "die nit.";}

If(empty($err)) {
copy("$tempname", "test/$name");
echo "Die Datei $name wurde erfolgreich hochgeladen!";
}
else {
foreach($err as $error)
echo "$error<br>";
}
?>

die if Abfrage für die Mimetypes funktioniert auch soweit
möchte aber gerne ermöglichen dass auch tiffs upgeloadet
werden können.
eht bei mir aber irgendwie nicht; schreibe es wie folgt:

if($type != "image/gif" && $type != "image/pjpeg" && $type != "image/tiff") {
$err[] = "die nit.";
}
mit dieser Schreibweise übernimmt er es aber nicht bin PHP anfänger bräuchte Hilfe

sag mal danke Kai

  1. Hi,

    if($type != "image/gif" && $type != "image/pjpeg" && $type != "image/tiff") {
    mit dieser Schreibweise übernimmt er es aber nicht

    mit welcher Schreibweise übermittelt es denn der Client?

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  2. Hi,

    $type = $_FILES['file']['type'];

    Gib doch mal $type aus - was steht tatsächlich drin?

    if($type != "image/gif" && $type != "image/pjpeg") {

    Bist Du sicher, daß das image/pjpeg heißen soll? Ich kenn nur image/jpeg. Gleicher Tippfehler (?) weiter unten...

    cu,
    Andreas

    --
    MudGuard? Siehe http://www.Mud-Guard.de/
    1. hi,

      if($type != "image/gif" && $type != "image/pjpeg") {

      Bist Du sicher, daß das image/pjpeg heißen soll? Ich kenn nur image/jpeg.

      ich glaube es war der IE, der hier bei einem JPEG image/pjpeg als mime type liefert.

      wenn nur bilder hochgeladen werden sollen, würde ich eher vorschlagen, per getimagesize() den typ zu bestimmen (sofern GDlib vorhanden).

      http://www.php.net/manual/de/function.getimagesize.php

      gruss,
      wahsaga

      1. hi

        ich glaube es war der IE, der hier bei einem JPEG image/pjpeg als mime type liefert.

        da stellt sich ja gleich die nächste Frage im IE gehts nu mit image/pjpeg und im mozilla nur ohne das p also so: image/jpeg.

        es sollte doch aber schon irgenwie in beiden browsern funktionieren.

        wenn nur bilder hochgeladen werden sollen, würde ich eher vorschlagen, per getimagesize() den typ zu bestimmen (sofern GDlib vorhanden).

        sollen nicht nur bilder sonder auch zb. application/zip zugelassen sein.

        kann ich nicht in einer reihe schreiben  image/jpeg image/gif image/tiff und application/zip.

        Kai

        1. Hallo,

          sollen nicht nur bilder sonder auch zb. application/zip zugelassen sein.
          kann ich nicht in einer reihe schreiben  image/jpeg image/gif image/tiff und application/zip.

          Bitte sag sowas doch gleich.

          Eine endlose Reihe von Bedingungen, die mit && (AND) verknuepft sind,
          finde ich nicht besonders praktisch.

          Du koenntest z.B. eine Liste (Variablentyp: Array) aller erlaubten MIME-Typen anlegen
          und dann schauen, ob der angegebene bzw. festgestellte MIME-Typ darin
          vorkommt, z.B. mit in_array() oder einer anderen Array-Funktion.
          http://www.php.net/manual/de/function.in-array.php

          // Voraussetzung: $dateityp wurde ermittelt bzw. "geglaubt"

          $mimetypen = array ("iamge/gif", "image/jpeg", "image/pjpeg", "image/tiff", "application/zip");

          if (in_array ($dateityp, $mimetypen))
            {
             print "OK";
            }
          else
            {
             print "Nicht OK";
            }

          Gruesse,

          Thomas

          1. Bitte sag sowas doch gleich.

            Ja mach ich das nächste mal ;-)

            Du koenntest z.B. eine Liste (Variablentyp: Array) aller erlaubten MIME-Typen anlegen

            es funktioniert jetzt *freu*

            vielen dank für den Tip die Variante ist echt praktisch

            schöne grüße Kai

            1. Hallo,

              es funktioniert jetzt *freu*

              Schoen. Meinen Tippfehler (iamge/gif) hast Du hoffentlich gesehen. ;-)

              vielen dank für den Tip die Variante ist echt praktisch

              Gerngeschehen.

              Liebe Gruesse,
              Thomas

      2. Hallo wahsaga,

        per getimagesize() den typ zu bestimmen (sofern GDlib vorhanden).

        http://www.php.net/manual/en/function.getimagesize.php
          "This function does not require the GD image library."

        mfg, Thomas

  3. Hallo,

    $type = $_FILES['file']['type'];

    Du solltest Dich nicht darauf verlassen, was die
    Browser von der Datei sagen.
    Pruefe sie stattdessen mit getimagesize().
    Nur so kannst Du (einigermassen) sicher sein,
    dass es sich um ein Bild im gewuenschten Format handelt.
    http://www.php.net/manual/en/function.getimagesize.php

    if($type != "image/gif" && $type != "image/pjpeg" && $type != "image/tiff")

    Obwohl image/pjpeg noch durch die Welt geistert,
    ist der korrekte MIME-Type: image/jpeg
    http://selfhtml.teamone.de/diverses/mimetypen.htm
    http://www.faqs.org/rfcs/rfc2046.html

    Wie gesagt, empfehle ich Dir, den Typ mit getimagesize()
    zu ermitteln.
    Der Typ ist dann 1 (GIF), 2 (JPEG), 7 oder 8 (TIFF).

    btw: Warum ausgerechnet TIFF?
    Warum PNG _nicht_?

    Gruesse,

    Thomas

    --
    Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
    Ich mag es, wenn URLs verlinkt sind (</faq/#Q-19>).
    Oft gestellte PHP-Fragen beantwortet die dclp-FAQ bestens: http://www.dclp-faq.de/
    1. hi

      Obwohl image/pjpeg noch durch die Welt geistert,
      ist der korrekte MIME-Type: image/jpeg

      image/jpeg dieser mime type funktioniert bei mir nur im mozilla aber im IE nicht !!! versteh ich nicht ;-(

      Wie gesagt, empfehle ich Dir, den Typ mit getimagesize()zu »»ermitteln.

      möchte aber auch noch application/zip zulassen !!

      btw: Warum ausgerechnet TIFF?

      weil meine kunden ihre printfertigen daten ablegen wollen die meisst im tiff format reinkommen !!

      manche können nämlich ihre daten nicht zippen ;-(

      gibt es keine lösung in einer if abfrage die verschiedenen mime tipes zulässt ??

      help help help

      Kai

      Gruesse,

      Thomas

      1. Hello,

        möchte aber auch noch application/zip zulassen !!

        Wenn Du auf Linux arbeitest, dann schau Dir mal das Programm "file" von Linux an, die Hilfe und die man-Seiten. Das kann man dann mit einigen geschickten Paramtern mit system() aufrufen und den Filetyp (MIME-Type) prüfen lassen. Da kannst Du dann zu 99,99% sicher sein, dass es auch stimmt.

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

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen