mime typen - bilder upload

AveralDalton

Grünschnabel
hallo!
ich bin noch recht neu in php oder besser gesagt komplett neu und wollte mir für meine homepage ein kleines script basteln, womit ich bilder hochladen kann...
dies klappt soweit auch ganz gut!
ich habe nur die dateitypen bmp, gif, jpg bzw. jpeg und png dateien freigegeben, was beim upload von gif und bmp bildern auch wunderbar klappt, beim hochladen von jpg, jpeg und png bilder meckert er und gibt mir die fehlermeldung aus "Es dürfen nur *.gif, *.jpeg, *.jpg, *.png und *.bmp Fotos hochgeladen werden!"

ich benutze es zum testen auch nur auf einer lokalen xampp installation, aber das dürfte ja nicht der fehler sein, ansonsten kann ich dort keinen fehler entdecken.

weiß jemand was ich falsch mache?

PHP:
if ($type != "image/gif" && $type != "image/jpeg" && $type != "image/png" && $type != "image/bmp") $error[] = "Es dürfen nur *.gif, *.jpeg, *.jpg, *.png und *.bmp Fotos hochgeladen werden!";

beste grüße
 
Mit welchen Befehl ermittelst du denn den type.
Es könnte evtl. sein das die Variable $type leer ist.
Überprüfe diese mal mit
PHP:
var_dump ( $type );
 
PHP:
if ($type != "image/gif" OR $type != "image/jpeg" OR $type != "image/png" OR $type != "image/bmp") $error[] = "Es dürfen nur *.gif, *.jpeg, *.jpg, *.png und *.bmp Fotos hochgeladen werden!";
Bei deiner Version müsste ja alles gelten.
 
er hat mir jetzt ausgegeben
"string(11) "image/pjpeg""

hab das jetzt geändert in
PHP:
 && $type != "image/pjpeg"
beim png gibt er "string(11) "image/x-png" aus, hab das also in image/x-png geändert...
vielen vielen dank, haut jetzt hin!

var_dump kannte ich garnicht, werd ich mir aber merken!!

beste grüße!!

PHP:
if ($type != "image/gif" OR $type != "image/jpeg" OR $type != "image/png" OR $type != "image/bmp") $error[] = "Es dürfen nur *.gif, *.jpeg, *.jpg, *.png und *.bmp Fotos hochgeladen werden!";
Bei deiner Version müsste ja alles gelten.


nein, wenn die datei zb. != image/bmp ist, gibt er ne fehlermeldung aus, wenn ich keine fehlermeldung habe lädt er die datei hoch :)

PHP:
if (empty($error)) 
{    
	move_uploaded_file ($tempname, "upload_bilder/".$name);    
	echo "<meta http-equiv='refresh' content='2;URL=upload.php'>";
}
 
Vorsicht!
der mime_type wird nicht von allen Browsern mitgesendet und kann auch gefälscht werden !
mit einem gefakten mime_type und der Dateiendung php ließen sich böse dinge anstellen, also prüf lieber auf die datei-endung.
Um zu erkennen ob es ein bild ist, würde sich noch getimagesize() eignen.
 
Der gesendete Inhaltstyp ist meistens von der Dateiendung abhängig, da die Webbrowser den Inhaltstyp anhand der Dateiendung auswählen. Eine einfache leere Textdatei umbenannt mit einer typischen Grafikdatei-Dateiendung würde somit auch mit passendem Inhaltstyp gesendet. Daher ist eine Verifizierung der angeblichen Grafikdatei mithilfe der getimagesize()-Funktion oder einer ähnlichen Funktion unbedingt notwendig.
 
Zurück