В контроллерах направляющих, как предотвратить дважды, отправляют (когда пользователь, которого поразила двойная-clic кнопка отправки или входит дважды)?

Ну, все находится в заголовке, но я объясню немного больше :-)

Мое приложение для направляющих содержит много форм (Ajaxified или не).

Для предотвращения пользователей для представления дважды или больше некоторые формы я использую JavaScript.

Существует мой сценарий для формы Ajaxified:

  • пользователь отправляет форму (clic, или войдите),
  • JavaScript отключает кнопку отправки
  • контроллер направляющих делает вещи (как запрос Мыла или вставка в DB)
  • контроллер направляющих обновляет страницу и включает кнопку отправки при необходимости (в случае ошибок)

Теперь я хочу добавить, что серверный код к сохраняет вещи, действительно убирают, если пользователь обходит JavaScript.

Какие-либо предложения?

13
задан fro_oo 3 March 2014 в 17:23
поделиться

4 ответа

Вот что я бы сделал:

  1. Добавьте поле «token» к объекту в базе данных, который будет изменен.
  2. Поместите этот жетон в форму, которая изменяет указанный объект.
  3. Сразу после модификации сохраните этот объект с НОВЫМ токеном.
  4. Используйте этот токен при просмотре других страниц.

Это не предотвратит двойную отправку, но, по крайней мере, предотвратит изменения от второй фиксации. Т.е. когда пользователь отправляет форму второй раз, код проверяет отправленный токен на токен в базе данных, и если они не совпадают - не обновляйте объект.

Это также имеет недостаток для вновь созданных объектов (например, если пользователь хочет создать комментарий или что-то подобное). Но в этом случае вы можете захотеть проверить временной интервал создания от того же пользователя, и если он меньше, скажем, 5 секунд - вы предотвратите «создание» объекта.

2
ответ дан 1 December 2019 в 21:51
поделиться

1) Хорошо бы также показать какой-нибудь движущийся индикатор, чтобы пользователь знал, что что-то происходит, что его запрос обрабатывается. Это должно устранить множество двойных отправок.

2) Если у пользователя отключен javascript, как вы собираетесь отправлять "ajaxified" формы? Если сайт становится неработоспособным без javascript, то, вероятно, лучше просто уведомить пользователя (как предлагает Eimantas).

edit
http://www.netzgesta.de/busy/

0
ответ дан 1 December 2019 в 21:51
поделиться

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

1
ответ дан 1 December 2019 в 21:51
поделиться

Не уверен, что это полезно:

НА СЕРВЕРЕ:

  1. При новой загрузке формы, set a session ['variable'] = false // означает, что форма еще не отправлена.

  2. При отправке формы проверьте:

     if session ['variable'] == true
    {
    ничего не делать...
    }
    еще
    {
    установить сеанс ['переменная'] = true;
     // отправляем логику здесь
    }
    
0
ответ дан 1 December 2019 в 21:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: