Страница 1 из 2

Ежедневные бонусы пользователям

Добавлено: 29 окт 2010, 08:14
Volgar
Как правильно реализовать на PHP+mySQL, чтобы юзер (который уже есть в базе) получал при ежедневном заходе в приложение бонусные монеты?
Я знаю как их обновить, но как чтобы только один раз в сутки?

Re: Ежедневные бонусы пользователям

Добавлено: 29 окт 2010, 11:18
butuz
в базе завести еще одно поле "время получения подарка"

если разница между текущим временем и временем получения в пределах суток, значит подарок уже получен

Re: Ежедневные бонусы пользователям

Добавлено: 29 окт 2010, 13:03
Volgar
Спасибо. Пока тяжело представляю, но попробую.

Re: Ежедневные бонусы пользователям

Добавлено: 29 окт 2010, 22:24
Volgar
В общем-то сделал. Работает.
Сначала беру текущее время $dateNow = time();
Потом беру временя последнего посещения юзера из базы + сутки в секундах: $dateLast = $row['last_date'] + 86400;
Потом сравниваю:

Код: Выделить всё

if ($dateNow > $dateLast)        {        echo "BONUS";        }
Только как-то это наверное не правильно. В онлайн играх по другому. Там если заходишь после 12 ночи, то дают бонус один раз в сутки.

Re: Ежедневные бонусы пользователям

Добавлено: 29 окт 2010, 22:29
butuz
Volgar писал(а):Там если заходишь после 12 ночи, то дают бонус один раз в сутки.
можно завести булево поле в базе - забрал бонус - выставили true
в 12 ночи по крону вызвали скрипт выставили всем false

Re: Ежедневные бонусы пользователям

Добавлено: 29 окт 2010, 22:39
Volgar
Ну так тоже подумал:)

Re: Ежедневные бонусы пользователям

Добавлено: 29 окт 2010, 22:47
Doker
И всеже более рациональній 1 способ.

Re: Ежедневные бонусы пользователям

Добавлено: 30 окт 2010, 04:18
bodnar
В чем проблема? Смотришь, попадает ли последнее время получения бонуса в интервал от текущего времени до ближайшей полуночи. Если нет, та даешь бонус

Re: Ежедневные бонусы пользователям

Добавлено: 30 окт 2010, 20:34
Volgar
Смотришь, попадает ли последнее время получения бонуса в интервал от текущего времени до ближайшей полуночи. Если нет, та даешь бонус
Не очень понял. Тоже кроном что ли?

Видимо с кроном самая лучшая идея.
1. Добавляем в таблицу со статистикой юзеров поле bonus с типом TINYINT.
2. Делаем крон-файл, который каждую полночь всем юзерам ставит 1 в этом поле.
3. Если юзер зашел, то скрипт смотрит какое там значение - если 0, то ничего. Если 1, то меняет его на 0 и отправляет команду на бонус юзеру.

Re: Ежедневные бонусы пользователям

Добавлено: 30 окт 2010, 20:35
Volgar
А первый вариант вообще некорректно работает. Юзер может через каждый час заходить и скрипт отсчитывает сутки с последнего посещения.