2012-02-08 56 views
1

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

请建议一些在线帮助或教程来完成此操作。谢谢

回答

0

是的,他们很好,但一定要只存储一些关卡代码,而不是数字。

一些教程:tizag.comw3schoolsPHP.net documentation

+0

我不同意你的答案。请阅读我的答案,并告诉我你的反驳论点。 (我不是故意冒犯,我只是认为你忘了考虑这些具体情况) – Vyktor 2012-02-08 17:30:31

+0

你说得对,但我认为,在不需要支持更多计算机的情况下(而且大多数情况下不是)也是不好的结果,我的工作很好。但是,如果它不仅仅是一个“尝试直到完成”类型的测验,就像猜测答案一样,但是从四个/等等中选择一个,你是对的。 – axiomer 2012-02-08 17:31:29

+0

不幸的是,依赖于该用户不会欺骗(甚至删除它们可能被认为是欺骗)它们。他会的。 :) 我会。 – Vyktor 2012-02-08 17:38:38

2

Cookies是馊主意(如果他/她是做在学校/工作测试,并得到家庭,饼干不再是实际的)。

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

当然,Cookie和会话ID可以手动擦除(以隐藏尝试结果不佳或清除班级队友进度)。

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

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

Here're tutorials关于创建民意调查和投票系统,尤其是this one seem好(姓名,没有读过它)。

+0

由于该网站将需要多个用户从多台计算机登录,因此在数据库中存储进度比Cookie更可行。您是否可以建议任何在线教程将会话存储在数据库中?感谢您的帮助 – prit2192 2012-02-08 17:47:23

+0

@ prit2192您不必将会话存储到数据库中,您必须在其中存储带有用户标识的部分结果。也许某些表格设计的正确使用外键和轮询示例会有所帮助。把你的时间,浏览槽提供的链接,并提出更多的问题:) – Vyktor 2012-02-08 18:16:00

0

如果您需要一个持续的测验结果历史记录,您需要一个数据库。 Cookie可以存储特定测验的进度,但不是存储用户历史记录的可靠方法。此外,使用Cookie,用户将无法在一台设备上开始测验,然后继续在另一台设备上进行测验。对于多设备进度跟踪,数据库会话将更加优秀。

+0

可以帮助我良好的数据库会话教程,我可以参考? – prit2192 2012-02-08 17:48:45

+0

以下是使用数据库存储会话的好链接:http://shiflett.org/articles/storing-sessions-in-a-database – davidethell 2012-02-08 19:53:21

+0

但是,这本身并不能解决您的问题。您需要了解如何使用数据库来存储用户信息。从这里开始:http://www.w3schools.com/php/php_mysql_intro.asp – davidethell 2012-02-08 19:59:27

0

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

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

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