region23
@region23
веб-разработчик

Как избежать нажатия пользователями браузерной кнопки "назад" и создания дублей в базе?

Есть форма, которую пользователь заполняет, сохраняет и у него открывается страница с только что заполненной формой в режиме просмотра.

Но особо умные пользователи если замечают ошибку нажимают кнопку «назад» в браузере и возвращаются на предыдущую страницу. Вносят исправления и нажимают кнопку «сохранить» создается практически идентичный дубликат предыдушей записи.

Как избегать таких ситуаций?
  • Вопрос задан
  • 2990 просмотров
Решения вопроса 1
AlexTest
@AlexTest
При выдаче формы генерировать в hidden параметре некий код идентифицирующий эту конкретную форму, при приеме данных из формы проверять этот код.
Ответ написан
Пригласить эксперта
Ответы на вопрос 7
uscr
@uscr
В режиме просмотра сделать кнопку «подтвердить» и не сохранять в базу до нажатия этой кнопки?
Ответ написан
Wott
@Wott
Ну куки там — все написали. Собственно надо просто разделить — это совсем новый пользователь или уже не совсем — ошибка в одном поле или не прошедшая верификация должна приводить к возможности редактировать форму, а не тупо отказать или даже полный отлуп с заполнением заново.
Я делаю еще проще — я просто в таблице делаю уникальный индекс по ключевым полям. Например по мылу — оно однозначно идентифицирует пользователя. Или мыло плюс ник, ели он нужен ( хотя в этом случае лучше иметь два уникальных индекса по каждому полю ).
И в случае редактирования я просто пользую replace mysql ( там свои заморочки, но в целом очень удобно ).
А в случае заведомо новой формы — insert. И дубли не случаются.
Ответ написан
@egorinsk
Сделать возможность исправлять ошибки. При создании новой формы удалять старую. Короче, проблема не в пользователях и кнопке назад, а в вашем кривом приложении и непонимании поведения пользователей.
Ответ написан
BupycNet
@BupycNet
Основатель PushAll
Сделать форму на AJAX. Если используете History.JS не заносите переход в историю. Дополнительно можнт в куки записывать были ли попытки использования формы и выводить что запись уже отправлена и.т.д в зависимости от того что у вас там.
Ответ написан
@Tr1aL
Еще можно кнопку дизейблить, тогда при нажатии на «назад» она будет не активна.
Ответ написан
SLY_G
@SLY_G
журналист, переводчик, программист, стартапщик
Ставить куки, и/или идентифицировать по ip, и не создавать дубликаты для пользователей, которые уже отмечены как заполнившие форму.
Ответ написан
@artishok
кратко
Может при просмотре выводить надпись типа: «Заметили ошибку? Исправить» кнопка исправить кидает на страницу с формой редактирования данных. Или же можно сделать редактирование каждого поля с помощью аякса.
Ответ написан
Ваш ответ на вопрос

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

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