260 lines
7.4 KiB
PHP
260 lines
7.4 KiB
PHP
![]() |
<?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>
|