在浏览器上按回按钮时拒绝访问数据(视频)

时间:2012-11-24 03:39:41

标签: php mysql

我正在为一些学生做一个测验(php和mysql),测验基于他们必须观看的视频..

顺序是这个..
1)他们为每个用户输入一个唯一的网页 2)访问带有视频的页面供用户观看...
3)在页面底部有一个按钮“回答测验”
4)当他们点击按钮时,他们将被发送到带有测验的页面

这是问题发生的地方,我想阻止用户再次观看视频,但是当他们点击后退按钮时,再次有视频供他们观看

我在mysql数据库中阻止视频表中的视频,但是视频是缓存的,所以这不是防止用户在按下后退按钮时再次观看视频的方法... 。 任何关于如何实现这一点的想法??

任何帮助表示赞赏......

1 个答案:

答案 0 :(得分:0)

根据您的最新评论检查,我认为您有一张表expired_quizzes,其中包含至少三列,quiz_idquiz_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'],或者如果没有找到结果(没有未过期的测验),则处理对用户的响应。

  • 通过AJAX加载视频。如上所述,在PHP端使用类似的查询,但由于它需要在加载后进行查找,因此刷新屏幕不会加载任何内容。

为防止作弊,您可能还应该有另一个表,每次查看视频时都会记录,并带有时间戳和用户ID。通过查看谁在同一时间进行测试和查看,它可以帮助检测作弊行为。

当然,始终要防止SQL注入,不要将用户输入直接放入SQL语句中。

要进行更详细的分析,您应该在问题中发布相关的PHP,HTML和SQL。