Photo Rigma BiZ 📸

Photo Rigma BiZ — это галерея изображений, написанная на PHP и использующая MySQL для хранения данных. Проект включает такие функции, как загрузка изображений 📤, создание альбомов 📂, оценки ⭐ и администрирование 👮♂️.
Особенность проекта — удобная система взаимодействия между пользователями через фотографии, что делает его идеальным для учебных заведений. Студенты и преподаватели могут оценивать работы. В планах добавить функции комментариев и обсуждений для повышения интерактивности 💬.
Стек технологий: PHP 8.1+, MySQL 5.7+, HTML/CSS, JavaScript. Разработан с акцентом на простоту развертывания и использования 🚀.
📑 Оглавление
- 📌 Описание проекта
- ✨ Основные функции
- 💻 Требования к системе
- 🛠️ Установка
- 🎮 Использование
- 🗂️ Структура проекта
- 📜 Лицензия
- 🚀 Дополнительная информация
📌 Описание проекта
Photo Rigma BiZ предоставляет удобный интерфейс для загрузки, просмотра и управления изображениями 🖼️.
Основные возможности:
- Пользователи могут создавать свои альбомы 📂.
- Возможность оценивать фотографии ⭐.
- Оставлять комментарии 💬 (в планах).
- Взаимодействовать с другими участниками 👥.
Для кого предназначен?
Основная целевая аудитория — учебные заведения 🎓. Проект позволяет:
- Студентам выкладывать свои работы и получать обратную связь.
- Преподавателям (модераторам) оценивать фотографии и давать рекомендации.
- Администраторам управлять контентом, пользователями и настройками платформы 👮♂️.

✨ Основные функции
Для пользователей:
-
Загрузка изображений 📤: Пользователи могут загружать изображения в свои альбомы. Поддерживаются популярные форматы, такие как JPG, PNG и GIF.
-
Пользовательские альбомы 📂: Каждый пользователь может создавать и управлять своими альбомами. Альбомы можно редактировать, переименовывать или удалять.
-
Рейтинги и оценки ⭐: Возможность оценивать изображения и просматривать топовые фотографии. Рейтинги помогают выделить лучшие работы.
-
Комментарии 💬 (в планах): Пользователи смогут оставлять комментарии к изображениям для обсуждения и обратной связи.
Для администраторов:
-
Администрирование 👮♂️: Администраторы могут управлять пользователями, изображениями и настройками платформы через панель администратора.
-
Защита от SQL-инъекций и XSS 🔒: Встроенные механизмы защиты от вредоносных запросов обеспечивают безопасность данных.
-
Мультиязычность 🌐: Поддержка нескольких языков через файлы локализации. На данный момент доступны русский и английский языки.
-
Генерация эскизов 🖼️: Автоматическое создание миниатюр для загруженных изображений. Это ускоряет загрузку страниц и улучшает пользовательский опыт.
💻 Требования к системе
Для работы приложения необходимы следующие компоненты:
Основные компоненты:
-
Операционная система: Linux, macOS или Windows. Рекомендуется использовать Linux для серверной части.
-
Веб-сервер: Apache или Nginx. Документация Apache | Документация Nginx
-
PHP: Версия 8.1.0 или выше. Документация PHP
-
СУБД (Система управления базами данных):
- MySQL: Версия 5.7 или выше. Документация MySQL
- PostgreSQL: Версия 16+. Документация PostgreSQL
- SQLite (тестовая поддержка): Версия 3+. Требуется поддержка FTS5. Документация SQLite
Расширения PHP:
Для корректной работы приложения необходимо установить следующие расширения PHP:
PDO(документация PDO): Для работы с базой данных.GD(документация GD): Для обработки изображений.JSON: Для работы с JSON-данными.MBString: Для корректной обработки строк в разных кодировках.
Необязательные расширения (но поддерживаются):
GMagick(документация GMagick): Альтернативная библиотека для обработки изображений.IMagick(документация IMagick): Ещё одна мощная библиотека для работы с изображениями.Redis(документация Redis): Поддержка Redis для кеширования данных. Улучшает производительность за счёт быстрого доступа к данным в памяти.Memcached(документация Memcached): Поддержка Memcached для кеширования данных. Аналогично Redis, используется для оптимизации работы с часто запрашиваемыми данными.
Права доступа:
Убедитесь, что веб-сервер имеет права на запись в следующие директории:
avatar/— для хранения аватаров пользователей.gallery/— для хранения полноформатных изображений.logs/— для логов системы.thumbnail/— для хранения миниатюр изображений.cache/— для временных файлов (например, кэширование данных).
Рекомендации:
- Используйте HTTPS для защиты данных пользователей.
- Настройте регулярное резервное копирование базы данных.
🛠️ Установка
Для установки и настройки Photo Rigma BiZ выполните следующие шаги:
1. Клонируйте репозиторий
Клонируйте репозиторий на ваш сервер или локальную машину:
git clone https://github.com/ddayver/Photo-Rigma-BiZ.git
cd Photo-Rigma-BiZ
Важно: Ядро проекта находится в папке
www. Скопируйте её содержимое на ваш веб-сервер (например, в директорию/var/www/html).
2. Настройте базу данных
a) Создайте базу данных и пользователя
Для работы приложения требуется база данных. Выполните следующие шаги:
-
Для MySQL:
CREATE DATABASE photorigma; CREATE USER 'photorigma_user'@'localhost' IDENTIFIED BY 'secure_password'; GRANT ALL PRIVILEGES ON photorigma.* TO 'photorigma_user'@'localhost'; FLUSH PRIVILEGES; -
Для PostgreSQL (экспериментальная поддержка):
CREATE DATABASE photorigma; CREATE USER photorigma_user WITH PASSWORD 'secure_password'; GRANT ALL PRIVILEGES ON DATABASE photorigma TO photorigma_user; -
Для SQLite: SQLite не требует создания базы данных через SQL. Просто укажите путь к файлу базы данных в конфигурации. Если файл не существует, он будет создан автоматически при первом подключении. Убедитесь, что директория, в которой находится файл, доступна для записи.
b) Импортируйте структуру базы данных
Импортируйте структуру базы данных из файла sql/photorigma.sql:
-
Для MySQL:
mysql -u photorigma_user -p photorigma < sql/MySQL/photorigma.sql -
Для PostgreSQL:
psql -U photorigma_user -d photorigma -f sql/PostgreSQL/photorigma.sql -
Для SQLite:
sqlite3 /path/to/database.sqlite < sql/SQLite/photorigma.sqlПримечание: Замените
/path/to/database.sqliteна путь к файлу базы данных, указанный в конфигурации.
3. Настройте конфигурацию
Откройте файл www/include/config.php и отредактируйте параметры подключения к базе данных и другие настройки:
// =============================================================================
// НАЧАЛО РЕДАКТИРУЕМОЙ ЧАСТИ НАСТРОЕК
// =============================================================================
// Настройки подключения к базе данных
$config['db'] = [
'dbtype' => 'mysql', // Тип базы данных: 'mysql', 'pgsql' или 'sqlite'
'dbhost' => 'localhost', // Сервер базы данных (по умолчанию: localhost). Не используется для SQLite.
'dbport' => '', // Порт сервера (оставьте пустым для значения по умолчанию). Не используется для SQLite.
'dbsock' => '/var/run/mysqld/mysqld.sock', // Путь к сокету (если используется). Не используется для SQLite.
'dbuser' => 'photorigma_user', // Имя пользователя БД. Не используется для SQLite.
'dbpass' => 'secure_password', // Пароль пользователя БД. Не используется для SQLite.
'dbname' => 'photorigma', // Имя базы данных. Для SQLite это путь к файлу базы данных.
];
// Настройки папок проекта
$config['gallery_folder'] = 'gallery'; // Папка для хранения фотографий
$config['thumbnail_folder'] = 'thumbnail'; // Папка для хранения эскизов
$config['avatar_folder'] = 'avatar'; // Папка для хранения аватаров
// =============================================================================
// Настройки кеширования
// =============================================================================
$config['cache'] = [
'type' => 'file', // Тип кеширования ('file', 'redis', 'memcached'). По умолчанию: file.
'cache_dir' => 'cache', // Путь к директории для файлового кеширования. Используется только при type = 'file'.
'host' => '127.0.0.1', // Хост для Redis или Memcached. Используется только при type = 'redis' или 'memcached'.
'port' => '', // Порт для Redis или Memcached. Если не указан, используются значения по умолчанию.
];
// =============================================================================
// Настройки использования проекта в локальной или внешней сети
// =============================================================================
define('LOCALHOST_SERVER', false);
// =============================================================================
// КОНЕЦ РЕДАКТИРУЕМОЙ ЧАСТИ НАСТРОЕК
// =============================================================================
Примечание:
- Замените значения
dbuser,dbpassиdbnameна те, которые вы создали на предыдущем шаге.- Если используете PostgreSQL, измените параметр
dbtypeна'pgsql'.- Если используете SQLite: > - Установите параметр
dbtypeна'sqlite'.
- Укажите путь к файлу базы данных в параметре
dbname. Например:'dbname' => '/path/to/database.sqlite'.- Параметры
dbhost,dbport,dbsock,dbuserиdbpassигнорируются для SQLite.
4. Настройте права доступа
Убедитесь, что веб-сервер имеет права на запись в следующие директории:
chmod -R 775 avatar/
chmod -R 775 gallery/
chmod -R 775 logs/
chmod -R 775 thumbnail/
chmod -R 775 cache/
5. Запустите приложение
Откройте браузер и перейдите по адресу вашего сайта, например:
http://localhost/
6. Решение проблем
Если возникли проблемы:
- Проверьте логи сервера или файлы в папке
logs/. - Убедитесь, что все расширения PHP установлены и включены.
- Если используете PostgreSQL, проверьте совместимость версии и правильность настроек в
config.php.
Примечание: Поддержка PostgreSQL находится в процессе внедрения. Если вы столкнулись с ошибками при использовании PostgreSQL, сообщите о них в разделе Issues.
🎮 Использование
1. Регистрация и вход
- Перейдите на страницу регистрации и создайте учётную запись.
- После регистрации войдите в систему на странице входа.
Важно:
- По умолчанию в базе данных создаётся пользователь с логином
adminи паролемadmin.- После первого входа обязательно смените пароль через панель профиля пользователя.
2. Загрузка изображений
- Перейдите в свой профиль и создайте новый альбом.
- Загрузите изображения в альбом через форму загрузки.
Поддерживаются форматы: JPG, PNG, GIF. Максимальный размер файла: 10 МБ.
3. Оценка и комментирование
- Просмотрите изображения других пользователей.
- Оцените изображение (например, по шкале от 1 до 5 звёзд).
- Оставьте комментарий (если функция комментариев включена).
4. Администрирование
- Войдите в систему как администратор.
- Управляйте пользователями, изображениями и настройками платформы через панель администратора.
Панель администратора доступна по адресу
?action=admin.
5. Расширение функционала
Photo Rigma BiZ поддерживает возможность добавления собственного кода для реализации новых функций. Вот как это работает:
a) Добавление нового обработчика
- Создайте новый файл в папке
www/action/, например,custom_action.php. -
Реализуйте логику обработчика в этом файле. Например:
<?php // Подключаем необходимые пространства имен namespace PhotoRigma\Action; use PhotoRigma\Classes\Work; use PhotoRigma\Classes\User; // Устанавливаем файл шаблона $template->template_file = 'custom_template.html'; // Пример простого обработчика if ($_SERVER['REQUEST_METHOD'] === 'POST') { $user = new User(); $user->logAction('Custom action executed'); echo 'Custom action completed!'; }
b) Добавление HTML-шаблона (если требуется)
- Создайте новый HTML-шаблон в папке темы оформления, например,
www/themes/default/custom_template.html. - Убедитесь, что шаблон соответствует структуре текущих шаблонов.
c) Подключение нового кода
- Через панель администратора (планируется) или базу данных добавьте запись о новом обработчике.
- Если код написан правильно, ядро проекта автоматически “подхватит” его и интегрирует в систему.
Примечание:
- Все классы, методы и интерфейсы, предоставляемые ядром, уже доступны для использования в вашем коде.
- Для ознакомления с текущими классами и их функционалом используйте документацию, расположенную в папке
Documentation/.Документация генерируется автоматически с помощью Doxygen. Чтобы обновить её, выполните команду:
doxygen Doxyfile
6. Типичные проблемы
Если возникли проблемы:
- Проверьте логи системы в папке
logs/. - Убедитесь, что все необходимые расширения PHP включены.
- Если проблема не решена, сообщите о ней в разделе Issues.
🗂️ Структура проекта
Photo-Rigma-BiZ/
├── .gitignore # Файл для игнорирования ненужных файлов в Git
├── README.md # Основной файл документации проекта
├── Documentation/ # Документация проекта
├── sql/ # Папка с SQL-скриптами
│ ├── photorigma.sql # SQL-дамп для создания базы данных
│ └── update # SQL-запросы для обновления БД при обновлении кода
├── temp/ # Временные файлы (например, кэши, логи или промежуточные данные)
└── www/ # Основная папка с файлами веб-приложения
├── action/ # Папка с обработчиками действий (например, формы, запросы)
│ ├── admin.php # Обработчик действий для административной панели
│ ├── attach.php # Обработчик для вывода изображений или файлов
│ ├── category.php # Обработчик для работы с категориями
│ ├── main.php # Обработчик основных действий
│ ├── news.php # Обработчик новостей
│ ├── photo.php # Обработчик для работы с фотографиями
│ ├── profile.php # Обработчик для работы с профилями пользователей
│ ├── search.php # Обработчик для поиска
│ └── ... # Другие обработчики действий (возможны дополнения)
├── avatar/ # Папка для хранения аватаров пользователей
├── cache/ # Папка для хранения временных файлов (кеш)
├── gallery/ # Папка для хранения полноформатных изображений
│ ├── no_foto.png # Заглушка для вывода изображения при отсутствии фото
│ └── user/ # Папка для пользовательских галерей
├── include/ # Вспомогательные классы и функции
│ ├── common.php # Общие настройки и конфигурации
│ ├── db.php # Класс для работы с базой данных через PDO
│ ├── template.php # Класс для работы с HTML-шаблонами
│ ├── user.php # Класс для управления пользователями
│ ├── work.php # Вспомогательные функции и утилиты
│ └── ... # Другие вспомогательные файлы
├── install/ # Папка с файлами установки проекта (пока не разработано)
├── language/ # Файлы локализации
│ ├── russian/ # Русские переводы
│ │ └── main.php # Основные строки на русском языке
│ ├── english/ # Английские переводы (механизированный, без вычитки)
│ │ └── main.php # Основные строки на английском языке
│ └── ... # Другие языки и переводы (возможны дальнейшие добавления)
├── log/ # Логи системы
├── themes/ # Темы оформления
│ ├── default/ # Папка с темой по умолчанию
│ │ ├── images/ # Изображения, используемые в теме
│ │ ├── js/ # JavaScript-файлы темы
│ │ ├── jquery-ui.min.css # Стили для jQuery UI
│ │ ├── style.css # Основной файл стилей для темы
│ │ ├── admin.html # Шаблон для административной панели
│ │ ├── category.html # Шаблон для страницы категории
│ │ ├── footer.html # Шаблон для нижней части страницы (подвал)
│ │ ├── header.html # Шаблон для верхней части страницы (заголовок)
│ │ ├── main.html # Шаблон для главной страницы
│ │ ├── news.html # Шаблон для страницы новостей
│ │ ├── photo.html # Шаблон для страницы просмотра фотографии
│ │ ├── profile.html # Шаблон для страницы профиля пользователя
│ │ ├── search.html # Шаблон для страницы поиска
│ │ └── ... # Другие шаблоны
│ └── ... # Другие темы оформления
├── thumbnail/ # Папка для хранения миниатюр изображений
│ ├── no_foto.png # Заглушка для вывода миниатюры при отсутствии фото
│ └── user/ # Папка для миниатюр пользовательских галерей
├── index.php # Главный файл приложения
├── config.php # Файл конфигурации приложения
└── favicon.ico # Иконка сайта
📜 Лицензия
Проект распространяется под лицензией MIT. Это означает, что вы можете свободно использовать, копировать, изменять, объединять, публиковать, распространять, сублицензировать и/или продавать копии программного обеспечения при соблюдении следующих условий:
- Уведомление об авторских правах и условия лицензии должны быть включены во все копии или значимые части программного обеспечения.
Полный текст лицензии доступен в файле LICENSE. Доступен перевод лицензии на русский язык.
Авторство
Автор проекта: Dark Dayver. Если вы используете этот проект, пожалуйста, укажите авторство в своей документации или README.
Лицензирование стороннего контента
- Список нецензурных слов взят из репозитория List of Dirty, Naughty, Obscene, and Otherwise Bad Words и распространяется под лицензией Creative Commons Attribution 4.0 International (CC BY 4.0).
- Авторство списка принадлежит его создателям. Если вы используете этот список, пожалуйста, укажите источник и лицензию.
Рекомендации по использованию
Если вы используете Photo Rigma BiZ в своих проектах:
- Убедитесь, что вы соблюдаете условия лицензии MIT.
- Укажите ссылку на оригинальный репозиторий: https://github.com/ddayver/Photo-Rigma-BiZ.
🚀 Дополнительная информация
Связь с автором
Если у вас есть вопросы, предложения или вы хотите сообщить об ошибке, используйте следующие способы связи:
- Создайте issue в репозитории: Issues.
- Напишите в GitHub Discussions: Discussions.
Примечание: Пожалуйста, не используйте другие способы связи, кроме GitHub.
Благодарности
- Особая благодарность жене, которая разработала шаблон и помогает тестировать и улучшать проект.
- Помощь черпалась из следующих проектов:
- List of Dirty, Naughty, Obscene, and Otherwise Bad Words — список нецензурных слов.
- Doxygen — инструмент для генерации документации.
Планы
Мы активно работаем над улучшением Photo Rigma BiZ. В планах:
- Добавление функции комментариев 💬.
- Полноценная поддержка SQLite 🐘.
- Создание API для расширения функционала 🛠️.
- Интеграция с социальными сетями 🌐.
Описание
Photo Rigma BiZ — это веб-приложение для создания галереи изображений с поддержкой пользовательских альбомов, рейтингов, комментариев и администрирования. Проект разработан с использованием PHP, MySQL и HTML/CSS, что делает его легким для развертывания и использования.