![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Royan |
|
|||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: нет Всего: 15 |
Я думаю всем знакома ситуация когда из-за того, что пользователь жмет два раза на кнопку "Отправить"/"Зарегистрироваться" или нечто подобное по нажатию чего форма уходит на сервер возникает шанс отправки формы два раза (а то и того больше). Один из методов борьбы с этим - сделать кнопку disabled. У меня же возник вопрос, но ведь наверняка это возможно сделать и на стороне сервера, ведь существует куча сайтов у которых такие кнопки не становятся disabled. Кто знает как пожалуйста отзовитесь
-------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
| ewolf |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 15.8.2006 Где: г. Москва Репутация: 8 Всего: 18 |
Попробуй сделать через сессии, например
в коде, генерирующем форму:
В обработчике соотвественно:
Но если обработка формы длится долго (дольше, чем проходит времени между нажатиями пользователя на кнопку), информация в сессии не успеет обновиться. В это случае можно завести в базе таблицу, куда сразу в обработчике писать о начале обратоки формы с таким-то кодом. И в нем же естественно проверя наличие подобной записи. Только старые записи надо не забывать удалять. Можно оба метода совместить. |
||||
|
|||||
| EvgenYakut |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 27.8.2007 Где: Украина Луганск Репутация: нет Всего: нет |
Я использовал нечто похожее с сесиями:
создавл переменную и при каждом обновлении формы откудо добавляют данные я её забивал "1" а после каждой обработки данных я её онулял. и при этом делал проверку если переменная ==1 то проводим обработку формы иначе просто необрабатуем. Вообщем то система примитивна но мне её пока достаточно и она способна предотвратить повторное вбивание данных через возврат по страничке (я её собственно для этого и делал) А вообщето самый точный и самый оптимальный способ это простая проверка в БД (или где там у вас данные хронятся) а нет ли там точной копии этой информации по всем полям перед обработкой данных с формы и если есть то можно просто проигнорить пришедшие данные а можно и сообщение сварганить Это сообщение отредактировал(а) EvgenYakut - 30.8.2007, 11:03 |
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: нет Всего: 70 |
Если контент из формы записывает в базу с установленной датой, то просто нужно делать некую временную дельту в которой нельзя больше принимать данных от этого пользователя.
|
|||
|
||||
| Alix36 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 478 Регистрация: 6.11.2006 Репутация: 1 Всего: 3 |
1)картинка защитная- антифлуда.
2)очистка JSом обязательного поля формы тогда она начнет ругаться при отправке 3)как уже говорили сессии. На мой взгляд разумнее 2 вариант, ибо нет никаких лишних запросов к серверу. -------------------- Наши лица как дым, И никто не узнает как мы победим. (С)Пикник. |
|||
|
||||
| Royan |
|
|||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: нет Всего: 15 |
Alix36, тебе + за идею, весьма дельные мысли
ewolf, тебе за усердие + всем остальным тоже большое спасибо! тема исчерпана -------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
| EvgenYakut |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 27.8.2007 Где: Украина Луганск Репутация: нет Всего: нет |
Royan будь осторожен!! Но я разок напаролся зделал всю проверку формы через JS при ошибке выводилил окошки с сообщениями здорово так мне нравилось а потом какойто юзверь взял и отключил JS, ничего страшного непроизошло БД защитилась но неприятно было когда мне это юзвер стал рассказывать шо моя система о ошибках его неинформирует. Вот такаявот загогулина. Если на JS полагаться то надо проверку вставлять а работает ли он вообще |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |