| data | ||
| lib | ||
| migrations | ||
| photos | ||
| scripts | ||
| thumbs | ||
| .gitignore | ||
| .htaccess | ||
| admin-mysql.php | ||
| admin.php | ||
| app.js | ||
| config.php.example | ||
| deploy-config.php.example | ||
| deploy.php | ||
| favicon.svg | ||
| index-mysql.php | ||
| index.php | ||
| README.md | ||
| style.css | ||
Галерея фото (PHP + MySQL)
Актуальная версия проекта — это MySQL-контур с двумя основными точками входа:
index.php— публичная витрина (разделы, тематики, карточки фото, комментарии),admin.php?token=...— закрытая админка (управление разделами/тематиками/фото/пользователями/комментариями/настройками).
index-mysql.php и admin-mysql.php оставлены как алиасы для обратной совместимости.
Что умеет проект
- Иерархия каталога: разделы + тематики (2 уровня).
- Для фото поддерживаются версии
beforeиafter. - Версия
afterна публичной части отдается с watermark (текст, яркость и угол настраиваются в админке). - Комментарии доступны только по персональной viewer-ссылке.
- Для карточек каталога используются превью из
thumbs/. - Превью создаются/обновляются автоматически при загрузке, замене и повороте изображения.
Структура
photo.andr33v.ru/
├─ index.php # публичная витрина
├─ admin.php # админка по токену
├─ index-mysql.php # alias -> index.php
├─ admin-mysql.php # alias -> admin.php
├─ deploy.php # webhook деплоя
├─ style.css # базовые стили
├─ favicon.svg
├─ config.php.example # шаблон конфига БД
├─ deploy-config.php.example # шаблон токена/настроек деплоя
├─ lib/
│ ├─ db.php # PDO + загрузка config.php
│ ├─ db_gallery.php # доступ к данным галереи
│ ├─ thumbs.php # генерация/чтение/удаление превью
│ ├─ admin_http.php # JSON-ответы админки
│ ├─ admin_get_actions.php # GET-экшены админки
│ ├─ admin_post_actions.php # POST-экшены админки
│ └─ admin_helpers.php # helper-функции админки
├─ migrations/
│ ├─ 001_init.sql
│ ├─ 002_site_settings.sql
│ ├─ 003_comment_users_plain_token.sql
│ └─ 004_topics.sql
├─ scripts/
│ ├─ migrate.php # запуск миграций
│ ├─ generate_thumbs.php # backfill превью
│ └─ deploy.sh # deploy на shared hosting
├─ photos/ # оригиналы (runtime)
├─ thumbs/ # превью (runtime)
└─ data/ # runtime (логи/служебные файлы)
Требования
- PHP 8.2+
- MySQL 8+ (или совместимая MariaDB)
- PHP-расширения:
pdo_mysql(обязательно),gdилиimagick(для watermark/превью).
Быстрый старт
- Создай
config.php:
cp config.php.example config.php
-
Заполни доступы к БД в
config.php. -
Прогон миграций:
php scripts/migrate.php
- Локальный запуск:
php -S 127.0.0.1:8080
- Открой:
http://127.0.0.1:8080— публичная часть,http://127.0.0.1:8080/admin.php?token=<SECRET>— админка (после настройкиdeploy-config.php).
Настройка админки
Админка использует token из deploy-config.php.
Создай файл:
cp deploy-config.php.example deploy-config.php
Минимально заполни:
token— длинный случайный секрет.
В админке доступны разделы:
- Разделы,
- Тематики,
- Фото,
- Пользователи,
- Комментарии,
- Настройки (welcome + watermark параметры).
Превью и watermark
- Публичный каталог карточек грузит превью через
?action=thumb&file_id=.... - Превью создаются автоматически в
thumbs/:- при загрузке файлов,
- при замене файлов,
- после поворота.
- Для старых данных можно догенерировать превью:
php scripts/generate_thumbs.php
- Версия
afterв публичке отдается с watermark (?action=image&file_id=...).
Деплой
Webhook:
deploy.php?token=<SECRET>
Скрипт scripts/deploy.sh:
- делает
git fetch --all --prune, - переключает код на
origin/<branch>черезgit reset --hard, - сохраняет runtime-папки (
photos,thumbs,data).
Важно: деплой-скрипт перетирает рабочие изменения в репозитории на сервере.
Примечания
- Проект принудительно редиректит на HTTPS и non-www через
.htaccess. - Для production рекомендуется ограничить webhook по IP и/или Basic Auth (
deploy-config.php). - Если
config.phpотсутствует, приложение корректно падает с ошибкой подключения к БД.