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