在php会话中存储用户进度

时间:2012-02-08 17:23:51

标签: php session

我正在创建一个包含不同级别测验的网站,我想在他/她注销时存储用户进度..他应该能够从他注销的级别继续。我该如何使用数据库登录时存储当前用户级别并在登录时检索级别?

请建议一些在线帮助或教程来完成这项工作。感谢

4 个答案:

答案 0 :(得分:2)

Cookies是个坏主意(如果他/她在学校/工作中进行测试并回家,那么cookie就不再是实际的了。)

会话ID存储在cookie中(大部分时间),会话变量对于每个连接应该是唯一的,所以再次不是一个好的选择。

当然,Cookie和会话ID可以手动删除(隐藏尝试结果不佳或消除类伙伴进度)。

所以唯一可行的选择是使用数据库...有很多关于此的教程,请在评论中提出任何问题,我将编辑答案。

这是关于外键的articleone in mysql documentation似乎有点难以阅读,但你应该学习如何阅读这些。

这里有关于创建民意调查和投票系统的tutorials,特别是this one seem好(姓名,尚未阅读)。

答案 1 :(得分:0)

是的,它们很好,但一定要存储一些级别代码,而不是数字。

一些教程:tizag.comw3schoolsPHP.net documentation

答案 2 :(得分:0)

如果您需要用户的测验结果的持续历史记录,您将需要一个数据库。 Cookie适用于存储特定测验的进度,但不是存储用户历史记录的可靠方法。此外,使用cookie,用户将无法在一台设备上启动测验,然后继续使用第二台设备。对于多设备进度跟踪数据库会话将是优越的。

答案 3 :(得分:0)

在(单个)会话期间存储数据时,Cookie非常有用,但据我所知,您希望能够在新会话中恢复旧会话的先前进度。因此,您需要将进度存储在其他位置,例如在数据库中。

如果仅在用户明确注销时保存会话数据,则可以在调用logout()方法时存储会话数据,然后在login()上加载它。但这意味着,例如,当会话超时时,当前会话中的数据可能会丢失(!),因此可能不合适。

另一种解决方案可能是使用“保存点”,测验中的某些里程碑,将数据存储在更永久的存储中(例如上述数据库)。