Joomla存储会话数据

时间:2013-04-03 11:09:26

标签: php joomla joomla2.5 joomla-extensions

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

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

为了实现这个目的,我正在使用JFactory :: getSession(),但我有些疑惑。

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

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

最好的问候

2 个答案:

答案 0 :(得分:2)

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

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

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

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

更多信息here

答案 1 :(得分:1)

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

如果要将某些数据与永久使用#__user_profiles table关联起来,那么就像键值存储一样。

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