我正在修改一个joomla组件(jQuarks),以便从模块中实现想要的行为,以便进行在线测验/考试。 基本上,我希望能够使用会话变量来存储以下项目:
为了实现这个目的,我正在使用JFactory :: getSession(),但我有些疑惑。
第一个是:会话变量是存储此数据的最佳方式吗?如果没有,我如何或在哪里存储此信息? 每当用户点击导航到下一页时,我想存储给出的答案并将其添加到先前给出的答案中。这不会让我不得不不断地破坏和重建会话吗? 如果用户需要刷新页面,则当前组件行为是创建新的quizSession,从而重置所有内容并且不存储任何内容。 Joomla Session变量是否足以强制我想要的行为? (恢复用户启动的quizSession)
如果这是错误的方法我应该使用什么?我不是真的精通Joomla开发并且至少在3年内没有触及PHP ......
最好的问候
答案 0 :(得分:2)
我建议你不要使用JSession,但尝试用户状态。它在Joomla中广泛用于存储pagiantion,跨页面过滤变量。您可以找到有关它的信息here。
我唯一担心的是页面刷新。状态不会在刷新时重置,我怀疑是否可以使用Joomla API ...
还有一件事 - 您不需要在会话中存储UserId,因为您可以随时使用这段简单的代码检索它:
$userId = JFactory::getUser()->id;
更多信息here。
答案 1 :(得分:1)
SESSION
用于临时数据。如果您不怕丢失数据,可以使用它来存储数据。
如果要将某些数据与永久使用#__user_profiles table
关联起来,那么就像键值存储一样。
如果您想对其进行一些分析,则必须使用 DB 结构。