2025-06-17 01:43:15 +00:00

260 lines
7.4 KiB
PHP
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
session_start();
require '../admin/config.php'; // 确保此文件中有数据库连接
// 检查是否登录
if (!isset($_SESSION['user_id']) || !isset($_SESSION['username'])) {
header("Location: /auth"); // 未登录时跳转到登录页面
exit();
}
// 获取当前用户信息
$user_id = $_SESSION['user_id'];
$username = $_SESSION['username'];
// 检查Token是否匹配
if (!isset($_GET['token']) || $_GET['token'] != $_SESSION['player_token']) {
header("Location: ../index.php"); // Token不匹配时跳转回玩家列表页面
exit();
}
// 获取传递的玩家名字
$player_name = $_GET['player_name'];
// 验证玩家名字是否有效
if (empty($player_name)) {
header("Location: ../index.php"); // 玩家名字为空时跳转回玩家列表页面
exit();
}
// 验证玩家是否属于当前用户并获取服务器ID
$stmt = $conn->prepare("SELECT player_name, description, created_at, server_id FROM players WHERE user_id = ? AND player_name = ?");
$stmt->bind_param("is", $user_id, $player_name);
$stmt->execute();
$result = $stmt->get_result();
$player = $result->fetch_assoc();
if (!$player) {
header("Location: ../index.php"); // 玩家不存在或不属于当前用户时跳转回玩家列表页面
exit();
}
// 获取服务器信息
$server_id = $player['server_id'];
$stmt = $conn->prepare("SELECT ip_address, port FROM mc_servers WHERE id = ?");
$stmt->bind_param("i", $server_id);
$stmt->execute();
$result = $stmt->get_result();
$server = $result->fetch_assoc();
// 检查 easyauth 数据库连接是否成功
if ($easyauthConn->connect_error) {
die("连接到 easyauth 数据库失败: " . $easyauthConn->connect_error);
}
// 在 easyauth 表中查找相同玩家名的 uuid
$easyauth_stmt = $easyauthConn->prepare("SELECT uuid FROM easyauth WHERE username = ?");
$easyauth_stmt->bind_param("s", $player_name);
$easyauth_stmt->execute();
$easyauth_result = $easyauth_stmt->get_result();
$easyauth_player = $easyauth_result->fetch_assoc();
// 处理注销请求
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['logout'])) {
// 连接主数据库
// $conn = new mysqli('localhost', 'awa', 'yzculture', 'ccs_auth');
if ($conn->connect_error) {
die("连接到主数据库失败: " . $conn->connect_error);
}
// 连接 easyauth 数据库
// $easyauth_conn = new mysqli('localhost', 'ccs', 'ccsdatabase', 'easyauth');
if ($easyauthConn->connect_error) {
die("连接到 easyauth 数据库失败: " . $easyauthConn->connect_error);
}
// 启用事务
$conn->autocommit(false);
$easyauthConn->autocommit(false);
try {
// 删除主数据库中的玩家记录
$stmt = $conn->prepare("DELETE FROM players WHERE user_id = ? AND player_name = ?");
$stmt->bind_param("is", $user_id, $player_name);
$stmt->execute();
$stmt->close();
// 删除 easyauth 数据库中的玩家记录
$easyauth_stmt = $easyauthConn->prepare("DELETE FROM easyauth WHERE username = ?");
$easyauth_stmt->bind_param("s", $player_name);
$easyauth_stmt->execute();
$easyauth_stmt->close();
// 提交事务
$conn->commit();
$easyauthConn->commit();
// 关闭数据库连接
$conn->close();
$easyauthConn->close();
// 销毁会话并跳转到登录页面
session_unset();
session_destroy();
header("Location: /auth");
exit();
} catch (Exception $e) {
// 回滚事务
$conn->rollback();
$easyauthConn->rollback();
$conn->close();
$easyauthConn->close();
die("注销失败: " . $e->getMessage());
}
}
// 关闭数据库连接
$conn->close();
$easyauthConn->close();
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>玩家详情 - 圆周云境</title>
<link rel="stylesheet" href="styles.css">
<style>
.player-info-container {
max-width: 600px;
margin: 20px auto;
padding: 20px;
background-color: #fff;
border-radius: 8px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.player-info {
margin-bottom: 20px;
}
.player-info p {
margin-bottom: 10px;
font-size: 16px;
line-height: 1.5;
}
.server-info {
margin-top: 20px;
padding-top: 20px;
border-top: 1px solid #e0e0e0;
}
.server-info p {
margin-bottom: 5px;
font-size: 14px;
}
.back-button {
margin-top: 20px;
text-align: center;
}
.menu-item {
display: inline-block;
padding: 8px 15px;
background-color: #007bff;
color: white;
text-decoration: none;
border-radius: 4px;
transition: background-color 0.3s;
}
.menu-item:hover {
background-color: #0056b3;
}
.top-bar {
background-color: #333;
color: white;
padding: 10px 0;
position: relative;
}
.top-bar-content {
text-align: center;
width: 100%;
}
.blue-bar {
height: 3px;
background-color: #007bff;
width: 100%;
}
.combined-container {
max-width: 1200px;
margin: 0 auto;
padding: 20px;
}
.header {
text-align: center;
margin-bottom: 20px;
}
.logout-container {
margin-top: 20px;
text-align: center;
}
.logout-button {
display: inline-block;
padding: 8px 15px;
background-color: #ff4d4d;
color: white;
text-decoration: none;
border-radius: 4px;
border: 2px solid #ff4d4d;
transition: background-color 0.3s;
cursor: pointer;
}
.logout-button:hover {
background-color: #ff0000;
border-color: #ff0000;
}
</style>
</head>
<body>
<div class="combined-container">
<div class="header">
<h1>玩家详情</h1>
</div>
<div class="player-info-container">
<div class="player-info">
<p>玩家名: <?php echo htmlspecialchars($player['player_name']); ?></p>
<p>称号: <?php echo htmlspecialchars($player['description']); ?></p>
<p>UUID: <?php echo htmlspecialchars($easyauth_player['uuid'] ?? '玩家未登录未找到UUID'); ?></p>
</div>
<div class="server-info">
<h3>服务器连接信息</h3>
<p>服务器IP: <?php echo htmlspecialchars($server['ip_address'] . ":" . $server['port']); ?></p>
</div>
<div class="back-button">
<a href="../index.php" class="menu-item">返回玩家列表</a>
</div>
<div class="logout-container">
<form action="" method="post">
<button type="submit" name="logout" value="1" class="logout-button" onclick="return confirm('您确定要注销账号吗?此操作不可逆!')">注销账号</button>
</form>
</div>
</div>
</div>
</body>
</html>