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 のセッション データ 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:"レジストリ";O:9:"JRegistry":1:{s:7:"\0\0\0data";O:8:"stdClass":0:{}}*s:4:"user";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:"登録日";N;s:13:"最終訪問日";N;s:10:"アクティベーション";N;s:6:"params";N;s:6:"グループ";a:1:{i:0;s:2:"13";}s:5:"ゲスト";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:"援助";i:0;}s:13:"session.token";s:32:"845b6df35056177aeb84ac26db333607"; }

4

1 に答える 1

0

JRegistry で渡されたデータはセッションに保存されません。

JRegistry は多次元配列をラップするクラスであり、「.」を使用して値にアクセスできますが、JRegistry 自体は JSession とは何の関係もありません。

データ配列のコンテナーとして JRegistry を使用します。

レジストリの設定を担当するコードはhttps://github.com/joomla/joomla-cms/blob/1d817d9762b0e4264d99f2257ce23dd68628df00/libraries/legacy/application/application.php#L1120です。

于 2013-11-10T22:35:14.390 に答える