Здравствуйте.
Есть задача сделать на сайте вывод для пользователей определенное количество раз, допустим 50 раз в сутки и после этого вывод должен перестать работать, после истечения 24 часов опять все должно работать.
Вопрос такой, как этот механизм нужно реализовать, я имею ввиду сейчас не про то как это написать или примеры мне нужна суть самой идеи как такое обычно делаю.
Спасибо, надеюсь на вашу поддержку!
Это делается в несколько этапов:
База данных
В таблице с пользователями заводим отдельные колонки под лимиты вывода и время последнего обнуления. Например, limit_withdrawal и limit_updated.
Проверка на лимиты
В колонку limit_withdrawal записываем количество выводов после каждой операции вывода:
UPDATE users SET limit_withdrawal=limit_withdrawal+1 WHERE uid='$uid';
Перед выполнением операции проверяем эту же колонку на предмет того, чтобы она не была больше допустимого лимита (например, как указано выше 50).
Обнуление счетчика
Пишем метод, который раз в сутки обнуляет колонку limit_withdrawal и выставляет время последнего обнуления счетчика (используем timestamp).
За точку начала нового дня можно использовать время по UTC (более простой вариант, как на stackoverflow) или локальное время пользователя (более сложный в реализации, требует сравнивать текущую/ранее записанную дату с учетом временной зоны, но это более понятно и удобно для пользователя).
UPDATE users SET limit_withdrawal='0', limit_update='$ts' WHERE uid='$uid';
Выполнение этого метода можно привязать к загрузке страницы (проверять для авторизованного пользователя не настало ли время обновить страницу) или через отдельный сервис, который мониторит обновление лимитов (более сложный вариант).
В качестве условия выполнения запроса определяем период больше 24 часов (рассчитываем разницу между текущим временем и временем последнего обновления колонки limit_update).
Виртуальный выделенный сервер (VDS) становится отличным выбором
У меня есть категории меню , в этих категориях должны быть привязанные к категориям товарыТовары представлены в таблице Не могу реализовать...
Работает, правильно ли сделал удаление статьи, с помощью токена?