Просмотр поста

.
ДоХтор

muhago97, свой код, начисляющий подарки, уже сам добавишь в нужное место. Я написал на файлах, но специально вынес код работы с файлами в отдельные функции, чтобы можно было переписать эти функции под работу с базой, не залезая в остальной код. В строке № 46

setFile($FILE, setTime());

можно устанавливать интервал между подарками: setTime(1) будет равно одному часу. По умолчанию setTime() равна 5 часам.

* (+/-)
/**
 * Получаем данные из текст.файла
 * @param str $file Путь к файлу
 * @return str Метка времени с установленным смещением
 */
function getFile($file) {
    if (file_exists($file)) {
        return file_get_contents($file);
    } else {
        return false;
    }
}

/**
 * Записываем данные в текст.файл
 * @param str $file Путь к файлу
 * @param str $str  Строка для записи
 * @return int Число записанных байт или false
 */
function setFile($file, $str) {
    $size = false;
    $size = file_put_contents($file, $str);
    return $size;
}

/**
 * Установка времени
 * @param int $hours Время (5 часов по умолчанию)
 * @return int Временная метка окончания заданного периода
 */
function setTime($hours = 5) {
    $time = time();
    return $time + (3600 * $hours);
}

/**
* Использование
*/
if ($user_id) {
    // Название файла с данными
    $FILE = $user_id .'present.dat';
    $time = getFile($FILE);
    
    if (isset($_GET['dat'])) {
        if (!$time || $time < time()) {
            setFile($FILE, setTime());
            header('Location: '. basename(__FILE__));
            exit;
        }
    }

    if ($time > time()) {
        $view = '<div class="rmenu"><b>Вы получили подарок!</b></div>'.
            '<div class="menu">Следующий подарок можно получить через: <b>'.
            date('G:i:s', $time - time()) .'</b></div>';
    } else {
        $view = '<div class="gmenu"><a href="?dat">Получить подарок</a></div>';
    }
    
    echo $view;
}