从您的最新评论中检查,我假设您有一个表格,expired_quizzes
其中至少包含三列,quiz_id
和quiz_filename
布尔值is_active
。我也会将表格标准化为 a userid
,因此如果用户 A 观看它并参加测验,用户 B 仍然可以看到视频(不过,与朋友作弊更容易)。如果没有看到任何代码或结构,很难确切地知道发生了什么,但请尝试检查以下几项:
如果您根据搜索查找测验,并且网页使用变量 $_GET
,则无论何时访问该网页,它都会加载测验。所以考虑:
http//www.yourwebpage.com/?quizfilename=viewablequiz.mp4
根据您的 PHP 指令,它将始终加载viewablequiz.mp4
. 有两个建议可以防止它。
然后,返回row['filename']
您的 PHP 代码,或者如果没有找到结果(没有未过期的测验),则处理对用户的响应。
- 通过 AJAX 加载视频。如上所述在 PHP 端使用类似的查询,但由于它需要在加载后进行查找,因此刷新屏幕不会加载任何内容。
为了防止作弊,您可能还应该有另一个表来记录每次观看视频的时间,并带有时间戳和用户 ID。它可以通过同时查看谁在测试和查看来帮助检测作弊企图。
当然,始终要防止 SQL 注入,不要将用户输入直接放入 SQL 语句中。
要进行更详细的分析,您应该在问题中只发布相关的 PHP、HTML 和 SQL。