|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
15.01.2010, 12:30 | #1 |
Регистрация: 15.01.2010
Сообщений: 4
|
Как исключить повторное действие если был двойной клик? (Perl + Mysql)
Здравствуйте! Зарегился на этом форуме, потому что нуждаюсь в помощи опытных людей.
Есть такая проблема. Допустим, существует форма, в которой есть кнопка, нажимая которую происходит кое-какое действие (списывание очков с игрового счёта пользователя). Но я не могу придумать решение, как исключить двойное срабатывание скрипта, если пользователь сделал двойной клик по кнопке (или даже несколько раз быстро щелкнул по ней). В итоге получается, что очки со счёта списываются в двойном размере, в тройном и т.п. Как сделать защиту от этого? Я пробовал в начале скрипта сделать обращение к Mysql и оттуда бралась дата-время когда последнее списывание происходило, если это значение меньше 10 секунд, то скрипт не должен позволять производить списывание. Но всё равно этот метод неэффективен! Быстрый двойной клик всё равно позволяет "обогнать" обращение к Mysql. Скрипт на Perl, база Mysql. Заранее благодарю за помощь! Надеюсь, найдётся опытный и добрый человек с хорошим советом. |
15.01.2010, 13:46 | #2 |
Старожил
Регистрация: 09.09.2008
Сообщений: 2,624
|
Чтобы пользователь не мог обогнать обращение к бд, нужно вообще блокировать возможность повторного вызова скрипта пока идут процессы "списывания" в mysql. Например в начале скрипта который списывает сделать создание фйала "локера" а в конце удаление и проверку на существование блокиратора.
PHP код:
-flock; -запись id в memcache; -создание демона(самый сложный и быстрый). --------------------------------------- Не заметил что perl но суть не меняется.
Стрелок-охотник
Последний раз редактировалось mv28jam; 15.01.2010 в 14:00. Причина: perl |
15.01.2010, 16:52 | #3 |
Участник клуба
Регистрация: 30.07.2009
Сообщений: 1,601
|
Можно попробывать на javascript
Код:
|
15.01.2010, 19:22 | #4 |
Регистрация: 15.01.2010
Сообщений: 4
|
Спасибо большое! Ваш совет очень помог мне. Я теперь буду использовать временные файлы для защиты от дублированных операций.
PERL скрипт: PHP код:
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Двойной клик | Алежа | Общие вопросы .NET | 3 | 16.11.2008 23:20 |