Разработка простого личного кабинета фронтенд+бэкэнд:
html одностраничное веб приложение,
html для просмотра данных неавторизованными пользователями,
php скрипт для передачи данных в бд фильтруя их от sql инъекций и авторизации
mysql хранилище
1) в mysql бд project
таблица users с полями
id тип numeric id пользователя в бд increment с индексом по полю
email он же login с индексом по полю,
password кэш пароля с солью,
referer_id numeric id пользователя пригласившего (реферер) с индексом по полю,
last_active дата и время последней активности пользователя с индексом по полю,
last_sid id текущей сессии,
expire_sid дата и время окончания действия сессии
active_till дата до которой активна публикация данных
is_ban тип битовое аккаунт заблокирован 1/0
таблица memo c полями
id тип numeric increment id данных с индексом по полю
uid тип numeric id пользователя из таблицы users с индексом по полю
data json данные
last_changed дата и время последнего изменения данных
public_id тип numeric id публикации с индексом по полю
2) в php скрипте все в одном файле save.php, не нужно кучи файлов.
прием json структуры в теле запроса (post), пример: { do:auth, login:test@mail.ru, password:test123(передается хэш пароля) }
а) авторизация. прием пост запроса в теле json { do:auth, login:test@mail.ru, password:test123 }
В ответ на авторизацию должен выдаваться в случае удачи json:
{ status:ok, sid:123, expire_sid:2020-01-01T10:01:01, id:1 },
который сохраняет sid и expire_sid в куки и передает их в последующих запросах
в противном случае
{ status:fail, message:'неверный логин или пароль' }
б) регистрация { do:reg, login:test@mail.ru, password:test123, referer:1245 }
Поле ref refferer
В ответ на регистрацию должен выдаваться такой json:
{ sid:123, expire_sid:2020-01-01T10:01:01 },
в противном случае
{ status:fail, message:'текст ошибки к примеру логин занят или пароль должен содержать определенные символы' }
в) восстановление пароля { do:rem, login:test@mail.ru }
В ответ на восстановление пароля должен выдаваться в случае удачи json:
{ status:ok, message:'ссылка для пароля выслана на емайл, бла бла бла' },
а так же должен быть отправлен емэйл с сылкой на восстановление пароля при переходе по которой
открывается форма для задания нового пароля
ссылка примерно такая recovery=1234567dffdg на этот же php скрипт
для отправки емайл можно использовать дополнительные модули(по согласованию)
в противном случае(случае неудачи) { status:fail, message:'неверный емайл' }
г) если пользователь прошел аутентификацию ему должны быть доступны следующие функции
читать данные и сохранить их в поле memo
{ do:save, sid:123, data:'json данные' }
в ответ либо { status: ok } либо { status: fail, message: 'структура json не валидна' }
{ do:view, id:1 }
в ответ либо { status: ok, data:'json из поля memo' } либо { status: fail, message: 'данные не найдены' }
д) пользователь не прошедший авторизацию может только читать данные
{ do:view, id:1 }
Как видно из описание сессия сделана вручную не php session, поскольку я не знаю точно возможно ли
сделать через php сессии. Если возможно и это вполне встроиться в структуру то хотелось бы уточнить как
это будет выглядеть.
3) html страница cabinet.html должна представлять из себя одностраничное веб приложение с использованием vuejs для редактирования данных и bootstrap для интерфейса.
В нем будут вкладки меню в не авторизованном состоянии:
- авторизация,
- регистрация,
- восстановление пароля.
В авторизованном :
- Профиль,
- Вкладка редактирования данных* ,
- Вкладка настройки публикации данных* ,
- Настройки аккаунта
- выход.
*(по согласованию в отдельном ТЗ и с отдельной доплатой)
4) html страница view.html принимающая на вход public_id данных и отображающая данные
Дополнительно будет предоставлена html (одностраничное приложение) для личного кабинета(из пункта 3), которую нужно будет доработать или на которую можно опираться при создании данного проекта.
Версии программного обеспечения хостинга на котором будет использоваться данный проект. Поэтому код проекта должен быть написан с учетом этого.
Apache 2.2.15-69.el6.centos
PHP 5.3.3-50.el6_10
Perl 5.10.1-144.el6
Kernel 2.6.32-754.24.3.el6.x86_64
Есть возможность создать email ящик на хостинге для отправки ссылки для восстановления пароля.
* В будущем, при Вашем желании, возможны еще задания за отдельную доплату и с отдельным тз по данному проекту.
Опубликован 02.02.2020 в 17:42 Последнее изменение: 02.02.2020 в 18:10