You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

PHP网站用户头像显示异常求助:需展示登录用户头像或默认图

解决个人中心头像显示问题

咱们先拆解下你遇到的核心问题,再一步步修正:

1. SQL查询逻辑错误

你当前的查询语句存在明显的逻辑偏差:

$query = mysqli_query($con, "SELECT * FROM t_akun WHERE username=$id_account");

$_SESSION['id']是用户的ID值,你却用它去匹配username字段,这会导致查询结果要么拉到错误的用户,要么返回多条数据,这也是后续页面显示所有用户头像的根源。

2. 冗余的循环处理

你把查询到的所有用户头像存入数组再循环输出,但咱们只需要当前登录用户的单条数据,完全没必要做循环操作。

修正后的完整代码

我帮你调整了查询逻辑,同时简化了输出流程,还加入了安全防护:

<?php
// 确保Session已启动
session_start();

$id_account = $_SESSION['id'];

// 用预处理语句查询当前用户的头像字段(避免SQL注入)
$stmt = mysqli_prepare($con, "SELECT pictures FROM t_akun WHERE id = ?");
mysqli_stmt_bind_param($stmt, "i", $id_account);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
$currentUser = mysqli_fetch_object($result);

// 判断并输出对应头像
if ($currentUser && (is_null($currentUser->pictures) || empty($currentUser->pictures))) {
?>
    <img src="mypath/default.jpg" class="pictures" alt="默认头像">
<?php
} else {
?>
    <img class="pictures" src="mypath/<?php echo htmlspecialchars($currentUser->pictures); ?>" alt="用户头像">
<?php
}
?>

改动说明

  • 修正查询逻辑:用用户ID匹配表中的ID字段(如果你的表中ID字段不是id,记得改成实际字段名),确保只获取当前登录用户的单条数据。
  • 移除冗余循环:直接获取单个用户对象,避免了遍历所有用户的错误操作。
  • 安全优化:使用预处理语句防止SQL注入,用htmlspecialchars()处理头像文件名,避免XSS风险。
  • 严谨判断:同时覆盖头像字段为null或空字符串的情况,确保默认头像能正常显示。

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

火山引擎 最新活动