Аватар для Harma
43 / 44 / 35
Регистрация: 13.01.2016
Сообщений: 155

Скрипт загрузки изображения на сервер

27.05.2016, 05:02. Показов 741. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, форумчане. Набросал скрипт загрузки изображения.
Несколько вопросов:
1) Насколько данный скрипт корректен в плане безопасности?
2) Всё ли учтено при проверке изображения?
3) Корректна ли такое создание уникального имени файла?
4) Можно ли как то уменьшить количество строк?

Буду рад любой помощи. Заранее спасибо =)
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
    // Скрипт загрузки изображения на сервер
    // Автор: ***** ********* от 26.05.2016 (ver. 0.1)
 
if(isset($_FILES['filename']) && $_FILES['filename']['error'] == 0){
    // Проверяем размер загружаемого файла (если размер больше 3 МБ, то прекращаем работу скрипта)
    if($_FILES['filename']['size'] > 1024*1024) 
    { 
        exit ('Размер файла превышает 1 МБ!'); 
    } 
    else
    {
        // Директория для хранения изображения
        $dir = 'photo/'; 
        // Допустимые MIME-типы
        $arrType = array('image/jpeg','image/gif','image/png');
        // Допустимые расширения
        $arrExp = array('png', 'jpg', 'jpeg', 'gif');
        // Получаем расширение файла
        $exp = pathinfo($_FILES['filename']['name'], PATHINFO_EXTENSION);
        // Создание уникального имени файла
        $name= md5( microtime().mt_rand()).'.'.$exp;
        // Проверка MIME-тип файла и расширение
        $finfo = new finfo(FILEINFO_MIME_TYPE);
        $type = $finfo->file($_FILES['filename']['tmp_name']);
        // Если MIME-тип файла и расширение присутствует среди допустимых, то копируем и изменяем размер изображения с ресемплированием 
        if (in_array($type, $arrType) && in_array($exp, $arrExp)){
        // Устанавливаем тип содержимого
        header('Content-Type: '.$type);
        // Определяем размеры изобрадения и устанавливаем будущие
        list($width, $height) = getimagesize($_FILES['filename']['tmp_name']);
        $new_width = $width;
        $new_height = $height;
        // Создание подложки
        $image_p = imagecreatetruecolor($new_width, $new_height);
        // Характеристики файла
        $filename=$_FILES['filename']['tmp_name'];
        
        // Ресэмплирование
        switch ($exp) {
            case 'jpeg':
            case 'jpg':
                $image = imagecreatefromjpeg($filename);
                imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
                imagejpeg($image_p, $dir.$name);
            
                imagedestroy($image_p);
                break;
 
            case 'png':
                $image = imagecreatefrompng($filename);
                imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
                imagepng($image_p, $dir.$name);
            
                imagedestroy($image_p);
                break;
 
            case 'gif':
               $image = imagecreatefromgif($filename);
               imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
                imagegif($image_p, $dir.$name);
            
                imagedestroy($image_p);
                break;
 
            default:
                echo('Не поддерживаемый формат файла!');
    }
            
        }else{
            exit ('К сожалению, при загрузке изображения возникли проблемы!');
             }
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.05.2016, 05:02
Ответы с готовыми решениями:

Скрипт загрузки изображения с критериями
Доброго времени суток. С php никогда не работал, а разбираться - времени нет. Надо сделать форму загрузки изображения .png, с...

Не работает скрипт загрузки изображения
Чо характерно путь в базу вставляет а само изображения в папку не грузит. <form ENCTYPE="multipart/form-data"...

скрипт загрузки картинок на сервер.
Здравствуйте, помогите со скриптом для загрузки изображения с клиента на сервер, Скрипт сам рабочий, единственное что не нравится, это то...

1
 Аватар для Gcom
82 / 82 / 18
Регистрация: 03.02.2016
Сообщений: 564
Записей в блоге: 1
27.05.2016, 09:35
Цитата Сообщение от Harma Посмотреть сообщение
3) Корректна ли такое создание уникального имени файла?
Цитата Сообщение от Harma Посмотреть сообщение
$name= md5( microtime().mt_rand()).'.'.$exp;
Интересно как потом в этой "свалке" файлов найти нужный файл? Какие алгоритмы потом использовать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.05.2016, 09:35
Помогаю со студенческими работами здесь

Скрипт загрузки файлов на сервер
скрипт upload загрузка файлов на сервер , подскажите нужен скрипт с загрузкой файлов формата rar и exe на сервер и запретить загрузку asp...

Как увеличить скорость загрузки изображения на сервер ?
У меня интернет 10 мбит / с и фотография размером в 5 мегабайт на мой сервер грузится 50-60 секунд, до сих пор я считал это нормальным, но...

Как доработать скрипт загрузки изображений на сервер?
Имеется форма которая посылает данные в скрипт(посылает изображения) Загрузаемый файл должен иметь ограничения: размер не превышает 1...

Функция загрузки изображения на сервер
Вроде код должен работать как надо... я никак не могу найти в чем проблема, но функция сохранения картинки на сервер не работает, взгляните...

Скрипт загрузки файлов на сервер
Нужен красивий скрипт, для загрузки файлов на сервер. Файли будут загружатся размером больше 1 Гб. Может у каво есть что на примете....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru