260 lines
7.4 KiB
PHP
Raw Normal View History

2025-06-17 01:43:15 +00:00
<?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>