php实现账号切换源码
以下是一个简单的PHP实现账号切换功能的示例代码,适用于基础的多账号登录场景。代码结构清晰,可根据实际需求扩展。
登录表单与切换逻辑
<?php
session_start();
// 模拟用户数据库
$users = [
'user1' => ['password' => '123456', 'name' => '张三'],
'user2' => ['password' => '654321', 'name' => '李四']
];
// 登录处理
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['login'])) {
$username = $_POST['username'];
$password = $_POST['password'];
if (isset($users[$username]) && $users[$username]['password'] === $password) {
$_SESSION['current_user'] = $users[$username];
$_SESSION['logged_users'][$username] = $users[$username];
}
}
// 账号切换处理
if (isset($_GET['switch_to'])) {
$switch_user = $_GET['switch_to'];
if (isset($_SESSION['logged_users'][$switch_user])) {
$_SESSION['current_user'] = $_SESSION['logged_users'][$switch_user];
}
}
// 登出处理
if (isset($_GET['logout'])) {
$logout_user = $_GET['logout'];
unset($_SESSION['logged_users'][$logout_user]);
if ($_SESSION['current_user']['name'] === $logout_user) {
$_SESSION['current_user'] = reset($_SESSION['logged_users']);
}
}
?>
前端展示部分
<!DOCTYPE html>
<html>
<head>
<title>账号切换演示</title>
</head>
<body>
<?php if (!isset($_SESSION['current_user'])): ?>
<form method="post">
<input type="text" name="username" placeholder="用户名" required>
<input type="password" name="password" placeholder="密码" required>
<button type="submit" name="login">登录</button>
</form>
<?php else: ?>
<h3>当前用户: <?php echo $_SESSION['current_user']['name']; ?></h3>
<!-- 已登录账号列表 -->
<div>
<h4>可切换账号:</h4>
<?php foreach ($_SESSION['logged_users'] as $username => $user): ?>
<?php if ($username !== array_search($_SESSION['current_user'], $_SESSION['logged_users'])): ?>
<a href="?switch_to=<?php echo $username; ?>">
<?php echo $user['name']; ?>
</a> |
<?php endif; ?>
<?php endforeach; ?>
</div>
<!-- 登出选项 -->
<div>
<?php foreach ($_SESSION['logged_users'] as $username => $user): ?>
<a href="?logout=<?php echo $username; ?>">登出 <?php echo $user['name']; ?></a> |
<?php endforeach; ?>
</div>
<?php endif; ?>
</body>
</html>
功能说明
- 使用
$_SESSION存储当前用户和已登录用户列表 - 通过
switch_to参数实现账号切换 - 通过
logout参数实现指定账号登出 - 自动将当前用户切换到剩余账号中的第一个(登出时)
安全注意事项
- 实际应用中应使用密码哈希(如
password_hash()) - 建议增加CSRF防护
- 重要操作需进行二次验证
- 会话数据应设置有效期
此代码为基础实现方案,生产环境需根据具体业务需求进行扩展和优化。







