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

PHP登录后无法展示用户姓名 仅获取到邮箱密码该如何解决

功能修复方案

存在的问题

  • 登录查询SQL未包含name字段,无法从数据库获取姓名数据
  • password_verify参数顺序错误,且重复对用户输入密码做哈希运算的逻辑错误
  • 密码校验通过后重复执行SQL查询的逻辑冗余,没有实际作用
  • 代码开头接收不存在的POST参数(姓名、用户名),会触发PHP警告

修正代码

1. server.php调整

<?php
// session_start 放在代码最顶部,避免 headers already sent 错误
session_start();
include_once "inc/user-connection.php";

// 仅接收登录页存在的字段:邮箱、密码
$email = mysqli_real_escape_string($conn, $_POST['email']);
$input_password = $_POST['password']; // 明文密码不要转义,留着给password_verify校验

if (isset($_POST['admin-sign-in'])) {
    if (!empty($email) && !empty($input_password)) {
        // 查询字段新增name
        $sql = 'SELECT email, password, name FROM admin WHERE email = ?';

        if ($stmt = $conn->prepare($sql)) {
            $stmt->bind_param('s', $email);
            $stmt->execute();
            $stmt->store_result();

            if ($stmt->num_rows > 0) {
                // 绑定结果新增数据库存储的密码、姓名
                $stmt->bind_result($email, $db_hashed_password, $name);
                $stmt->fetch();

                // 密码校验:第一个参数是用户输入的明文密码,第二个是数据库存储的哈希密码
                if (password_verify($input_password, $db_hashed_password)) {
                    // 直接把绑定拿到的name存入session
                    $_SESSION['name'] = $name;
                    header("location: dashboard.php");
                    die();
                } else {
                    header("location: ../html/sign-in-error.html");
                    die();
                }
            } else {
                header("location: ../html/sign-in-error.html");
                die();
            }
            $stmt->close();
        }
    } else {
        header("location: ../html/404-error.html");
        die();
    }
}

2. dashboard.php可选优化(避免未登录时报错)

<?php
session_start();
// 增加判空兜底,避免session不存在时抛出警告
$show_name = $_SESSION['name'] ?? '管理员';
?>
<div class="d-block">
<h1 class="lead fw-normal text-muted mb-4 px-lg-10">您好,<?php echo $show_name; ?></h1>
</div>

调整后即可正常从数据库读取姓名存入session,控制台页面就能展示对应姓名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:24:06