Archiv verlassen und diese Seite im Standarddesign anzeigen : [PHP] mime Problem
Maisaffe
04.02.2006, 16:12
Abend.
if($_FILES[file1][type]=='image/bmp'or'image/gif'or'image/jpeg'or'image.png'){ # is (mime- ) data an image? # test data type
$upload[path] .= 'img/';
}
Ich lade jetzt eine JPG Datei hoch, diese hat die mime "image/jpeg".
Also wird $upload[path] um img/ erweitert. Super. :A
Aber wenn ich die Datei (rein fiktiv) "virus.exe" umbenenne in "virus.exe.jpg", kommt diese Datei (trotz anderer mime) trotzdem in /img.
Warum?
Dennis
Edit: Verflixt. Egal welche Datei ich nehmen (ob exe oder rtf) - egal welche mime - die Dateien kommen alle in img/
Weil du mit bla == blub || foo || bar nicht überprüfst, ob bla gleich blub, foo oder bar ist, sondern ob bla==blub ist, ob foo==true ist oder ob bar==true ist.
Bei dir überprüfst du dem entsprechend zum Beispiel ob 'image/gif' wahr ist. Nicht-leere Strings sind immer wahr, ergo wird dein if() immer ausgeführt.
Das was du willst ist
if($_FILES[file1][type] == 'image/bmp' or
$_FILES[file1][type] == 'image/gif' or
$_FILES[file1][type] == 'image/jpeg' or
$_FILES[file1][type] == 'image/png')
{
$upload[path] .= 'img/';
}
Maisaffe
04.02.2006, 17:06
Ist das echt nicht kürzer machbar? Mist. :(
Dennis
Mit 'nem switch ginge es natürlich auch.
switch ($_FILES['file1']['type'])
{
case 'image/bmp':
case 'image/gif':
case 'image/jpg':
case 'image/png': $upload['path'] = 'img/'; break;
case 'whatever':
case 'whatever/party': $upload['path'] = 'whatever/'; break;
# ...
}
Maisaffe
05.02.2006, 13:23
Mit 'nem switch ginge es natürlich auch.
switch ($_FILES['file1']['type'])
{
case 'image/bmp':
case 'image/gif':
case 'image/jpg':
case 'image/png': $upload['path'] = 'img/'; break;
case 'whatever':
case 'whatever/party': $upload['path'] = 'whatever/'; break;
# ...
}
Hey, stimmt. ;)
Eine schöne Lösung finde ich - hab das noch nie ausprobiert mit dem break; weglassen.
Sollte ich auch mal asuprobieren.
Wie kann ich jetzt den wahren MIME herausfinden? z.B. wenn ich die Datei "ich bin in wirklichkeit.txt.jpg" hochlade, das der Webserver es merkt das es keine jpg Datei ist sondern eine Textdatei.
Dennis
Powered by vBulletin® Version 4.2.3 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.