Будет ли эта гарантия загруженного файла с суффиксом изображения - PullRequest
0 голосов
/ 05 декабря 2018

Я нахожусь в процессе написания скрипта загрузки изображений.Я добавляю много вещей, например, хранить вне webroot и получать доступ через php-скрипт и т. Д. Я прочитал одну вещь, чтобы проверить, что файл загружен вместо изображения.Например, остановите myimage.php.jpeg

Я написал следующий код, чтобы убедиться, что это файл изображения.Это лучший способ проверить, есть ли у файла имя изображения?

$imagename= $_FILES['myimage']['name'];

//check there is only one fullstop in the imagename
 if (substr_count($imagename,".")===1){
    $imagesuffix = substr($imagename, strpos($imagename, ".") + 1); 

    //if image type is not a particular type of image
      if($imagesuffix != "jpg"|| $imagesuffix != "png"||$imagesuffix != "jpeg"||$imagesuffix != "gif"){
       echo"image filename is valid";
     }
     else{
       echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
     }
 }
 else{
    echo"this filename is invalid";
 }

1 Ответ

0 голосов
/ 05 декабря 2018

Если вы хотите разрешить загрузку только файлов с изображениями, вам нужно будет просмотреть содержимое файла.

    <?php

    $image = 'image_file_to_test.png';

    if (($imageInfo = getimagesize($image, $jpegInfo)) === FALSE)
            die('Not an image.');
// OR    

    if (($imageType = exif_imagetype($image)) === FALSE)
            die('Not an image');

При желании вы можете проверить либо $imageInfo ( документы ) или $imageType ( документы ) для определения формата изображения.Обратите внимание, что exif_imagetype() - самый быстрый из двух, но он не скажет вам столько, сколько getimagesize().

...