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

表单无法显示当前登录用户用户名的技术求助

问题分析与解决思路

你的代码目前存在两个核心问题:一是引用了未定义的$selectedreal_name变量,导致无法正确显示用户名;二是逻辑错误——你在循环所有用户时,每个选项都在判断Session,但没有将当前循环的用户与登录用户做匹配,自然无法定位到具体的登录用户。

下面分两种常见场景给出解决方案:

场景1:下拉框保留所有用户,默认选中当前登录用户

这种情况适合需要选择其他用户提交表单,但默认显示登录用户的场景:

// 务必确保在代码最开头启动Session
session_start();

<select name="complain_form" class="custom-select">
  <option value="" disabled>Reported by...</option>
  <?php foreach ($all_account_info as $account_info) { 
    // 对比当前循环的用户与登录用户的real_name,匹配则添加selected属性
    $selected = ($_SESSION['real_name'] === $account_info['real_name']) ? 'selected' : '';
  ?>
  <option value="<?php echo $account_info['id']; ?>" <?php echo $selected; ?>>
    <?php echo $account_info['real_name']; ?>
  </option>
  <?php } ?>
</select>

场景2:下拉框仅显示当前登录用户

如果不需要选择其他用户,只需要固定显示登录用户:

session_start();

// 更安全的做法:建议Session中存储用户ID,再从数据库查询对应real_name(避免Session被篡改)
// 示例:假设你已经通过Session的user_id查询到了当前用户信息
// $current_user = 数据库查询语句(WHERE id = $_SESSION['user_id'])

<select name="complain_form" class="custom-select">
  <option value="" disabled>Reported by...</option>
  <?php if(isset($_SESSION['real_name'])) { ?>
  <option value="<?php echo $_SESSION['user_id']; ?>" selected>
    <?php echo $_SESSION['real_name']; ?>
  </option>
  <?php } ?>
</select>

额外注意事项

  1. 必须在所有输出之前调用session_start();,否则无法读取Session变量;
  2. 调试时可以用var_dump($_SESSION);检查real_name是否确实被存入Session;
  3. 安全性建议:尽量避免在Session中直接存储显示用的real_name,优先存储用户ID,再通过ID从数据库获取用户信息,防止Session被篡改导致显示异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 23:44:07