PHP |Minecraft Offline UUID - PullRequest
       15

PHP |Minecraft Offline UUID

0 голосов
/ 15 декабря 2018

Я создаю пользовательскую панель управления для сервера Minecraft, и если клиент нажимает кнопку «Купить сейчас», обновите в базе данных (missionex (плагин ranksystem)) рейтинг клиента.разрешение ex является подтверждением Minecraft офлайн UUID.

minecraft uuid: md5 ("OfflinePlayer:" + name) НО это и база данных uuid, разница двух букв.

моя база данных uuid: 7a1a45e593cc389007345468dd059e70

uuid моего сайта: 7a1a45e593cc389087345468dd059e70

спасибо и извините за мой плохой английский

мой код:

$offlineuuid = md5("OfflinePlayer:".$_SESSION['username']."");

$uuid = MojangAPI::formatUuid($offlineuuid); // Egy API-t felhasználva át alakítja teljes UUID-vé (kötőjelessé)
$connection = new mysqli("localhost", "root", "", "rank");

echo "".$uuid."<br>"; // <-- a SESSION uuidje (a név amivel belépett a weboldalra)


$conn = mysqli_connect("localhost", "root", "");
$db = mysqli_select_db($conn, "rank");

$query = mysqli_query($conn, "SELECT * FROM permissions_inheritance WHERE child='$uuid'");
echo "7a1a45e5-93cc-3890-8734-5468dd059e70<br>";  //<- adatbázis UUIDje
$rows = mysqli_num_rows($query);

Ответы [ 2 ]

0 голосов
/ 01 мая 2019

Я нашел решение.

Пример использования: $uuid = offlinePlayerUuid("HereThePlayerName123");

Введите в свой код:

function offlinePlayerUuid($username) {
    //extracted from the java code:
    //new GameProfile(UUID.nameUUIDFromBytes(("OfflinePlayer:" + name).getBytes(Charsets.UTF_8)), name));
    $data = hex2bin(md5("OfflinePlayer:" . $username));
    //set the version to 3 -> Name based md5 hash
    $data[6] = chr(ord($data[6]) & 0x0f | 0x30);
    //IETF variant
    $data[8] = chr(ord($data[8]) & 0x3f | 0x80);
    return createJavaUuid(bin2hex($data));
}

function createJavaUuid($striped) {
    //example: 069a79f4-44e9-4726-a5be-fca90e38aaf5
    $components = array(
        substr($striped, 0, 8),
        substr($striped, 8, 4),
        substr($striped, 12, 4),
        substr($striped, 16, 4),
        substr($striped, 20),
    );
    return implode('-', $components);
}
0 голосов
/ 19 декабря 2018

Я вижу только одну цифру между двумя UUID в вашем вопросе: в поле «вариант».UUID вашей «базы данных» имеет значение 0xxx, которое зарезервировано для обратной совместимости с системой с устаревшим устаревшим кодом и почти наверняка недопустимо.UUID вашего «веб-сайта» имеет значение 10xx, которое соответствует RFC4122 и почти всегда корректно.

Короче говоря: вы не генерируете свой UUID правильно, и одна часть программного обеспечения пытается (несколько) исправить его дляты и другой нет.Решение состоит в том, чтобы сгенерировать действительный UUID, который будут принимать оба.

...