Esempio n. 1
0
function Login($login, $pass, $passmd = "", $from_validate = 0)
{
    global $db_prefix, $db_secret;
    $unitab = LoadUniverse();
    $uni = $unitab['num'];
    if ($player_id = CheckPassword($login, $pass, $passmd)) {
        // Пользователь заблокирован?
        $user = LoadUser($player_id);
        if ($user['banned']) {
            UpdateLastClick($player_id);
            // Обновить активность пользователя, чтобы можно было продлять удаление.
            echo "<html><head><meta http-equiv='refresh' content='0;url=" . hostname() . "game/reg/errorpage.php?errorcode=3&arg1={$uni}&arg2={$login}&arg3=" . $user['banned_until'] . "' /></head><body></body>";
            ob_end_flush();
            exit;
        }
        $lastlogin = time();
        // Создать приватную сессию.
        $prsess = md5($login . $lastlogin . $db_secret);
        // Создать публичную сессию
        $sess = substr(md5($prsess . sha1($pass) . $db_secret . $lastlogin), 0, 12);
        // Записать приватную сессию в кукисы и обновить БД.
        setcookie("prsess_" . $player_id . "_" . $uni, $prsess, time() + 24 * 60 * 60, "/");
        $query = "UPDATE " . $db_prefix . "users SET lastlogin = {$lastlogin}, session = '" . $sess . "', private_session = '" . $prsess . "' WHERE player_id = {$player_id}";
        dbquery($query);
        // Записать IP-адрес.
        $ip = $_SERVER['REMOTE_ADDR'];
        $query = "UPDATE " . $db_prefix . "users SET ip_addr = '" . $ip . "' WHERE player_id = {$player_id}";
        dbquery($query);
        //echo "ID пользователя: $player_id<br>Приватная сессия: $prsess<br>Публичная сессия: $sess<br>IP-адрес: $ip";
        // Выбрать Главную планету текущей.
        $query = "SELECT * FROM " . $db_prefix . "users WHERE session = '" . $sess . "'";
        $result = dbquery($query);
        $user = dbarray($result);
        SelectPlanet($player_id, $user['hplanetid']);
        // Задание глобальной отгрузки игроков, чистки виртуальных ПО, чистки уничтоженных планет, пересчёт статистики альянсов и прочие глобальные события
        AddReloginEvent();
        AddCleanDebrisEvent();
        AddCleanPlanetsEvent();
        AddCleanPlayersEvent();
        AddRecalcAllyPointsEvent();
        // Задание пересчёта очков игрока.
        AddUpdateStatsEvent();
        AddRecalcPointsEvent($player_id);
        setcookie('ogamelang', $user['lang'], time() + 60 * 60 * 24 * 9999, "/");
        // Редирект на Обзор Главной планеты.
        header("Location: " . hostname() . "game/index.php?page=overview&session=" . $sess . "&lgn=1");
        echo "<html><head><meta http-equiv='refresh' content='0;url=" . hostname() . "game/index.php?page=overview&session=" . $sess . "&lgn=1' /></head><body></body>";
        LogIPAddress($ip, $player_id);
    } else {
        header("Location: " . hostname() . "game/reg/errorpage.php?errorcode=2&arg1={$uni}&arg2={$login}");
        echo "<html><head><meta http-equiv='refresh' content='0;url=" . hostname() . "game/reg/errorpage.php?errorcode=2&arg1={$uni}&arg2={$login}' /></head><body></body>";
    }
    ob_end_flush();
    exit;
}
Esempio n. 2
0
function Queue_CleanPlayers_End($queue)
{
    global $db_prefix;
    // Удаление игроков, поставленных на удаление
    $when = $queue['end'];
    $query = "SELECT * FROM " . $db_prefix . "users WHERE disable_until <= {$when} AND disable_until <> 0 AND admin < 1 AND disable <> 0";
    $result = dbquery($query);
    $rows = dbrows($result);
    while ($rows--) {
        $user = dbarray($result);
        RemoveUser($user['player_id'], $queue['end']);
    }
    // Удаление игроков, неактивных более 35 дней. Неактивных ботов и игроков с купленной ТМ не удалять.
    $when = $queue['end'] - 35 * 24 * 60 * 60;
    $query = "SELECT * FROM " . $db_prefix . "users WHERE lastclick < {$when} AND admin < 1 AND lastclick <> 0 AND dm = 0";
    $result = dbquery($query);
    $rows = dbrows($result);
    while ($rows--) {
        $user = dbarray($result);
        if (!IsBot($user['player_id'])) {
            RemoveUser($user['player_id'], $queue['end']);
        }
    }
    RemoveQueue($queue['task_id']);
    AddCleanPlayersEvent();
}