如何用PHP在HTML页面展示已登录用户的专属信息
解决已登录用户个人信息展示的问题
嘿,我看你现在的代码是查询了所有用户的profile数据,但你需要的是当前已登录用户的姓名、技能和描述对吧?咱们一步步调整代码,实现更友好的展示效果:
第一步:精准查询当前登录用户的信息
你的现有SQL会返回所有用户的profile,这不是你要的。首先要利用session里的登录用户标识(比如$_SESSION['user_id'],这应该在session.php里已经初始化了),用预处理语句安全查询当前用户的数据:
<?php include('session.php'); require 'config.php'; // 假设你的profile表通过user_id字段关联登录用户,根据你的实际表结构调整字段名 $sql = "SELECT firstname, lastname, skills, description FROM profile WHERE user_id = ?"; // 使用预处理语句避免SQL注入 $stmt = $conn->prepare($sql); // 绑定参数:"i"表示参数是整数类型,如果user_id是字符串就用"s" $stmt->bind_param("i", $_SESSION['user_id']); $stmt->execute(); $result = $stmt->get_result(); $row = $result->fetch_assoc(); ?>
第二步:用友好的HTML结构展示信息
不用表格的话,卡片式布局会更美观,同时记得用htmlspecialchars()转义输出内容,防止XSS攻击:
<!-- 在PHP代码之后添加这段HTML --> <div style="border: 1px solid #ddd; padding: 20px; border-radius: 8px; max-width: 500px; margin: 20px auto;"> <h3>我的个人信息</h3> <?php if ($result->num_rows > 0): ?> <p><strong>姓名:</strong><?php echo htmlspecialchars($row['firstname'] . ' ' . $row['lastname']); ?></p> <p><strong>技能:</strong><?php echo htmlspecialchars($row['skills']); ?></p> <p><strong>个人描述:</strong><?php echo htmlspecialchars($row['description']); ?></p> <?php else: ?> <p>你还未完善个人信息,<a href="edit-profile.php">点击这里补充</a>吧!</p> <?php endif; ?> </div>
一些关键注意事项
- 确认你的
profile表和登录用户的关联字段正确(比如user_id),如果你的表用的是其他字段名(比如id),记得修改SQL里的WHERE条件。 - 一定要用预处理语句和
htmlspecialchars(),这能有效防止SQL注入和XSS攻击,提升网站安全性。 - 如果
session.php里存储的登录标识不是user_id,比如是username,那要把绑定参数的类型改成s(字符串),同时调整SQL的WHERE条件为username = ?。
内容的提问来源于stack exchange,提问作者James Wood
相关产品推荐
相关产品推荐

