Страница 1 из 1
Повторная отправка формы.
Добавлено: 03 ноя 2012, 05:12
matrixphp
Новостной сайт (написан по PHP). Сервер (LAMP) старенький , часто бывает перегружен и сайт начинает тормозить или просто сильно удален от пользователя, из-за чего тоже возникает задержка. Пользователь прочитал новостную статью и решил оставить комментарий. Заполнил форму и нажал отправить, но т.к. сервер тормозит страница обновилась не сразу и пользователь еще несколько раз пытается создать комментарий (отправлял форму). В итоге он несколько раз создал один и тот же комментарий. Подскажите, пожалуйста, как можно избежать повторной обработки запроса, чтобы, если опираться на данный пример, создавался только 1 комментарий.
Re: Повторная отправка формы.
Добавлено: 03 ноя 2012, 11:35
AiK
Два способа:
1. Плохой. Блокировать JavaScript'ом кнопку отправки после первого нажатия.
1. Хороший. При занесении комментария в БД проверять комментарий на полный дубль.
Re: Повторная отправка формы.
Добавлено: 03 ноя 2012, 14:30
matrixphp
JS согласен не эффективно, защитит от дурака лишь.
"Проверять", но ведь такая же проблема может возникнуть при работе с деньгами к примеру. Ну не напрямую с деньгами, помню про смс уведомления и прочее, а вот при работе с системой баллов как в ВК, где нет подобных подтверждений вероятно можно было бы, к примеру, подарок несколько раз. Неужели нет какого-то более универсального решения, чтобы заблокировать повторные запросы, ведь наверняка проблема стара как мир.?
Re: Повторная отправка формы.
Добавлено: 03 ноя 2012, 20:08
matrixphp
На основе ключей (ключ по времени времени к примеру) возникла идея:
В сессию записывать ключ и пользователю сообщать этот ключ через скрытое поле в форме. После отправки формы, перед записью данных обработки проверять совпадение ключей.
Проблему повторной отправки это решит, но если на сайте 100+ форм, переделывать это трудоемко...
Тогда можно попробовать передавать пользователю ключ кукой, но есть подозрения что все-таки особо упорные пользователи будут закликивать так (достаточной долго, чтобы сервер попытался, что-то отправить), что кука будет успевать обновляться и часть запросов пройдет.
Что скажете на такие предложения?
Re: Повторная отправка формы.
Добавлено: 04 ноя 2012, 03:33
matrixphp
Всем спасибо. Сделал через сессия + куки - все работает.