0

我正在使用 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,
    ),
);
4

1 回答 1

0

如果您将默认设置为“数据库”,Kohana 3.3 不应创建“本机会话”cookie。它确实保存了带有会话 ID 的会话 cookie。如果仍在创建其他 cookie,则可能出现其他问题。

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

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

本国的:

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

曲奇饼:

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

数据库:

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

我希望这可以帮助你。

于 2013-12-19T08:22:45.240 回答