以下代码在首页的顶部菜单栏里 在首页用户头像可以正常显示 但是无法在用户信息栏里读取出来 其他字段都可以 就是头像无法加载 我只是在内网做着玩 困扰好几天
<!-- start: 用户登入状态 dropdown-menu -->
<li>
<div class="dropdown morphing scale-left user-profile mx-lg-3 mx-2">
<a class="nav-link dropdown-toggle rounded-circle after-none p-0" href="#" role="button" data-bs-toggle="dropdown">
<img id="user-avatar" class="avatar img-thumbnail rounded-circle shadow" src="" alt="用户头像">
</a>
<div class="dropdown-menu border-0 rounded-4 shadow p-0">
<div class="card border-0 w240">
<div class="card-body border-bottom d-flex">
<img id="user-avatar" class="avatar rounded-circle" src="" alt="用户头像">
<div class="flex-fill ms-3">
<h6 id="user-name" class="card-title mb-0"></h6>
<span id="user-email" class="text-muted"></span>
</div>
</div>
<div class="list-group m-2 mb-3">
<!-- 添加登录和注册按钮的链接 -->
<a class="list-group-item list-group-item-action border-0" href="login.html"><i class="w30 fa bi-universal-access"></i>登录</a>
<a class="list-group-item list-group-item-action border-0" href="register.html"><i class="w30 fa fa-user-plus"></i>注册</a>
</div>
<a href="logout.php" class="btn bg-secondary text-light text-uppercase rounded-0" style="display: none;">退出登入</a>
</div>
</div>
</div>
</li>
<!-- JavaScript部分 -->
<script>
// 使用AJAX请求获取用户信息并填充到页面中
function getUserInfo() {
const xhr = new XMLHttpRequest();
xhr.open("GET", "get_user_info.php", true);
xhr.onreadystatechange = function() {
if (xhr.readyState === XMLHttpRequest.DONE) {
if (xhr.status === 200) {
const response = JSON.parse(xhr.responseText);
if (response.status === "not_logged_in") {
// 用户未登录,显示默认头像和登录链接
document.getElementById("user-avatar").src = "./assets/img/profile_av.png";
document.getElementById("user-name").textContent = "Guest";
document.getElementById("user-email").textContent = "guest@example.com";
// 显示登录和注册按钮,隐藏退出登录按钮
document.querySelector(".list-group").style.display = "block";
document.querySelector(".btn").style.display = "none";
} else if (response.status === "error") {
// 错误处理
console.error(response.message);
} else {
// 用户已登录,显示用户信息
document.getElementById("user-avatar").src = response.avatar;
document.getElementById("user-name").textContent = response.username;
document.getElementById("user-email").textContent = response.email;
// 显示用户头像和卡片,隐藏登录和注册按钮
document.querySelector(".list-group").style.display = "none";
document.querySelector(".btn").style.display = "block";
}
} else {
// 请求失败,错误处理
console.error("请求失败: " + xhr.status);
}
}
};
xhr.send();
}
// 页面加载时获取用户信息
document.addEventListener("DOMContentLoaded", function() {
getUserInfo();
});
</script>
get_user_info.php 代码
<?php
session_start();
$servername = "127.0.0.1";
$username = "root";
$password = "123456";
$database = "dataadee";
// 建立数据库连接
$conn = new mysqli($servername, $username, $password, $database);
if ($conn->connect_error) {
die("数据库连接失败: " . $conn->connect_error);
}
// 检查用户登录状态
if (isset($_SESSION['user_id'])) {
$user_id = $_SESSION['user_id'];
// 查询用户信息
$sql = "SELECT * FROM users WHERE id = '$user_id'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$user_data = $result->fetch_assoc();
echo json_encode($user_data);
} else {
// 用户不存在,或者其他错误处理
echo json_encode(array('status' => 'error', 'message' => '用户不存在'));
}
} else {
// 用户未登录
echo json_encode(array('status' => 'not_logged_in'));
}
$conn->close();
?>