Skip to content

Instantly share code, notes, and snippets.

@mol4anovma
Created February 10, 2017 08:36
Show Gist options
  • Save mol4anovma/45378c315146d503557b36a74efefa10 to your computer and use it in GitHub Desktop.
Save mol4anovma/45378c315146d503557b36a74efefa10 to your computer and use it in GitHub Desktop.
Ответ на вопрос 1
<?php
//Оригинал кода
if (!file_exists($_SERVER['DOCUMENT_ROOT'] . $path)) {
return 0;
}
$path = $glavurl . $path;
$size = getimagesize($path);
$image[0] = $size[0];
$image[1] = $size[1];
$image[2] = $path;
return $image;
//Описание проблемы.
//$path в данном случае будет иметь вид "http://sitename/path/file.ext",
//что приведёт к загрузке данного файла удалённо, не из локальной директории.
//Ошибка в коде генерируется функцией getimagesize(), которая не может получить доступ к файлу.
//Кроме того в коде отсутствует проверка типа изображения по MIME, что может так же привести к проблеме
//(даже если путь был бы локальным). Требуется какая-либо проверка, так как без неё может сложиться
//ситуация, когда исходный файл - архив и при попытке его прочитать (разархивировать) произойдёт
//переполнение памяти, выделенной скрипту.
//ВОЗМОЖНОЕ РЕШЕНИЕ
function getImageStat($path, $glavurl = null)
{
$image_path = $_SERVER['DOCUMENT_ROOT'] . $path; //Сохраним в переменную, ещё пригодится
if (!file_exists($image_path)) {
return 0;
}
$allowed_mimes = ["image/gif", "image/jpeg"]; //И все другие типы, какие надо
$glavurl = (empty($glavurl)) ? $_SERVER["HTTP_HOST"] : $glavurl;
if (!in_array(mime_content_type($image_path), $allowed_mimes)) {
return 0;
}
$size = getimagesize($image_path);
$image[0] = $size[0];
$image[1] = $size[1];
$image[2] = $glavurl . $path;
return $image;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment