1

如果我在 page.ctp 中执行 print_r($_SESSION),我会得到:

Array
(
    [Config] => Array
        (
            [userAgent] => b3346028c15f82ac5d4b25c4f50d8718
            [time] => 1281034201
            [timeout] => 100
        )

    [manualLogout] => 1
    [Message] => Array
        (
        )

    [Auth] => Array
        (
            [redirect] => /events/add/controller:events
        )

    [facebookSynced] => 1
)

我使用 $this->Session-write() 在我的控制器中设置的 var facebookSynced - 并且它在会话中正如预期的那样。但是当我从 page.ctp 执行 pr($this->Session) 或 pr($session) 时,我得到:

SessionHelper Object
(
    [helpers] => Array
        (
        )

    [__active] => 1
    [valid] => 
    [error] => 
    [_userAgent] => b3346028c15f82ac5d4b25c4f50d8718
    [path] => /
    [lastError] => 
    [security] => medium
    [time] => 1281016202
    [sessionTime] => 1281034202
    [watchKeys] => Array
        (
        )

    [id] => 
    [host] => 
    [timeout] => 
    [base] => /Eclipse/Calc_1.3.2/trunk
    [webroot] => /Eclipse/Calc_1.3.2/trunk/
    [here] => /Eclipse/Calc_1.3.2/trunk/users/login
    [params] => Array
        (
            [controller] => users
            [action] => login
            [named] => Array
                (
                )

            [pass] => Array
                (
                )

            [plugin] => 
            [form] => Array
                (
                )

            [url] => Array
                (
                    [url] => users/login
                )

            [models] => Array
                (
                    [0] => User
                )

        )

    [action] => login
    [data] => 
    [theme] => 
    [plugin] => 
)

如何使用其中的 facebookSynced var 访问我的会话,这两个“会话”之间有什么区别。额外信息:在 core.php 我有:

Configure::write('Session.save', 'php');
Configure::write('Session.cookie', 'CAKEPHP');
Configure::write('Session.save', 'custom_sesh');
Configure::write('Session.timeout', '180');
Configure::write('Session.checkAgent', true);
Configure::write('Session.start', true);

custom_sesh 的内容只有一行:

ini_set('session.cookie_lifetime', 0);
4

3 回答 3

3

print_r($_SESSION) 的第一个结果是实际会话变量的值列表。

pr($this->Session) 的第二个结果显示了 CakePHP 的 Session 助手对象的内容。

两者是完全不同的东西。如果您想访问会话变量facebookSynced的值,您可能需要执行以下操作:

$foo = $_SESSION["facebookSynced"];
于 2010-08-05T14:28:18.227 回答
2

在您看来,您应该使用 Session 助手。

echo $session->read('Key.value');

你在控制器中写过类似的东西,

$this->Session->write('Key.value','example');
于 2010-08-05T14:28:47.627 回答
0

如果你正在使用

$this->Session->write('facebookSynced',true);

在您的控制器中,

只需使用

$foo = $this->Session->read('facebookSynced'); 

在视图中。

就如此容易 !:)

于 2011-04-26T10:59:16.943 回答