Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2012, 04:31   #1
matrixphp
 
Регистрация: 04.03.2011
Сообщений: 9
Восклицание Повторная отправка формы.

Новостной сайт (написан по PHP). Сервер (LAMP) старенький , часто бывает перегружен и сайт начинает тормозить или просто сильно удален от пользователя, из-за чего тоже возникает задержка. Пользователь прочитал новостную статью и решил оставить комментарий. Заполнил форму и нажал отправить, но т.к. сервер тормозит страница обновилась не сразу и пользователь еще несколько раз пытается создать комментарий (отправлял форму). В итоге он несколько раз создал один и тот же комментарий. Подскажите, пожалуйста, как можно избежать повторной обработки запроса, чтобы, если опираться на данный пример, создавался только 1 комментарий.
matrixphp вне форума Ответить с цитированием
Старый 03.11.2012, 08:54   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

привязывать по времени...... если тот же самый пользователь например с интервалом менее 1 минуты отправил - не принимать. Или проверять на идентичность предыдущему сообщению (тексты совпадают)
ADSoft вне форума Ответить с цитированием
Старый 03.11.2012, 14:46   #3
matrixphp
 
Регистрация: 04.03.2011
Сообщений: 9
По умолчанию

"Или проверять на идентичность предыдущему сообщению (тексты совпадают)"
Это не практично, ведь такая проблема может возникнуть вообще с любой формой. К примеру, сервис отправки подарков как в ВК...
Замер времени между сообщениями поможет только в случае комментов, в случае как ВК не слишком эффективно. Тем более там точно не стоит минута между подарками, а если время будет 2-3 секунды, это снова нас приводит к проблеме.
matrixphp вне форума Ответить с цитированием
Старый 03.11.2012, 16:55   #4
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

не обязательно текст.. я как пример показал. Если один и тот же подарок в течении короткого времени например. Идеальных решений тут нет.... ибо только пользователь и живой человек может определить - нечаянно или специально он так отправил.
ADSoft вне форума Ответить с цитированием
Старый 03.11.2012, 19:12   #5
matrixphp
 
Регистрация: 04.03.2011
Сообщений: 9
По умолчанию

На основе ключей (ключ по времени времени к примеру) возникла идея:
В сессию записывать ключ и пользователю сообщать этот ключ через скрытое поле в форме. После отправки формы, перед записью данных обработки проверять совпадение ключей.
Проблему повторной отправки это решит, но если на сайте 100+ форм, переделывать это трудоемко...
Тогда можно попробовать передавать пользователю ключ кукой, но есть подозрения что все-таки особо упорные пользователи будут закликивать так (достаточной долго, чтобы сервер попытался, что-то отправить), что кука будет успевать обновляться и часть запросов пройдет.
Что скажете на такие предложения?
matrixphp вне форума Ответить с цитированием
Старый 04.11.2012, 03:32   #6
matrixphp
 
Регистрация: 04.03.2011
Сообщений: 9
По умолчанию

Всем спасибо. Сделал через сессия + куки - все работает.
matrixphp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправка данных формы Kuzia12 HTML и CSS 3 27.08.2012 01:58
Просмотр UDP пакетов и повторная отправка grafgrial Работа с сетью в Delphi 9 25.07.2012 17:24
отправка формы weder PHP 4 02.05.2010 21:00
отправка формы L_M PHP 5 28.07.2009 12:01