Ergebnis 1 bis 5 von 5

Thema: [PHP] mime Problem

  1. #1

    [PHP] mime Problem

    Abend.

    PHP-Code:
    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.

    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/

    Geändert von Maisaffe (04.02.2006 um 17:20 Uhr)

  2. #2
    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
    PHP-Code:
    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/';


  3. #3
    Ist das echt nicht kürzer machbar? Mist.

    Dennis

  4. #4
    Mit 'nem switch ginge es natürlich auch.

    PHP-Code:
    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;
        
    # ...


  5. #5
    Zitat Zitat von Tomarus
    Mit 'nem switch ginge es natürlich auch.

    PHP-Code:
    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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •