PHP+MySQL用户笔记权限问题:仅显示当前登录用户的笔记
解决方向指引
1. 数据库调整
- 检查你的笔记存储表(比如命名为
notes),必须新增一个user_id字段,用来关联用户表(比如users)里的用户唯一主键ID(通常是users表的id字段)。 - 后续存储笔记时,必须把当前登录用户的
user_id和笔记内容一起存入notes表,不能只保存文本内容。
2. 存储笔记的代码修改
插入笔记的SQL语句要带上当前用户的ID(用户登录成功后,要把其ID存入$_SESSION['user_id']中):
INSERT INTO notes (content, user_id) VALUES ('用户输入的笔记内容', $_SESSION['user_id']);
重要提示:别直接把变量拼进SQL,要用预处理语句防注入,比如mysqli的写法:
$stmt = $conn->prepare("INSERT INTO notes (content, user_id) VALUES (?, ?)"); $stmt->bind_param("si", $note_content, $_SESSION['user_id']); $stmt->execute();
3. 获取笔记的代码修改
查询笔记时必须加筛选条件,只提取当前登录用户的笔记:
SELECT * FROM notes WHERE user_id = $_SESSION['user_id'];
同样用预处理语句更安全:
$stmt = $conn->prepare("SELECT * FROM notes WHERE user_id = ?"); $stmt->bind_param("i", $_SESSION['user_id']); $stmt->execute(); $result = $stmt->get_result();
4. 基础权限验证
- 确保只有登录用户能访问笔记页面,每次加载笔记页面前,先检查
$_SESSION['user_id']是否存在,不存在就跳转到登录页面。
内容的提问来源于stack exchange,提问作者Don'tFront
相关产品推荐
相关产品推荐

