php实现账号切换源码
以下是一个简单的PHP实现账号切换功能的示例代码,分为登录验证和账号切换两部分:
登录验证部分
<?php
session_start();
// 模拟用户数据库
$users = [
'user1' => ['password' => 'pass1', 'email' => 'user1@example.com'],
'user2' => ['password' => 'pass2', 'email' => 'user2@example.com']
];
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['login'])) {
$username = $_POST['username'];
$password = $_POST['password'];
if (isset($users[$username]) && $users[$username]['password'] === $password) {
$_SESSION['user'] = $username;
$_SESSION['email'] = $users[$username]['email'];
header('Location: dashboard.php');
exit;
} else {
$error = "Invalid username or password";
}
}
?>
账号切换部分
<?php
session_start();
// 检查是否已登录
if (!isset($_SESSION['user'])) {
header('Location: login.php');
exit;
}
// 切换账号功能
if (isset($_POST['switch_account'])) {
session_unset();
session_destroy();
header('Location: login.php');
exit;
}
?>
<!-- 显示当前用户信息 -->
<div>
<p>Logged in as: <?php echo $_SESSION['user']; ?></p>
<p>Email: <?php echo $_SESSION['email']; ?></p>
<form method="post">
<button type="submit" name="switch_account">Switch Account</button>
</form>
</div>
多账号管理增强版
对于需要同时管理多个账号的系统,可以使用以下方法:

// 在登录时存储多个账号信息
$_SESSION['accounts'] = [
'primary' => [
'username' => 'user1',
'email' => 'user1@example.com'
],
'secondary' => [
'username' => 'user2',
'email' => 'user2@example.com'
]
];
// 切换账号功能
function switchAccount($accountType) {
if (isset($_SESSION['accounts'][$accountType])) {
$_SESSION['current_user'] = $_SESSION['accounts'][$accountType];
return true;
}
return false;
}
安全注意事项
- 始终使用password_hash()存储密码
- 实现CSRF保护
- 使用HTTPS协议
- 设置合适的session过期时间
- 记录用户登录日志
这个实现提供了基本的账号切换功能,可以根据实际需求进行扩展和完善。对于生产环境,建议使用成熟的认证框架如Laravel的认证系统或Symfony的安全组件。






