You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于用户名实现登录页面差异化跳转的需求及代码咨询

实现基于用户名的差异化登录跳转

核心修改点

要实现Manager和Staff登录后跳转到不同页面,只需调整3处逻辑:

  1. 修正已登录状态的跳转判断:页面顶部的已登录校验逻辑,要根据当前用户身份跳转对应页面
  2. 保留用户信息查询逻辑:从数据库获取用户名(若有role字段也可改用角色判断,更灵活)
  3. 新增登录成功后的跳转分支:密码验证通过后,根据用户名选择跳转目标页面

修改后的完整代码

<?php
// 初始化会话
session_start();
 
// 校验用户是否已登录,已登录则跳转对应页面
if(isset($_SESSION["loggedin"]) && $_SESSION["loggedin"] === true){
    if($_SESSION["username"] === 'Manager'){
        header("location: manager_dashboard.php");
    } elseif($_SESSION["username"] === 'Staff'){
        header("location: staff_dashboard.php");
    } else {
        // 其他用户默认跳转页面(可根据需求调整)
        header("location: welcome.php");
    }
    exit;
}
 
// 引入配置文件
require_once "config.php";
 
// 定义变量并初始化
$username = $password = "";
$username_err = $password_err = $login_err = "";
 
// 处理表单提交
if($_SERVER["REQUEST_METHOD"] == "POST"){
 
    // 校验用户名是否为空
    if(empty(trim($_POST["username"]))){
        $username_err = "请输入用户名。";
    } else{
        $username = trim($_POST["username"]);
    }
    
    // 校验密码是否为空
    if(empty(trim($_POST["password"]))){
        $password_err = "请输入密码。";
    } else{
        $password = trim($_POST["password"]);
    }
    
    // 验证凭证
    if(empty($username_err) && empty($password_err)){
        // 准备查询语句(若有role字段可改为SELECT id, username, password, role FROM users...)
        $sql = "SELECT id, username, password FROM users WHERE username = ?";
        
        if($stmt = mysqli_prepare($link, $sql)){
            // 绑定参数
            mysqli_stmt_bind_param($stmt, "s", $param_username);
            
            // 设置参数
            $param_username = $username;
            
            // 执行查询
            if(mysqli_stmt_execute($stmt)){
                // 存储结果
                mysqli_stmt_store_result($stmt);
                
                // 校验用户名是否存在
                if(mysqli_stmt_num_rows($stmt) == 1){                    
                    // 绑定结果变量
                    mysqli_stmt_bind_result($stmt, $id, $username, $hashed_password);
                    if(mysqli_stmt_fetch($stmt)){
                        // 验证密码
                        if(password_verify($password, $hashed_password)){
                            // 密码正确,初始化会话
                            session_start();
                            
                            // 存储用户信息到会话
                            $_SESSION["loggedin"] = true;
                            $_SESSION["id"] = $id;
                            $_SESSION["username"] = $username;                            
                            
                            // 根据用户名跳转对应页面
                            if($username === 'Manager'){
                                header("location: manager_dashboard.php");
                            } elseif($username === 'Staff'){
                                header("location: staff_dashboard.php");
                            } else {
                                header("location: welcome.php");
                            }
                            exit;
                        } else{
                            // 密码错误提示
                            $login_err = "用户名或密码错误。";
                        }
                    }
                } else{
                    // 用户名不存在提示
                    $login_err = "用户名或密码错误。";
                }
            } else{
                echo "哎呀!出了点问题,请稍后再试。";
            }

            // 关闭语句
            mysqli_stmt_close($stmt);
        }
    }
    
    // 关闭连接
    mysqli_close($link);
}
?>
 
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>登录</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<br><br><br>
<header><center> <img src = "logo.png" height = "100" width = "180"></center></header>
 <div class="container">
        <div class="row justify-content-center">
            <div class="col-md-6">
                <div class="card mt-5">
                    <div class="card-header" style="background-color: #3fbbc0;">
                        <h4>登录</h4>
                    </div>
                    <div class="card-body">

        <?php 
        if(!empty($login_err)){
            echo '<div class="alert alert-danger">' . $login_err . '</div>';
        }        
        ?>


        <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
            <div class="col-md-12">

                <label>用户名</label>
                <input type="text" name="username" class="form-control <?php echo (!empty($username_err)) ? 'is-invalid' : ''; ?>" value="<?php echo $username; ?>">
                <span class="invalid-feedback"><?php echo $username_err; ?></span>
            </div>    
<div class="col-md-4">
                <label></label>
             
            </div>    
            <div class="col-md-12">
                <label>密码</label>
                <input type="password" name="password" class="form-control <?php echo (!empty($password_err)) ? 'is-invalid' : ''; ?>">
                <span class="invalid-feedback"><?php echo $password_err; ?></span>
            </div>
<div class="col-md-4">
                <label></label>
               <label></label>
            </div>
            <div class="form-group">
               <center> <input type="submit"  style="background-color: #3fbbc0;" value="登录">
            </div>
         
        </form>
    </div>
</body>
</html>

补充提示

  • 若你的用户表有role字段(如manager/staff),建议将SQL查询改为SELECT id, username, password, role FROM users WHERE username = ?,绑定$role变量后用角色判断跳转,比固定用户名更灵活。
  • 请确保manager_dashboard.php和staff_dashboard.php已创建,或替换为你实际的页面路径。

内容的提问来源于stack exchange,提问作者Umar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 07:05:53