2012-01-23 18 views
-7

私はこの単純なPHPファイルアップロードスクリプトをテストしました。 IE以外のすべてのブラウザで動作:(ファイルアップロードがIEで動作しない

IEプリント「FILETYPEサポートされていません」のコード内で定義されている:それはIEが「画像/ PNG」よりも、別のMIMEタイプでPNGを送ることを意味

if (isset($_POST['add'])) { 

    $order = $_POST['display_order']; 
    $img = $HTTP_POST_FILES['imagefile']['name']; 
    $url = $_POST['url']; 

    // CONNECT TO DB 
    mysql_connect(localhost,$username,$password); 
    @mysql_select_db($database) or die("Unable to select database"); 


    $types = array('image/jpeg', 'image/gif', 'image/png', 'image/tiff', 'image/bmp', 'image/pjpeg'); 
    $target_path = "media/"; 
    $target_path = $target_path . basename($_FILES['imagefile']['name']); 

    if (in_array($_FILES['imagefile']['type'], $types)) { 

    if(move_uploaded_file($_FILES['imagefile']['tmp_name'], $target_path)) { 

     mysql_query(
     "INSERT INTO slider_luxury 
      (display_order, imagefile, url) 
     VALUES 
      ('$order', '$img', '$url')" 
    ); 

     header('Location: luxury_slider.php'); 

    } else { 

     echo "There was an error uploading the slide, please try again!"; 

    } 

    } else { 

    echo "FILETYPE NOT SUPPORTED"; 

    } 

} 
+0

だから、デバッグ文を追加失敗しているどのような条件を見つけるの比較しますあなたが何か他のものを使用しているときにIEを使用しているときのその条件への入力。 – Quentin

+0

してみてくださいvar_dump($ _ FILES);あなたが得たものを参照してください –

+0

このデータで実際に何をしていますか?おそらくすべてのイメージタイプを受け入れることができるので、 'strtolower(substr($ _ FILES ['imagefile'] ['type']))、0,6))== 'image /''をチェックすることができます。ブラウザから送信されたMIMEタイプに依存することは問題を求めています。スプーフィングされる可能性があるため、実際には何も教えてくれません。また、ブラウザはファイル拡張子から大部分を生成しますが、これはやはり信頼できません。イメージが有効であることを本当に確認したい場合は、[GD](http://php.net/manual/en/book.image.php)のようなものを使用する必要があります。 – DaveRandom

答えて

関連する問題