gpt4 book ai didi

mysql - 确保 webapp 用户只能将记录添加到他们拥有的数据库中

转载 作者:行者123 更新时间:2023-11-29 22:55:58 24 4
gpt4 key购买 nike

我正在开发一个非常简单的 Web 应用程序,用于将教师、学生和家庭作业记录在 MySQL 数据库中各自的表中。学生被分配给老师,并有一个表格记录哪些学生完成了哪些家庭作业。

教师可以选择某项家庭作业,然后选择一名学生完成该任务。提交此信息将记录学生已完成作业。

表格如下:

老师

--------------------------
|teacher_id | name |
--------------------------
| | |

学生

--------------------------
|student_id | teacher_fk |
--------------------------
| | |

家庭作业

--------------------------
|homework_id | details |
--------------------------
| | |

家庭作业_完成

-------------------------------------------
|completion_id | student_fk | homework_fk |
-------------------------------------------
| | | |

当教师选择作业任务和学生并将其提交为已完成时,MySQL INSERT 的使用如下

INSERT INTO homework_completion VALUES 'student_id', 'homework_id'

这两个值都是从用户提交的表单中检索的。如果用户要使用浏览器开发人员工具,他们可以更改表单中的 Student_id,然后为不属于他们的学生保存作业完成情况。

如何最好地避免这种情况?有没有比事先进行选择来检查学生是否属于老师更好的选择?

最佳答案

在您的 session 中,您将存储教师的 ID(登录用户)。

执行插入时,您可以使用 INSERT INTO ... SELECT 强制执行规则:

INSERT INTO homework_completion (student_fk, homework_fk)
SELECT s.student_id, :homework_id
FROM student s
WHERE s.student_id = :student_id
AND s.teacher_fk = :teacher_id

如果学生的教师 ID 不匹配,将插入零条记录。

如果特定学生和教师的 student 中可能存在重复记录,请将 LIMIT 1 添加到 select 子句。

关于mysql - 确保 webapp 用户只能将记录添加到他们拥有的数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28721880/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com