当前位置:首页 > PHP

php实现账号切换源码

2026-02-14 04:02:56PHP

以下是一个简单的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>

功能说明

  1. 使用$_SESSION存储当前用户和已登录用户列表
  2. 通过switch_to参数实现账号切换
  3. 通过logout参数实现指定账号登出
  4. 自动将当前用户切换到剩余账号中的第一个(登出时)

安全注意事项

  1. 实际应用中应使用密码哈希(如password_hash()
  2. 建议增加CSRF防护
  3. 重要操作需进行二次验证
  4. 会话数据应设置有效期

此代码为基础实现方案,生产环境需根据具体业务需求进行扩展和优化。

php实现账号切换源码

标签: 账号源码
分享给朋友:

相关文章

vue实现账号注册功能

vue实现账号注册功能

实现账号注册功能 在Vue中实现账号注册功能通常需要结合前端表单和后端API交互。以下是一个完整的实现方案: 创建注册表单组件 新建一个Register.vue组件,包含基本的注册表单字段: &l…

如何读react源码

如何读react源码

理解React源码的结构 React源码托管在GitHub上,主要分为几个核心模块:react、react-dom、react-reconciler等。react包包含核心API和组件逻辑,react…

vue compile源码实现

vue compile源码实现

Vue 的模板编译(compile)是将模板字符串转换为渲染函数的过程,涉及解析、优化和代码生成三个阶段。以下是其核心实现原理的分析: 解析阶段(Parse) 将模板字符串转换为抽象语法树(AS…

vue实现聊天源码

vue实现聊天源码

Vue实现聊天功能的核心步骤 环境准备 安装Vue CLI创建项目,添加必要依赖如vue-socket.io或socket.io-client实现实时通信。基础项目结构需包含聊天组件、消息列表和输入框…

vue实现图片上传源码

vue实现图片上传源码

Vue 图片上传实现源码 以下是一个基于 Vue 的图片上传组件实现,包含前端代码和关键逻辑说明。示例使用 axios 发送请求,并支持预览、限制文件类型和大小等功能。 基础模板结构 <tem…

vue源码的具体实现

vue源码的具体实现

Vue 源码的核心实现 Vue.js 的源码实现主要围绕响应式系统、虚拟 DOM、模板编译和组件化等核心概念展开。以下是关键部分的实现细节: 响应式系统 Vue 2.x 使用 Object.def…