minecraft uuid:md5(“ OfflinePlayer:” +名称)但是 这和数据库的uuid,相差2个字母。
我的数据库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);
答案 0 :(得分:0)
在您的问题中,我在两个UUID之间仅看到一位数字不同:在“变量”字段中。您的“数据库” UUID的值为0xxx,该值保留用于与长整数系统向后兼容,并且几乎可以肯定是无效的。您的“网站” UUID的值为10xx,适用于RFC4122,并且几乎总是正确的。
简而言之:您没有正确生成您的UUID,并且一个软件正在尝试(某种程度上)为您修复它,而另一个则没有。解决方案是生成一个都将接受的有效UUID。
答案 1 :(得分:0)
我找到了解决方法。
示例用法:
$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);
}