我正在使用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,
),
);
答案 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:会话数据)
数据库:
会话数据保存在数据库中。
我希望这会对你有所帮助。