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

PHP登录后从phpMyAdmin数据库获取显示用户信息故障求助

问题:登录后无法从数据库获取并展示用户信息

我尝试在用户登录后,从phpMyAdmin数据库中获取对应的firstName、lastName、email和username信息并显示到HTML页面,但始终无法正常展示这些信息,恳请协助解决。

我曾尝试在SAA_Login_Connect.php中创建Session来获取所需字段并在HTML页面显示,但出现登录错误。


相关代码

SAA_Register_Connect.php

<?php
    $firstName = $_POST['firstname'];
    $lastName = $_POST['lastname'];
    $email = $_POST['email'];
    $username = $_POST['username'];
    $password = $_POST['password'];

    // Database connection
    $conn = new mysqli('localhost','root','','test');
    if($conn->connect_error){
        echo "$conn->connect_error";
        die("Connection Failed : ". $conn->connect_error);
    } else {
        $stmt = $conn->prepare("INSERT INTO register(firstName, lastName, email, username, password) VALUES (?, ?, ?, ?, ?)");
        $stmt->bind_param("sssss", $firstName, $lastName, $email, $username, $password);
        $execval = $stmt->execute();
        if ($execval === FALSE) {
            echo "Error: " . $conn->error;
        } else {
            echo "Registration successfully...";
        }
        $stmt->close();
        $conn->close();
    }
?>

SAA_Login_Connect.php

<?php
    $username = $_POST['username'];
    $password = $_POST['password'];

    // Database connection
    $conn = new mysqli('localhost', 'root', '', 'test');
    if ($conn->connect_error) {
        die("Connection Failed: " . $conn->connect_error);
    }

    // Prepare SQL statement to retrieve user data
    $stmt = $conn->prepare("SELECT * FROM register WHERE username = ?");
    $stmt->bind_param("s", $username);
    $stmt->execute();
    $stmt_result = $stmt->get_result();

    if ($stmt_result->num_rows > 0) {
        $data = $stmt_result->fetch_assoc();
        if($data['password'] === $password){
            echo json_encode(array("message" => "Login Successfully",));
        }
        else{
            echo json_encode(array("error" => "Invalid Email or Password"));
        }
    }
    else {
        echo json_encode(array("error" => "Invalid Email or Password"));
    }

    $stmt->close();
    $conn->close();
?>

解决方案

1. 修复Session初始化问题

Session使用前必须先开启,在SAA_Login_Connect.php最顶部添加:

session_start();

所有需要读取Session的页面(比如用户信息展示页),开头也必须加这行代码。

2. 登录成功后存储用户信息到Session

修改SAA_Login_Connect.php中登录成功的逻辑,把用户数据存入Session:

if($data['password'] === $password){
    // 存储用户信息到Session
    $_SESSION['user'] = [
        'firstName' => $data['firstName'],
        'lastName' => $data['lastName'],
        'email' => $data['email'],
        'username' => $data['username']
    ];
    echo json_encode(array("message" => "Login Successfully"));
}

3. 创建用户信息展示页面

新建user_profile.php,读取Session并展示数据:

<?php
session_start();
// 验证用户是否已登录
if(!isset($_SESSION['user'])){
    header("Location: login.html"); // 未登录跳转登录页
    exit;
}
$user = $_SESSION['user'];
?>
<!DOCTYPE html>
<html>
<head>
    <title>用户信息</title>
</head>
<body>
    <h2>用户信息</h2>
    <ul>
        <li>姓名:<?php echo $user['firstName'] . ' ' . $user['lastName']; ?></li>
        <li>邮箱:<?php echo $user['email']; ?></li>
        <li>用户名:<?php echo $user['username']; ?></li>
    </ul>
</body>
</html>

4. 修复密码安全问题(必做)

当前代码直接存储明文密码,存在严重安全风险,需修改为哈希存储:

  • 注册页SAA_Register_Connect.php修改密码处理:
// 替换原密码赋值行
$hashedPassword = password_hash($password, PASSWORD_DEFAULT);
$stmt->bind_param("sssss", $firstName, $lastName, $email, $username, $hashedPassword);
  • 登录页SAA_Login_Connect.php修改密码验证:
// 替换原密码判断行
if(password_verify($password, $data['password'])){
    // 存储Session逻辑...
}

5. 前端登录跳转处理

如果前端用AJAX发送登录请求,成功后跳转到信息页:

// 示例jQuery代码
$.post('SAA_Login_Connect.php', {username: $('#username').val(), password: $('#password').val()}, function(res){
    let response = JSON.parse(res);
    if(response.message){
        window.location.href = 'user_profile.php';
    } else {
        alert(response.error);
    }
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 11:01:04