即使使用数据库会话,Kohana是否始终使用本机会话?

时间:2013-12-18 15:41:39

标签: php session kohana kohana-3.3

我正在使用Kohana 3.3并在我的bootstrap.php中设置Session::$default = 'database';

会话确实会进入数据库,似乎工作正常。但是,浏览器仍然会获得“本机”会话cookie。它有“nsession”和“session”cookie。

Kohana 3.3是否总是使用本机会话,即使告诉默认为数据库会话?

此外,每个会话如何与php处理较低级别的会话有关,例如进入/ var / lib / php5的会话文件?

我的Kohana会话配置:

return array(
    'native' => array(
        'name' => 'nsession',
        'lifetime' => 604800,
    ),
    'cookie' => array(
        'name' => 'csession',
        'encrypted' => TRUE,
        'lifetime' => 604800,
    ),
    'database' => array(
        'name' => 'session',
        'encrypted' => FALSE,
        'lifetime' => 604800,
        'group' => 'default',
        'table' => 'sessions2',
        'columns' => array(
            'session_id'  => 'session_id',
            'last_active' => 'last_active',
            'contents'    => 'contents'
        ),
        'gc' => 500,
    ),
);

1 个答案:

答案 0 :(得分:0)

如果您将默认值设置为“数据库”,则不会使Kohana 3.3成为“本机会话”cookie。它会使用会话ID保存会话cookie。如果仍在创建其他cookie,可能还有其他错误。

我想到的两件事情session.auto_start在您的php.ini或您仍在某处使用“原生”会话驱动程序的地方都是正确的。

3内部的工作方式几乎相同。他们都使用php SessionHandlerinterface。 3个驱动程序之间的唯一区别是如何保存,检索和删除会话数据。

本机:

PHP将会话保存到磁盘上的某个位置。该位置在php.ini文件中指定。

的Cookie:

会话数据被保存到cookie中。因此,此实现实际上使用两个cookie来保存会话数据。 (1:会话ID,2:会话数据)

数据库:

会话数据保存在数据库中。

我希望这会对你有所帮助。