在PHP中进行在线测验类型的脚本。用户需要在45分钟内参加50个问题。
在此之后,它应关闭页面或将答案提交到下一页。
最好使用Cookie或会话。我怎样才能做到这一点。
是会话概念的新手,所以你可以建议合适的代码。
等待最早的回复
答案 0 :(得分:2)
我认为,因为这是一个小小的问题,你会计算点数,记录排名等等。所以你的用户最终会试图作弊。
因此,我建议只有服务器端的会话。$_SESSION
是一个数组,如$_GET
和$_POST
,对于使用您网站的每个用户都是唯一的。您可以随意放置和检索任何内容。
唯一的客户端是一个名为PHPSESSID的特殊cookie,它是访问者的id,由PHP用来检索他的$_SESSION
数组。
只有你需要做的就是在任何说明之前用session_start();
开始每一页(除非你使用像ob_start()
这样的缓冲)
答案 1 :(得分:2)
Cookie和会话之间的主要区别在于存储数据的位置。
使用Cookie,您可以将数据发送到浏览器,之后每次请求时,浏览器都会一直向您发送数据。
使用会话,您将数据存储在内存中,然后只设置一个具有ID的cookie,以识别存储数据的服务器内存中的空间块。
关键的区别在于,当数据存储在cookie中时:
当数据存储在会话中时:
我想说这取决于规模。对于很多问题,这些cookie会变得很重,并且每个请求都会非常大。如果您的测验是在分布在多个前端Web服务器上的环境中运行的,则会话可能是不可能的。
我怀疑决定因素是测验的完整性。如果用户无法更改数据(例如先前的答案,运行得分或测验开始的时间戳)至关重要,那么您需要将数据存储在其范围之外,这意味着使用会话。