Перейти к содержанию
Z1Z.ORG
  • 👋 Добро пожаловать на z1z.org — Твой цифровой портал!

    Создайте бесплатный аккаунт и получите доступ ко всем возможностям платформы:

    Участвуйте в обсуждениях
    Создавайте собственные темы и голосования
    Получайте уведомления и личные сообщения
    Настраивайте собственный профиль и подписки
    Получайте репутацию, значки и бонусы за активность


    🔐 Быстрая регистрация — займёт всего 30 секунд!


    ⚠️ Внимание: регистрация доступна только с почтовыми адресами из разрешённых доменов.


    🌐 Z1Z — Место, где цифра обретает смысл!

  • 📊 Отображение активных банов SourceBans в таблице на PHP


    Недавно я решил освежить старую идею — интеграцию данных из SourceBans в простой PHP-проект. Год назад я уже писал этот код и выложил его на GitHub, но репозиторий всё это время был в приватном доступе. Пока у меня нет активной базы SourceBans для полноценного демо, но код полностью готов к работе и легко подключается к боевой системе.

    🔧 Задача

    Цель была простая:

    • Подключиться к базе SourceBans.
    • Вытащить список активных банов.
    • Отобразить их в виде аккуратной таблицы, желательно в тёмной теме.
    • Показать оставшееся время бана в формате "часы:минуты".

    Это может пригодиться владельцам игровых серверов, которые хотят встроить подобный виджет в сайт сообщества или панель управления.

    💻 Исходный код

    Вот пример index.php, который подключается к БД, вытаскивает нужные данные и выводит их:

    <?php
    $servername_ban = "localhost";
    $username_ban = "root";
    $password_ban = "";
    $dbname_ban = "demoban";
    
    $conn_ban = new mysqli($servername_ban, $username_ban, $password_ban, $dbname_ban);
    $conn_ban->set_charset("utf8mb4");
    
    if ($conn_ban->connect_error) {
        die("Connection to ban database failed: " . $conn_ban->connect_error);
    }
    
    function formatDateTimeFromTimestamp($timestamp) {
        return date("d.m.Y H:i", $timestamp);
    }
    
    function timeRemaining($endDate) {
        $now = time();
        $diff = $endDate - $now;
        $hours = floor($diff / 3600);
        $minutes = floor(($diff % 3600) / 60);
        return "$hours:$minutes";
    }
    
    $sql = "SELECT authid AS 'SteamID', name AS 'ник', created AS 'дата бана', ends AS 'дата окончания бана', length AS 'длительность', reason AS 'причина' FROM sb_bans WHERE ends > UNIX_TIMESTAMP() ORDER BY created DESC";
    $result = $conn_ban->query($sql);
    
    if ($result && $result->num_rows > 0) {
        echo "<table><tr><th>SteamID</th><th>Ник</th><th>Дата бана</th><th>Дата окончания</th><th>Оставшееся время</th><th>Причина</th></tr>";
        while($row = $result->fetch_assoc()) {
            echo "<tr><td>{$row["SteamID"]}</td><td>{$row["ник"]}</td><td>" . formatDateTimeFromTimestamp($row["дата бана"]) . "</td><td>" . formatDateTimeFromTimestamp($row["дата окончания бана"]) . "</td><td>" . timeRemaining($row["дата окончания бана"]) . "</td><td>{$row["причина"]}</td></tr>";
        }
        echo "</table>";
    } else {
        echo "Нет активных банов или ошибка запроса.";
    }
    
    $conn_ban->close();
    ?>

    Фронтенд-часть тоже проста и понятна — подключаем CSS и определяем тёмную тему:

    <head>
        <link rel="stylesheet" href="css/style.css">
    </head>

    И сам файл style.css:

    :root {
        --main-background-color: #44515e;
        --text-color: #ffffff;
        --link-color: #4aa0e6;
    }
    
    table {
        width: 100%;
        border-collapse: collapse;
        margin-top: 20px;
        color: var(--text-color);
    }
    
    th {
        background-color: var(--main-background-color);
        color: var(--text-color);
        font-weight: bold;
        padding: 10px;
        text-align: left;
    }
    
    tr:nth-child(odd) {
        background-color: #333333;
    }
    
    tr:nth-child(even) {
        background-color: #2d2d2d;
    }
    
    td {
        padding: 10px;
        border: 1px solid #444444;
    }

    📌 Что важно учитывать

    • Данный скрипт не требует авторизации, он показывает публично активные баны.
    • Код рассчитан на работу с базой SourceBans Classic (sb_bans), но легко адаптируется под SourceBans++, если структура схожая.
    • Можно улучшить: добавить пагинацию, сделать сортировку по столбцам через JavaScript, реализовать фильтрацию по SteamID или нику.
    • Всё написано на чистом PHP + MySQLi, так что подойдёт даже для серверов с минимальной нагрузкой и ресурсами.

    Почему сейчас нет демо?

    Я бы с радостью выложил работающий пример с живыми данными, но на данный момент у меня нет установленной базы SourceBans — на домашнем сервере всё занято другими задачами (Astra/Ubuntu, мониторинг, веб-сайты и т.д.).

    Но как только появится окно — разверну тестовый сервер и покажу live-демо прямо на одном из своих доменов, например, z1z.org или ip-gamers.net.

    🧩 Куда двигаться дальше?

    Если вам это интересно, то в принципе можно:

    • Подключить Steam Web API, чтобы отображать аватарки и ссылки на профили игроков.
    • Сортировать и фильтровать таблицу прямо в браузере.
    • Перевести проект на AJAX, чтобы обновлять данные без перезагрузки страницы.
    • Сделать полноценную панель администрирования с просмотром истории банов.

    Заключение

    Такой простой, но наглядный скрипт — это хороший способ интегрировать SourceBans в любой сайт. Он легко адаптируется под твои нужды и не требует установки фреймворков. Если ты админ игрового проекта — обязательно попробуй внедрить!

    Если тебе нужна помощь с установкой SourceBans или написанием дополнительных модулей — пиши, разберёмся вместе.

    Хочешь видеть демо на z1z.org, как только появится база SourceBans? Подпишись на обновления или просто загляни позже 😉

    Да, я написал этот пост в стиле ChatGPT.
    С чёткой структурой, понятными абзацами, оформлением кода и даже с выводами.
    И кто меня осудит за это? 😎


    Обратная связь

    Рекомендуемые комментарии

    Комментариев нет



    Для публикации сообщений создайте учётную запись или авторизуйтесь

    Вы должны быть пользователем, чтобы оставить комментарий

    Создать аккаунт

    Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

    Регистрация нового пользователя

    Войти

    Уже есть аккаунт? Войти в систему.

    Войти

  • Кто в онлайне   0 пользователей, 0 анонимных, 3 гостя (Посмотреть всех)

    • Зарегистрированных пользователей в онлайне нет
💼

Зарабатывай с Work-Zilla!

Выполняй задания и получай деньги

Да!


×
×
  • Создать...

Важная информация

Мы уважаем вашу конфиденциальность Для обеспечения корректной работы сайта, анализа активности и улучшения пользовательского опыта мы используем файлы cookie. Подробнее — в наших Политика конфиденциальности, Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек. и Условия использования. Перед использованием сайта, пожалуйста, ознакомьтесь также с Правила. Продолжая использование сайта, вы соглашаетесь с нашими условиями.