当前位置:首页 > PHP

php实现账号切换源码

2026-02-14 04:02:56PHP

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

功能说明

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

安全注意事项

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

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

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

相关文章

react打包如何不删除源码

react打包如何不删除源码

配置自定义构建输出目录 在项目根目录下创建或修改 craco.config.js(使用CRACO)或 config-overrides.js(使用react-app-rewired),通过覆盖Webp…

css源码制作

css源码制作

CSS 源码制作基础 CSS(层叠样式表)用于控制网页的视觉表现,以下为制作 CSS 源码的核心方法: 文件创建与链接 新建 .css 文件(如 style.css),通过 <link>…

php实现账号切换源码

php实现账号切换源码

PHP实现账号切换功能 实现账号切换功能通常涉及会话管理、用户认证和权限控制。以下是实现账号切换的核心代码示例: 会话管理基础 session_start(); $_SESSION['user_i…

jquery源码解读

jquery源码解读

jQuery 源码解读指南 jQuery 源码解读需要从核心架构、模块划分、设计模式等角度入手。以下是关键解读方向和方法: 核心架构 jQuery 的核心是一个立即执行的函数表达式(IIFE),创建…

如何阅读java源码

如何阅读java源码

理解Java源码的基本结构 Java源码通常由类(Class)、接口(Interface)、枚举(Enum)和注解(Annotation)组成。每个文件对应一个公共类或接口,文件名与公共类名一致。包(…

java 如何修改源码

java 如何修改源码

修改 Java 源码的步骤 获取源码 从官方渠道下载 Java Development Kit (JDK) 的源码包。OpenJDK 是开源的,可以通过其官方网站或 GitHub 仓库获取。 配置开…