Техническое задание: Система загрузки фотографий для профиля
Цель проекта
Разработать надежный и удобный модуль на PHP, позволяющий пользователям загружать фотографии в свой профиль и управлять ими, в том числе назначать главное изображение.
Основные функциональные требования
- Создание интерфейса для загрузки изображений (форма с полем выбора файла).
- Реализация серверной обработки загружаемых файлов на PHP.
- Проверка файлов на:
- Тип (разрешить только форматы JPEG, PNG, WebP).
- Размер (ограничить максимальный вес файла).
- Безопасность (базовая проверка на вредоносный код).
- Автоматическое изменение размера и оптимизация загруженных изображений для создания превью.
- Сохранение оригиналов и обработанных копий в заданную структуру каталогов на сервере.
- Интеграция с базой данных для привязки фотографий к профилю пользователя.
- Создание галереи загруженных пользователем фотографий в личном кабинете.
- Функционал выбора одной из загруженных фотографий в качестве главной (аватарки/основной).
- Визуальное выделение главной фотографии в интерфейсе.
- Возможность удаления загруженных фотографий (кроме главной, если она не удаляется последней).
Требования к безопасности
- Защита от прямого доступа к файлам в папке загрузок.
- Генерация уникальных имен для загружаемых файлов во избежание коллизий и перезаписи.
- Валидация всех входящих данных от пользователя.
Технический стек
- Основной язык: PHP (чистый или в рамках указанного фреймворка, если применимо).
- Допустимо использование библиотек для обработки изображений (например, GD или Imagick).
- Front-end: HTML, CSS, JavaScript (для улучшения UX, например, предпросмотр перед загрузкой).
Ожидаемый результат
Готовый, протестированный модуль, интегрированный в существующую или новую систему пользовательских профилей. Код должен быть хорошо структурирован, прокомментирован и готов к развертыванию.