我正在为一些学生做一个测验(php和mysql),测验基于他们必须观看的视频..
顺序是这个..
1)他们为每个用户输入一个唯一的网页
2)访问带有视频的页面供用户观看...
3)在页面底部有一个按钮“回答测验”
4)当他们点击按钮时,他们将被发送到带有测验的页面
这是问题发生的地方,我想阻止用户再次观看视频,但是当他们点击后退按钮时,再次有视频供他们观看
我在mysql数据库中阻止视频表中的视频,但是视频是缓存的,所以这不是防止用户在按下后退按钮时再次观看视频的方法... 。 任何关于如何实现这一点的想法??
任何帮助表示赞赏......
答案 0 :(得分:0)
根据您的最新评论检查,我认为您有一张表expired_quizzes
,其中包含至少三列,quiz_id
,quiz_filename
和布尔is_active
。我也会将表格标准化为userid
,因此如果用户A查看并进行测验,用户B仍然可以看到该视频(尽管可以更轻松地与朋友作弊)。如果没有看到任何代码或结构,很难确切地知道发生了什么,但是尝试检查以下几个方面:
如果您根据搜索查询测验,并且网页使用变量$_GET
,那么无论何时访问该网页,它都会始终加载测验。所以考虑:
http//www.yourwebpage.com/?quizfilename=viewablequiz.mp4
根据您的PHP说明,它将始终加载viewablequiz.mp4
。有两个建议可以阻止它。
请勿加载$_GET['quizfilename']
。而是加载$_GET['quizid']
并使用其他搜索参数从查询中调用文件名,例如:
'SELECT * FROM expired_quizzes 在哪里quiz_id ='{$ _ GET ['quizid']}'和is_active = 1 限制1;'
然后,在PHP代码中返回row['filename']
,或者如果没有找到结果(没有未过期的测验),则处理对用户的响应。
为防止作弊,您可能还应该有另一个表,每次查看视频时都会记录,并带有时间戳和用户ID。通过查看谁在同一时间进行测试和查看,它可以帮助检测作弊行为。
当然,始终要防止SQL注入,不要将用户输入直接放入SQL语句中。
要进行更详细的分析,您应该在问题中发布相关的PHP,HTML和SQL。