我正在为一所教育机构写一个在线考试网站。可以为每个评估设置时间限制,并且一旦用户开始检查,就会在服务器上创建新的时间戳。问题是我们的学校电脑经常上锁,学生被迫重新开课,失去了考试时间。
我发现我可以将计时器存储为cookie,但这很容易受到影响。有什么建议?感谢。
答案 0 :(得分:1)
您可以将时间戳存储在链接到其用户的数据库中(如果他们正在进行考试,我会假设他们有登录名)并且每隔几秒执行一次ajax调用以检查他们是否仍然在线。
在此ajax检查中,您可以使用新的时间戳更新数据库,该时间戳指示它们上次联机的时间,因此如果计算机锁定并且必须重新启动,则可以确定丢失了多少时间。
答案 1 :(得分:0)
您可以生成唯一的哈希值,将其存储在cookie中,如
$cookie = md5( $student_name . $test_start_timestamp . $computer_ip );
并将所有需要的信息存储在数据库中,如:
INSERT INTO examination
SET student_hash = '$cookie',
test_start = '$test_start_timestamp',
computer_ip = '$computer_ip'
以后(如果重新启动计算机),您可以从数据库中获取所有信息:
SELECT * FROM examination
WHERE student_hash = '$cookie'
这样学生将无法更改时间戳
答案 2 :(得分:0)
虽然我意识到这有时可能很困难但是对你的困境唯一真正可靠的解决方案是可靠的网络。
但是缺乏确认客户状态的另一种通信媒体或途径呢?您能否确认域控制器可以在LAN上看到客户端?如果PC存在但Web客户端不存在则更可能是用户操作情况。是什么东西(域控制器,其他网络位置?)注意到客户端从网络中出现或消失?
任何方法都会以某种方式滥用。我认为唯一真正的保证将来自人工监测频率和用户重启的情况。