1

以下是我从 joomla 会话表中获得的会话数据。现在我的问题是我完全迷失在 Jregistry 和 Jsession 之间。

我通过阅读 joomla 平台的代码发现了什么

Jregistry is not using session variable at all in set() and get().

我现在的问题是,存储在 Jregistry 中的数据是在会话中传递的,为什么?任何人都可以将我路由到负责将注册表传递给会话的代码段。

在 Japplication setUserState 中找到的一个函数正在使用一些会话变量注册表它是什么?

public function setUserState($key, $value)
{
    $session = JFactory::getSession();
    $registry = $session->get('registry');

    if (!is_null($registry))
    {
        return $registry->set($key, $value);
    }

    return null;
}

我为访客用户 i 找到的会话数据是整数,s 是字符串

__default|a:8: {s:15:"session.counter";i:1;s:19:"session.timer.start";i:1384090452;s:18:"session.timer.last";i :1384090452;s:17:"session.timer.now";i:1384090452;s:22:"session.client.browser";s:107:"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 ( KHTML, 像 Gecko) Chrome/17.0.963.33 Safari/535.11"; *s:8:"registry";O:9:"JRegistry":1:{s:7:"\0\0\0data";O:8:"stdClass":0:{}}*s:4:"用户";O:5:"JUser":24:{s:9:"\0\0\0isRoot";N;s:2:"id";i:0;s:4 :"姓名";N;s:8:"用户名";N;s:5:"电子邮件";N;s:8:"密码";N;s:14:"password_clear";s:0:" ";s:5:"block";N;s:9:"sendEmail";i:0;s:12:"registerDate";N;s:13:"lastvisitDate";N;s:10:"激活";N;s:6:"params";N;s:6:"groups";a:1:{i:0;s:2:"13";}s:5:"guest";i: 1;s:13:"lastResetTime";N;s:10:"resetCount";N;s:10:"\0\0\0_params";O:9:"JRegistry":1:{s:7: "\0\0\0data";O:8:"stdClass":0:{}}s:14:"\0\0\0_authGroups";N;s:14:"\0\0\0_authLevels"; a:3:{i:0;i:1;i:1;i:1;i:2;i:5;}s:15:"\0\0\0_authActions";N;s:12:" \0\0\0_errorMsg";N;s:10:"\0\0\0_errors";a:0:{}s:3:"aid";i:0;}s:13:"session.token";s:32:"845b6df35056177aeb84ac26db333607"; }

4

1 回答 1

0

在 JRegistry 中传递的数据不存储在 session 中。

JRegistry 是一个包装多维数组的类,并允许使用“.”访问值,但 JRegistry 本身与 JSession 无关。

他们使用 JRegistry 作为数据数组的容器。

负责设置注册表的代码是:https ://github.com/joomla/joomla-cms/blob/1d817d9762b0e4264d99f2257ce23dd68628df00/libraries/legacy/application/application.php#L1120 。

于 2013-11-10T22:35:14.390 回答