@VladislavNaida

Как лучше хранить данные при пошаговой регистрации?

Всем привет. Хочу сделать пошаговую регистрацию на сайте. Как бы это сделать правильнее?
Что приходит на ум:
1. После каждого шага сохранять в БД? Много запросов бессмысленных
2. Хранить в сессии?
3. LocalStorage?
4. Куки?
У кого, какое мнение? Где какие подводные камни/нюансы?
Заранее спасибо)
  • Вопрос задан
  • 149 просмотров
Решения вопроса 1
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
при сохранении в БД главная проблема не "бессмысленные запросы" (это какая-о дурацкая фобия, взять самый редко используемый функционал, и трястись над каждым запросом) а что потом делать с незавершенными регистрациями.
Хранить на клиенте - это гонять уже введенные данные туда-сюда.
Сессия для этого и придумана, чтобы хранить данные сеанса.
Но в целом способ зависит от конкретных обстоятельств, например банки всегда сохраняют только в базу, чтобы потом дожать клиента, который оставил контакт на первом шаге.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@aleksejjjjj
Поддержу Ипатьев. Вы хотите избавиться от 3-х запросов, чтобы что? У вас реально база рухнет от 3 запроса × на 10 регистраций в день?

Можно конечно и на клиенте хранить, но смысл? Как минимум нужно валидировать каждый шаг. Вот прошёл юзер 10 шагов, отправил данные, а у вас fatal error на беке, такой email уже есть в базе. Усложняем логику в 10 раз, отправляем клиента на шаг #22, где он мыло вводил?

В общем это не оптимизация, это выстрел себе в ногу на ровном месте. Ещё и юзера бесить будете
Ответ написан
Комментировать
index0h
@index0h
PHP, Golang. https://github.com/index0h
Всем привет. Хочу сделать пошаговую регистрацию на сайте. Как бы это сделать правильнее?

Если есть возможность - просите минимум, например почту и пароль, в идеале - вообще через google, или еще что-то подобное, fb например.
Уже потом запрашивайте данные которые вам нужны для конкретных действий.
С точки зрения пользовательского опыта вероятно это будет самый лучший сценарий.

1. После каждого шага сохранять в БД? Много запросов бессмысленных

Оптимизируйте там, где есть узкое горлышко, а не там где его нет.

2. Хранить в сессии?
3. LocalStorage?

Вам стоит точно решить, как вы взаимодействуете с фронтом. Если это грубого говоря отдельное приложение с каким-нить rest или подобным взаимодействием - LocalStorage, или SessionStorage. Если старый добрый серверный рендеринг - сессии.

4. Куки?

нет.
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Всем привет. Хочу сделать пошаговую регистрацию на сайте. Как бы это сделать правильнее?
Нет рецепта для общего случая. Всегда есть нюансы, если вы делаете что-то чуть в сторону от классики.

1. После каждого шага сохранять в БД? Много запросов бессмысленных
Ого, много это сколько? И почему бессмысленных? Вы же осмысленные данные туда пишете?

У кого, какое мнение? Где какие подводные камни/нюансы?
Мнение: С таким описанием нихрена не посоветуешь. По конкретным шагам можно что-то обсуждать.
В целом же: Если первый шаг позволяет ввести все данные необходимые для входа в аккаунт, то писать надо в бд, ну и соответственно выслать письмо с подтверждением. В бд можно писать так же стадию прохождения. Если остальные пункты не являются критическими для функционала, можно предлагать при следующем логине дозаполнить данные, основываясь на записанном номере стадии. Ну или просот сразу перекидывать на нужную фазу, если она является необходимой.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы