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

如何使用Ajax、PHP及SQL语句获取当前登录用户的事件数据

问题原因

你现有代码的SQL虽然写了按username字段筛选的逻辑,但绑定参数时传入的$username变量从未被赋值,也没有读取$_SESSION中存储的当前登录用户信息,因此无法正确过滤出当前用户的事件数据。

修复步骤
  • 确保functions.php文件最顶部(所有输出逻辑之前)调用session_start(),否则无法读取SESSION中存储的登录态数据
  • 在查询逻辑前先从$_SESSION中取出当前登录用户的标识,同时增加登录态校验,未登录时直接返回对应提示即可
  • 修正参数绑定逻辑,将SESSION中取出的当前用户标识作为筛选条件传入SQL,建议额外加上status = 1的筛选条件,适配后续可能的软删除需求
  • 前端JS代码不需要调整,注意绝对不要通过前端传参传递用户标识,避免被恶意篡改导致越权查询
修正后的PHP后端代码
// 这行必须放在functions.php最顶部,所有输出、业务逻辑之前
session_start();

function getEvents($date = ''){
    $date = $date?$date:date("Y-m-d");

    $eventListHTML = '<h2 class="sidebar__heading">'.date("l", strtotime($date)).'<br>'.date("F d", strtotime($date)).'</h2>';

    // 登录校验,未登录直接返回提示
    // 注意把下面的current_username替换成你项目实际存储登录用户名的SESSION键名
    if(empty($_SESSION['current_username'])){
        $eventListHTML .= '<p>请先登录后查看可用性事件</p>';
        echo $eventListHTML;
        return;
    }
    // 从SESSION读取当前登录用户名
    $currentUser = $_SESSION['current_username'];

    global $db;
    // 增加status=1筛选,匹配现有表的字段逻辑
    $stmt = $db->prepare("SELECT * FROM events WHERE date = ? AND username = ? AND status = 1");
    // 绑定当前登录用户作为筛选条件
    $stmt->bind_param("ss", $date, $currentUser);
    $stmt->execute();
    $result = $stmt->get_result();
    if($result->num_rows > 0){
        $eventListHTML .= '<ul class="sidebar__list">';
        $eventListHTML .= '<li class="sidebar__list-item sidebar__list-item--complete">Availability</li>';
        $i=0;
        while($row = $result->fetch_assoc()){ $i++;
            $eventListHTML .= '<li class="sidebar__list-item"><span class="list-item__time">'.$i.'.</span>'.$row['title'].'</li>';
        }
        $eventListHTML .= '</ul>';
    }
    echo $eventListHTML;
}
安全提示
  • 不要通过前端AJAX传用户名/用户ID参数做筛选,前端传入的参数可以被任意篡改,会造成越权查看其他用户日程的安全漏洞,用户身份校验必须以后端SESSION存储的登录信息为准
  • 如果你的SESSION中存储的是用户ID而非用户名,把SQL里的username = ?替换为对应表的用户ID字段即可,绑定参数时传入SESSION中存储的用户ID。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 16:21:20