请帮助我理解,为什么会话没有写入数据库?
会话配置
'database' => array(
'name' => 'session_database',
'encrypted' => TRUE,
'lifetime' => 43200,
'group' => 'default',
'table' => 'sessions',
'columns' => array(
'session_id' => 'session_id',
'last_active' => 'last_active',
'contents' => 'contents'
),
'gc' => 500,
),
我这样做:
Session::$default = 'database';
$this->session = Session::instance();
$this->session->set('test', 'test');
然后我重新加载页面,我在DB中的表sessions
中看不到新行
答案 0 :(得分:2)
如果您使用加密,则需要确保在encrypt.php
配置文件中设置了加密密钥。
'database' => array(
'name' => 'session_database',
'encrypted' => TRUE, /* using encryption requires a key */
)
/application/config/encrypt.php
<?php defined('SYSPATH') OR die('No direct script access.');
return array(
'default' => array(
/**
* The following options must be set:
*
* string key secret passphrase
* integer mode encryption mode, one of MCRYPT_MODE_*
* integer cipher encryption cipher, one of the Mcrpyt cipher constants
*/
'cipher' => MCRYPT_RIJNDAEL_128,
'mode' => MCRYPT_MODE_NOFB,
'key' => 'my_encryption_key'
),
);
答案 1 :(得分:0)
我不知道你是否这样做了,但你需要使用这个确切的查询来创建表:
CREATE TABLE `sessions` (
`session_id` VARCHAR(24) NOT NULL,
`last_active` INT UNSIGNED NOT NULL,
`contents` TEXT NOT NULL,
PRIMARY KEY (`session_id`),
INDEX (`last_active`)
) ENGINE = MYISAM;
答案 2 :(得分:0)
也许您的设置Session::$default = 'database';
会被Session::instance()
覆盖。
试试这个:
$this->session = Session::instance('database');
$this->session->set('test', 'test');
答案 3 :(得分:0)
检查日志是否有错误。
我看到您已将会话数据设置为要加密。确保在加密配置文件中定义了“密钥”。您还可以尝试将数据库会话的加密设置设置为false,以查看是否导致错误。