如何根据登录用户在HTML中展示对应JSON数据
只展示当前登录用户的JSON数据解决方案
嘿,你已经搞定了用户数据存储到JSON的核心功能,现在就差筛选出当前登录用户的对应记录对吧?这事儿不难,我给你一步步说怎么实现:
核心思路
我们需要先从会话中拿到当前登录用户的邮箱,然后读取JSON文件,过滤掉不匹配的条目,只保留该用户的记录。
具体实现代码(修改你的json-2.php)
<?php // 首先启动会话——必须在任何输出之前调用,不然拿不到会话数据 session_start(); // 先检查用户是否已登录,避免未登录时出错 if (!isset($_SESSION['user_email'])) { echo "请先完成登录哦"; exit; } // 把当前登录用户的邮箱存到变量里(注意:这里的session键要和你登录时存的一致,比如你登录时用的是$_SESSION['email'],就改成对应的) $currentUserEmail = $_SESSION['user_email']; // 读取JSON文件并解析成PHP数组 $jsonFilePath = 'event_data.json'; $jsonContent = file_get_contents($jsonFilePath); $allEvents = json_decode($jsonContent, true); // 过滤出当前用户的事件记录 $userSpecificEvents = []; foreach ($allEvents as $eventItem) { // 检查当前条目是否以用户邮箱为键 if (array_key_exists($currentUserEmail, $eventItem)) { $userSpecificEvents[] = $eventItem; } } // 这里可以根据你的需求输出数据: // 如果要返回JSON格式给前端,就用下面的代码 header('Content-Type: application/json'); echo json_encode($userSpecificEvents); // 如果要在页面上展示成HTML列表,就换成这段: /* echo "<h3>你的事件记录</h3>"; echo "<ul>"; foreach ($userSpecificEvents as $event) { echo "<li>" . $event[$currentUserEmail] . "</li>"; } echo "</ul>"; */ ?>
注意事项
- 确认会话变量的名称:登录时你把用户邮箱存在
$_SESSION的哪个键里,就要对应修改代码里的$_SESSION['user_email'],比如如果是$_SESSION['logged_in_email'],就改成这个。 - 你的
event_data.json里有_empty_的条目,这个过滤逻辑会自动跳过这些无关记录。 - 如果JSON文件读取失败(比如文件不存在或权限问题),可以加个错误判断:比如
if (!$jsonContent) { echo "无法读取数据文件"; exit; }
内容的提问来源于stack exchange,提问作者Vrishty Garg
相关产品推荐
相关产品推荐

