0

我正在修改一个 joomla 组件(jQuarks),以便从模块中实现所需的行为,以便进行在线测验/考试。基本上,我希望能够使用会话变量来存储以下项目:

  • 用户身份
  • QuizSessionID(不是 Joomla 会话本身,因为这是一个 jQarks“会话”)
  • 测验开始时间
  • 最后一个问题回答的页面(或 id,并不重要,但因为我使用的是页面,所以这是最好的选择)
  • 所有之前回答的问题(即问题 ID 和答案 ID)

为了实现这一点,我正在使用 JFactory::getSession() 但我有一些疑问。

第一个是:会话变量是存储这些数据的最佳方式吗?如果没有,我可以如何或在哪里存储此信息?每当用户单击导航到下一页时,我都想存储给出的答案并将其添加到先前给出的答案中。这不会让我不得不不断地破坏和重新创建会话吗?如果万一用户需要刷新页面,则当前组件的行为是创建一个新的 quizSession 从而重置所有内容并且不存储任何内容。Joomla Session 变量是否足以强制执行我想要的行为?(恢复用户启动的 quizSession)

如果这是错误的方法,我应该使用什么?我并不真正精通 Joomla 的开发,并且至少 3 年没有接触过 PHP ......

最好的祝福

4

2 回答 2

2

我建议你不要使用 JSession,而是尝试用户状态。它在 Joomla 中广泛用于存储分页,过滤跨页面的变量。您可以在此处找到有关它的信息。

我唯一担心的是页面刷新。刷新时不会重置状态,我怀疑是否可以使用 Joomla API...

还有一件事 - 您不需要在会话中存储 UserId,因为您可以随时使用这段简单的代码检索它:

$userId = JFactory::getUser()->id;

更多信息在这里

于 2013-04-03T11:41:15.320 回答
1

SESSION用于临时数据。如果您不怕丢失数据,您可以使用它来存储数据。

如果你要关联一些数据永久使用#__user_profiles table,比如键值存储。

如果您想对其进行一些分析,则必须使用您的数据库结构。

于 2013-04-03T11:43:35.767 回答