22.08.2017, 18:17
|
Новичок на форуме
|
|
Регистрация: 22.08.2017
Сообщений: 5
|
|
реализовать блокировку кнопки на определенное время после клика
Подскажите, пожалуйста, как реализовать блокировку кнопки на определенное время после клика. Т.е., пользователь зашел на страницу, нажал на кнопку, информация ушла, а кнопка заблокировалась, на часов 20-ть. И перезагрузка страницы не снимала бы блокировку. Код кнопки <input type="submit" name="submit" class="button-normal active-gradient light-color dark-gradient-hover" value="{$L['change']}" id="submit" />
Заранее благодарен!
|
|
22.08.2017, 18:25
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
Один нажимает и у всех на 20 часов она блокируется?
|
|
22.08.2017, 18:41
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
регистрация на сайте есть?
|
|
22.08.2017, 18:47
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от sanya300
|
как реализовать блокировку кнопки на определенное время после клика
|
Сервер должен отвергать последующий прием, а по уму так вообще не выводить форму в течении этого времени.
|
|
22.08.2017, 19:04
|
Новичок на форуме
|
|
Регистрация: 22.08.2017
Сообщений: 5
|
|
дополню регистрация есть. кнопка
регистрация есть. кнопка расположена на странице редактирования объявления зарегистрированного пользователя и отправляет соответствующую форму. доска объявлений абсолютно бесплатная. но в ней не было реализована возможность поднятия объявлений самим пользователем. по просьбам трудящихся прикрутил возможность поднятия объявлений путем клика по кнопке редактирования. но начались злоупотребления. поэтому решил ограничить возможность поднятия временем. а вот как реализовать не знаю. неделю по форумам, но пока никак.
|
|
22.08.2017, 19:14
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
sanya300,
В чем проблемы то? Во время T на сайте N пользователей, регистрированные они или нет не важно, коли всем блокировка. В момент времени Tₓ пользователь Nₓ отправляет форму. Это время пишется в базу. Любой последующий запрос формы, это проверка времени Tₓ + 20 часов, если не истекло, то прием отвергается.
Блокировать же кнопки сразу всем нельзя, можно только по запросу клиента, если Ajax, то по асинхронному запросу.
|
|
22.08.2017, 19:26
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 4,662
|
|
sanya300,
состояние сохранять в базу к соответствующему объявлению, остальные средства cookie, storage и тд можно обойти.
|
|
22.08.2017, 19:32
|
Новичок на форуме
|
|
Регистрация: 22.08.2017
Сообщений: 5
|
|
всем пользователям кнопки блокировать и не нужно. нужно заблокировать конкретную кнопку, расположенную на странице редактирования конкретного объявления зарегистрированного пользователя. Чтобы было так, пользователь зашел в свой кабинет, затем перешел на страницу одного из объявлений, жмакнул изменить, изменения сохранились, объявление поднялось, а редиректом пользователя перекинуло на страницу с самим объявлением (редирект есть). Если же пользователь вернется на страницу с редактированием того же объявления, то кнопка будет заблокирована. В тоже время другие свои объявления поднять и отредактировать он сможет, но только по одному разу. В теории вроде как понятно, но как сделать кодом...
|
|
22.08.2017, 19:36
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от sanya300
|
всем пользователям кнопки блокировать и не нужно.
|
Пишите время запроса для каждого пользователя (может я устал или провел не так, что-то "все" в уме держалось). С этим проблем нет? Сервер проверяя данное в базе может решить о кнопке/форме?
По большому счету в данном случае клиент боком с его JS, все должен решать сервер.
|
|
22.08.2017, 19:38
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 4,662
|
|
sanya300,
Значит берете время изменения объявления (оно ведь меняется как я понимаю за счет чего и подымается) и текущее время и считаете разницу. Но если пользователь захочет действительно изменить объявление, то не хорошо его ограничивать в данном случае.
Последний раз редактировалось Rise, 22.08.2017 в 19:47.
|
|
|
|