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

如何实现登录后Web端仅展示当前用户的专属数据?

问题解决:登录后仅显示当前用户数据

核心问题分析

当前登录后表格展示所有用户数据,而非仅当前登录用户数据,主要排查方向集中在Session用户ID有效性、数据库字段映射、SQL查询逻辑三个方面,以下是具体修复步骤:


1. 验证Session中用户ID的正确性

首先确认登录环节是否将当前用户的idUser正确存入Session。当前代码使用$_SESSION['usuario'][0]作为查询条件,需验证该值是否为有效用户ID:

  • 在datos.php开头添加调试代码:
    session_start();
    var_dump($_SESSION['usuario'][0]); // 输出Session存储的用户ID
    exit;
    
  • 若输出为空或非目标用户ID,需修正登录逻辑,确保用户ID被正确存入Session,示例:
    // 登录成功后存储用户ID的示例代码
    $_SESSION['usuario'][0] = $loggedUser['idUser']; // 替换为实际获取用户ID的逻辑
    

2. 修正数据库字段与代码的映射错误

你的MySQL表字段为first name、last name、phone number、address,但PHP代码中使用的是西班牙语命名的键名(nombre、apellidos等),需统一字段映射:

  • 修改SQL查询语句,用字段别名匹配代码中的键:
    $sentencia = "SELECT idUser, `first name` as nombre, `last name` as apellidos, `phone number` as telefono, address as direccion FROM users_data WHERE idUser = :idUser";
    
    注:MySQL中含空格的字段名需用反引号`包裹。

3. 加强PDO查询的错误捕获

添加异常捕获,快速定位查询过程中的错误:

try {
    $conexion = DB::conn();
    $sentencia = "SELECT idUser, `first name` as nombre, `last name` as apellidos, `phone number` as telefono, address as direccion FROM users_data WHERE idUser = :idUser";
    $consulta = $conexion->prepare($sentencia);
    $consulta->execute(array(':idUser' => $_SESSION['usuario'][0]));
    
    // 数据处理逻辑...
} catch(PDOException $e) {
    echo json_encode(['error' => $e->getMessage()]);
    exit;
}

4. 修复后的完整datos.php代码

<?php
session_start(); // 必须放在代码最顶部,确保Session正常启动
include('./DB.php');

try {
    // 校验Session有效性
    if(!isset($_SESSION['usuario'][0]) || empty($_SESSION['usuario'][0])) {
        echo json_encode(['error' => '未登录或用户ID无效']);
        exit;
    }

    $conexion = DB::conn();
    $sentencia = "SELECT idUser, `first name` as nombre, `last name` as apellidos, `phone number` as telefono, address as direccion FROM users_data WHERE idUser = :idUser";
    $consulta = $conexion->prepare($sentencia);
    $consulta->execute(array(':idUser' => $_SESSION['usuario'][0]));

    $json = [];
    while ($row = $consulta->fetch(PDO::FETCH_ASSOC)) {
        $json[] = [
            'idUser' => $row['idUser'],
            'nombre' => $row['nombre'],
            'apellidos' => $row['apellidos'],
            'telefono' => $row['telefono'],
            'direccion' => $row['direccion']
        ];
    }

    echo json_encode($json);
} catch(PDOException $e) {
    echo json_encode(['error' => $e->getMessage()]);
}
?>

前端调试辅助

在AJAX回调中添加日志,查看返回数据是否正确:

$.ajax({
    type: "GET",
    url: "datos.php",
    success: (response) => {
      let datos = JSON.parse(response);
      console.log(datos); // 查看返回的用户数据
      let template = "";

      datos.forEach((dato) => {
        template += `
          <tr>
            <td>${dato.idUser}</td>
            <td>${dato.nombre}</td>
            <td>${dato.apellidos}</td>
            <td>${dato.telefono}</td>
            <td>${dato.direccion}</td>
          </tr>
        `;
      });
      $('#datos').html(template);
    },
    error: (xhr) => {
      console.log(xhr.responseText); // 查看请求错误信息
    }
  });

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 17:25:37