Урок 28
Собираем всё вместе — готовый блог
20 минЧто мы создали?
За время курса вы построили полноценный блог с нуля. Давайте соберём всё вместе и посмотрим, как это работает.
Финальная структура проекта
my-blog/
├── docker-compose.yml # Конфигурация Docker
├── docker/
│ └── Dockerfile # Сборка PHP-контейнера
│
└── public/ # Публичная папка сайта
├── index.php # Главная — список постов
├── post.php # Страница отдельного поста
│
├── login.php # Вход в систему
├── logout.php # Выход
├── register.php # Регистрация
├── profile.php # Профиль пользователя
│
├── create_post.php # Создание поста
├── edit_post.php # Редактирование поста
├── delete_post.php # Удаление поста
│
├── includes/
│ ├── config.php # Конфигурация + подключение к БД
│ ├── database.php # Функции для работы с БД
│ ├── helpers.php # Вспомогательные функции
│ ├── header.php # Шапка сайта
│ └── footer.php # Подвал сайта
│
└── admin/ # Админ-панель
├── index.php # Главная админки
├── posts.php # Управление постами
└── users.php # Управление пользователями
Как всё работает вместе
1. Посетитель открывает главную страницу
Браузер → http://localhost → Nginx → PHP
↓
index.php
↓
getAllPosts() → MySQL
↓
HTML с постами ← MySQL
↓
Браузер показывает страницу
2. Посетитель читает пост
Клик "Читать далее" → post.php?id=5
↓
getPostById(5) → MySQL
↓
HTML поста ← MySQL
3. Пользователь регистрируется
register.php → Форма → POST → Валидация
↓
createUser() → password_hash() → MySQL
↓
"Регистрация успешна!"
4. Пользователь входит
login.php → Форма → POST → getUserByLogin()
↓
password_verify() → Успех?
↓
$_SESSION["user_id"] = ...
↓
Редирект на главную
5. Авторизованный создаёт пост
create_post.php → requireLogin() → Авторизован?
↓
Форма → POST → Валидация
↓
createPost() → MySQL
↓
Редирект на созданный пост
6. Админ управляет контентом
admin/index.php → requireAdmin() → Роль = admin?
↓
Статистика + Ссылки на управление
↓
admin/posts.php → getAllPosts()
↓
Таблица всех постов с кнопками
Пошаговая проверка: работает ли всё?
Запустите Docker (docker compose up -d) и проверьте каждый пункт:
Шаг 1: Главная страница
- Откройте http://localhost
- ✅ Видите список постов из базы данных
- ✅ Каждый пост показывает: заголовок, дату, автора, превью текста
- ✅ Есть ссылка "Читать далее"
Шаг 2: Страница поста
- Кликните на любой пост
- ✅ Открылась страница
post.php?id=X - ✅ Видите полный текст поста
- ✅ Есть ссылка "Вернуться к списку"
Шаг 3: Регистрация
- Кликните "Регистрация" в шапке
- Попробуйте отправить пустую форму → ✅ Ошибки валидации
- Заполните правильно и отправьте → ✅ "Регистрация успешна!"
- Проверьте в phpMyAdmin → ✅ Новый пользователь в таблице users
Шаг 4: Вход
- Кликните "Войти"
- Введите данные нового пользователя
- ✅ Перенаправило на главную
- ✅ В шапке видите "Привет, [имя]! Выйти"
Шаг 5: Создание поста
- Кликните "+ Новый пост" (или перейдите на
/create_post.php) - Заполните форму: заголовок и содержимое
- Нажмите "Опубликовать"
- ✅ Перенаправило на созданный пост
- ✅ Видите свой пост на главной
Шаг 6: Редактирование и удаление
- Откройте свой пост
- ✅ Внизу есть кнопки "Редактировать" и "Удалить"
- Отредактируйте пост → ✅ Изменения сохранились
- Удалите пост → ✅ Пост исчез, показывается сообщение
Шаг 7: Проверка прав
- Создайте второго пользователя через регистрацию
- Войдите под вторым пользователем
- Откройте пост первого пользователя
- ✅ Кнопок "Редактировать" и "Удалить" НЕТ
- Попробуйте напрямую открыть
edit_post.php?id=X - ✅ "Доступ запрещён"
Шаг 8: Админ-панель
- Войдите как admin (пароль задавали при создании)
- Кликните "Админка" в шапке
- ✅ Видите статистику: количество постов и пользователей
- ✅ Можете управлять всеми постами
- ✅ Можете видеть всех пользователей
Как добавлять посты через админку
В админ-панели на странице "Управление постами" (/admin/posts.php) есть ссылка "+ Создать новый пост".
Эта ссылка ведёт на create_post.php — ту же форму создания, которую используют обычные пользователи. Разница в том, что:
- Админ может потом редактировать/удалять ЛЮБОЙ пост
- Обычный пользователь — только свои
Полный цикл работы админа:
- Войти как admin → Кликнуть "Админка"
- Посмотреть статистику → Сколько постов и пользователей
- Управление постами → Видеть все посты в таблице
- Создать пост → Ссылка "+ Создать новый пост"
- Редактировать любой пост → Ссылка "Редактировать" в таблице
- Удалить любой пост → Ссылка "Удалить" в таблице
- Управление пользователями → Просмотр списка пользователей
Что видят разные пользователи
| Действие | Гость | Пользователь | Админ |
|---|---|---|---|
| Просмотр постов | ✅ | ✅ | ✅ |
| Регистрация/Вход | ✅ | — | — |
| Создание поста | ❌ | ✅ | ✅ |
| Редактирование СВОЕГО поста | ❌ | ✅ | ✅ |
| Редактирование ЧУЖОГО поста | ❌ | ❌ | ✅ |
| Удаление СВОЕГО поста | ❌ | ✅ | ✅ |
| Удаление ЧУЖОГО поста | ❌ | ❌ | ✅ |
| Доступ к админке | ❌ | ❌ | ✅ |
Поздравляем!
Вы собрали полноценный работающий блог!
✅ Публичная часть с постами
✅ Система пользователей
✅ Создание/редактирование/удаление постов
✅ Админ-панель для управления
В следующем уроке поговорим о безопасности.
Вы собрали полноценный работающий блог!
✅ Публичная часть с постами
✅ Система пользователей
✅ Создание/редактирование/удаление постов
✅ Админ-панель для управления
В следующем уроке поговорим о безопасности.
Материалы по теме
- Глоссарий digital-терминов Глоссарий
- Статьи блога по разработке и SEO Блог
- Практические чеклисты по внедрению Чеклисты