2015-01-13 33 views
1

即時通訊編寫一個腳本,調整大小和裁剪上傳的圖像。Imagecreatefromjpeg使用錯誤的文件

所有有效文件都OK ...... 但我的一些遊客試圖上傳非有效問卷。例如文件擴展名是JPG,但實際上它是一個TIFF文件的..上傳文件的擴展名看起來GIF,但在它的EXIF信息寫入「其一個jpg」 ..等。

你可以想像,imagecreatefromXX()函數都是在這種情況下給錯誤(它不是一個有效的JPG等)..

你有什麼想法,我該如何解決這個問題?

我該如何修改我最近的代碼?

switch($type) { 
    case 'gif': 
    $img = imagecreatefromgif($source); 
    break; 
    case 'jpg': 
    case 'JPEG': 
    case 'jpeg': 
    $img = imagecreatefromjpeg($source); 
    break; 
    case 'png': 
    $img = imagecreatefrompng($source); 
    break; 
} 
+0

只要添加一個默認語句,如果得到的話就會引發錯誤。 –

+0

我不明白..怎麼樣? – deniz

回答

1

您最好的選擇可能是將修改設置$類型,而不是你共享的代碼(儘管約翰·孔德的建議,有一個默認的情況下是一個很好的)的代碼,並使用類似exif_imagetype(你的問題建議可能已經在使用)來確定類型,而不是信任擴展名(寫入文件時甚至可能想要更改爲適當的類型):擴展名是用戶提供的數據,如此,最不可能是準確和/或有用的。

例如

$type = exif_imagetype($source); 
switch ($type){ 
    case IMAGETYPE_GIF: 
      $img = imagecreatefromgif($source); 
      break; 
    case IMAGETYPE_JPG: 
      $img = imagecreatefromjpeg($source); 
      break; 
    case IMAGETYPE_PNG: 
     ... etc ... 

    default: 
     //Fail Gracefully 
} 
相關問題