Блог PHP тематики
Реализуйте блог PHP тематики, в котором авторы будут писать и размещать статьи на тему PHP. Сайт должен поддерживать регистрацию с разделением по ролям: пользователь, автор, администратор.
Основные возможности проекта
- Главная страница со списком статей и пагинацией (по 10 статей).
- Детальная страница каждой статьи с комментариями.
- Система ролей: пользователь, автор, администратор.
- Авторы могут создавать и управлять своими статьями.
- Пользователи могут оставлять комментарии к статьям.
- Администратор может назначать авторов, банить и удалять пользователей.
- Страница со списком авторов и количеством их статей.
Регистрация и роли
На сайте должна быть реализована система регистрации и авторизации с разделением по ролям:
- Регистрация пользователя (имя, email, пароль).
- Авторизация по email и паролю.
- Восстановление пароля через email.
- Валидация всех полей на стороне сервера.
- Три роли пользователей:
- Пользователь - может читать статьи и оставлять комментарии.
- Автор - может создавать, редактировать и удалять свои статьи.
- Администратор - управляет пользователями (назначает авторов, банит, удаляет).
- При регистрации все пользователи получают роль "пользователь".
- Назначить пользователя автором может только администратор.
Главная страница
На главной странице блога должен быть выведен список 10 последних статей с пагинацией:
- Заголовок статьи (ссылка на полный текст).
- Краткое описание (анонс).
- Дата публикации.
- Имя автора (ссылка на страницу со списком статей автора).
- Ссылка на страницу с полным текстом.
Статьи должны быть отсортированы по убыванию даты (сначала новые). При клике на имя автора открывается страница со списком всех статей этого автора.
Страница статьи
На странице отдельной статьи должна быть представлена полная информация:
- Заголовок статьи.
- Имя автора (ссылка на страницу со списком статей автора).
- Полный текст статьи.
- Дата публикации.
Под текстом статьи должны размещаться комментарии пользователей:
- Комментарии могут оставлять только зарегистрированные пользователи.
- Форма комментария: текст комментария (текстареа).
- Отображение имени автора комментария, даты и текста.
- Комментарии отображаются в хронологическом порядке (сначала старые).
- Автор статьи и администратор могут удалять любые комментарии к своей статье.
Личный кабинет автора
На главной странице админки автор должен видеть список своих статей:
- Заголовок статьи (ссылка на просмотр на сайте).
- Дата создания.
- Количество комментариев к статье.
- Действия: редактировать, удалить (с подтверждением).
- Ссылка на создание новой статьи.
- Пагинация для списка статей (по 10 статей).
Добавление статьи (для автора)
На странице добавления статьи располагается форма со следующими полями:
- Заголовок статьи (инпут).
- Краткое описание (текстареа).
- Полный текст статьи (текстареа).
- Категория (выпадающий список).
- Кнопка "Опубликовать".
Редактирование статьи (для автора)
На странице редактирования статьи располагается форма с теми же полями, что и при создании, но заполненными текущими данными статьи:
- Заголовок статьи (инпут).
- Краткое описание (текстареа).
- Полный текст статьи (текстареа).
- Категория (выпадающий список).
- Кнопка "Обновить".
Личный кабинет администратора
На главной странице админки администратор должен видеть список всех пользователей:
- Имя пользователя и email.
- Текущая роль (пользователь, автор, администратор).
- Дата регистрации.
- Статус (активен, забанен).
- Действия: назначить автором, разжаловать из авторов, забанить, разбанить, удалить пользователя.
- Фильтр для вывода пользователей с определенной ролью.
- Поиск пользователей по имени или email.
- Пагинация для списка пользователей (по 20 пользователей).
Страница с авторами (для администратора)
На странице с авторами администратор должен видеть список всех авторов:
- Имя автора (ссылка на страницу со списком статей автора на сайте).
- Количество статей автора.
- Дата назначения автором.
- Дата последней публикации статьи.
- Ссылка на список статей автора в админке для управления.
- Сортировка по количеству статей (по убыванию).
Категории
На сайте должна быть реализована система категорий для статей:
- Категории создаются заранее (например: основы PHP, ООП, базы данных, фреймворки, безопасность).
- При создании статьи автор выбирает категорию из выпадающего списка.
- На главной странице у каждой статьи отображается категория.
- При клике на категорию выводится список всех статей этой категории.
- Администратор может управлять категориями (создание, редактирование, удаление).
Дополнительные возможности
- Поиск статей по ключевым словам (название и содержимое).
- Автоматическое создание ЧПУ (человеко-понятных URL) из заголовка.
- Вывод похожих статей (по категории) на странице статьи.
- Статистика блога: общее количество статей, авторов, комментариев.