@hooligan377

Что скажете про загрузку картинок?

Накидал такой вот код... Хотелось бы узнать на сколько он безопасен и есть ли шанс через него залить шелл?

/* Проверяем, если нет папки, то создаем ее */
 if (!file_exists('./upload')) { mkdir('./upload', 0422, true); } 

/* Оперделяем папку для загрузки файлов */
$dir = './upload/';

/* Присваиваем файлу новое имя*/
$name =  ''.time().date('Y').rand(1111,9999).'';

/* Присваиваем файлу новый формат */
$type = '.jpg';

/* Связываем все вместе для удобства */
$upload = ''.$dir.$name.$type.'';

/* Максимальный размер файла: 5 мб */
$maxsize = 1024*1024*5;

/* Масив сообщений по коду ошибок */
$message = array(0 => 'Файл был успешно загружен на сервер', 
                 1 => 'Размер принятого файла превысил максимально допустимый размер', 
                 2 => 'Размер загружаемого файла превысил значение MAX_FILE_SIZE', 
                 3 => 'Загружаемый файл был получен только частично', 
                 4 => 'Файл не был загружен', 
                 6 => 'Отсутствует временная папка', 
                 7 => 'Не удалось записать файл на диск',
                 8 => 'PHP-расширение остановило загрузку файла');



/* Проверям, не привышает ли файл допустимый размер */
if($_FILES['file']['size'] != 0 and $_FILES['file']['size'] <= $maxsize){

/* Загружаем файл и помещаем во временную папку */
if (move_uploaded_file($_FILES['file']['tmp_name'], $upload)){ 

/* Начинаем проверку файла с помощью php функции */
$size = getimagesize($upload); 

/* Проверяем, соответствует ли mime тип или это вредоносный код */
if($size[mime] == 'image/gif' || $size[mime] == 'image/jpeg' || $size[mime] == 'image/png'){

/* Проверяем, соответствует ли картинка выставленным максимальным значениям: ширина 1500 высота 500 */
}elseif ($size[0] < 1501 && $size[1] < 501){
	/* Все хорошо */
}else{
	/* Покажем ощибку */
	print($message[$_FILES['file']['error']]);
	/* Если нет, то удаляем файл*/
     unlink($upload); 
}
}}
?>

<hr>
<form enctype="multipart/form-data" action="/index.php" method="POST">

    <input type="hidden" name="MAX_FILE_SIZE" value="1048512"/>

    Отправить этот файл: <input name="file" type="file" />
    <input type="submit" value="Отправить файл" />
</form>
  • Вопрос задан
  • 514 просмотров
Пригласить эксперта
Ответы на вопрос 1
Avenax
@Avenax
php dev webcom group
https://github.com/verot/class.upload.php
И не напрягайся
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы