Создать простой сайт объявлений
Функциональные требования
Необходимо создать сайт по добавлению туристических объявлений. Сайт состоит из:
a. Модуля авторизации и регистрации (форма одна, в зависимости от того, есть ли такой пользователь в системе).
b. Напоминание пароля. Если логин (e-mail) и пароль введен неправильно, появляется всплывающая подсказка с переходом на форму напоминания пароля (при условии, что такой e-mail зарегистрирован, в противном случае регистрирует пользователя и отправляет данные ему на почту).
c. Список объявлений с возможностью сортировки и фильтрации.
d. Возможность удаления опубликованных объявлений автором
e. Если дата вылета прошла, то объявление должно сниматься
f. Объявление публикуется на 15 дней (должна быть возможность указать где-то в файле или в базе данных)
g. Все справочники должны наполняться через базу данных (отдельные интерфейсы строить не нужно)
h. Флаги стран должны браться из определенной папки на веб-сервере. Название файла соответствует идентификатору страны в базе данных.
i. В фильтрах можно указать страну (поле куда), дата (варианты: в ближайшее время – в течении месяца, далее можно выбрать конкретный месяц) и тип тура (цель путешествия)
j. Все ссылки при добавлении объявления должны убираться.
k. Должна быть защита от sql инъекций и js инъекций
l. ЧПУ
m. Каждый город вылета – отдельный субдомен.
n. Должен быть предпросмотр объявления (открывается в отдельной вкладке).
o. Продолжительность авиаперелета привязывается к курорту
p. Если какое-либо из полей не заполнено, в объявлении оно не должно выходить
q. Редактирование объявления не предусмотрено
r. Привязка к городу по-умолчанию должна делаться на основании ip адреса
s. При заполнении объявления и ввода контактных данных единожды, они должны запоминаться и автоматически подставляться в новое объявление. Если они поменялись – делаем обновление в базе.
t. Время жизни сессии – неделя.
Нефункциональные требования
1. Максимально простой и надежный код
2. Система в дальнейшем будет дорабатываться, нужно строить с учетом этого
Лучше всего использовать какой-либо MVC фреймворк, что бы не изобретать велосипед.