PDA

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/

Dingsi
04.02.2006, 17:02
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

Tomarus
05.02.2006, 07:59
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