1

У меня есть форма на моей странице со многими полями. Я сохраняю значения полей в хранилище данных после ввода пользователем значения (без ожидания отправки формы). Некоторая оценка рассчитывается на основе значений полей и отображается пользователю. Я также создаю идентификатор клиента клиента и сохраняю его в cookie пользователя в течение одного часа.Как правильно обрабатывать обновление страницы?

Я не уверен, что должно произойти, когда пользователь обновит страницу в браузере:

  1. , если пользователь нажал F5 в FF, то значения поля по-прежнему отображается в браузере;
  2. , когда пользователь нажал Ctrl + F5, значения будут очищены.

В обоих случаях я не хочу создавать новую запись для этого пользователя, поэтому идентификатор клиента должен оставаться неизменным. Но в сценарии (1) я не должен очищать значения полей в хранилище данных и его счет, но я должен сделать это в сценарии (2). Как я могу узнать это на стороне сервера?

+0

Почему вы создаете клиентскую клиентскую сторону клиента? –

+0

@ShayErlichmen, он создается на стороне сервера. –

ответ

0

Два сценария, которые вы объяснили, - это поведение, встроенное в ваш браузер. Большинство браузеров попытаются повторно отправить данные формы, если вы нажмете F5 на странице, на которой были отправлены данные. Это делается для того, чтобы избежать потери данных средним пользователем.

Как будто вы должны были войти на сайт, заполнить форму и нажать «Отправить все заново».

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

0

Создайте идентификатор SESSION, когда пользователь входит на страницу регистрации и сохраняет его в базе данных. Я думаю, что идентификатор сеанса будет меняться только тогда, когда пользователь закроет браузер.

Если пользователь обновил страницу, выведите значения из базы данных с идентификатором СЕССИИ.

Когда пользователь нажимает кнопку «Отправить» и успешно запрашивает значения в базе данных. Уничтожьте идентификатор SESSION, сбросьте поля формы ...

0

Лучший способ, когда вы загружаете страницу, вы должны проверить ее, если был какой-либо контент для каждого поля формы, уже сохраненного в db, иначе попробуйте кеш поля формы на стороне клиента техника.

+0

Что делать, если оно сохраняется в хранилище данных? Показать, что в соответствующем поле? (на самом деле у меня есть ~ 150 полей) –

Смежные вопросы