Kohana 3.2 сохранить сеанс в базе данных - PullRequest
2 голосов
/ 23 февраля 2012

Пожалуйста, помогите мне понять, почему сеансы не записываются в базу данных?

Конфигурация сеанса

'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');

Тогда яперезагрузите страницу, и я не вижу новую строку в таблице sessions в БД

Ответы [ 4 ]

2 голосов
/ 27 сентября 2013

Если вы используете шифрование, вам необходимо убедиться, что вы установили ключ шифрования в файле конфигурации 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'
   ),

); 
0 голосов
/ 29 февраля 2012

Возможно ваша настройка Session::$default = 'database'; перезаписывается на Session::instance(). Попробуйте это:

$this->session = Session::instance('database');
$this->session->set('test', 'test');
0 голосов
/ 22 марта 2012

Проверьте ваши журналы на наличие ошибок.

Я вижу, что вы установили данные сеанса для шифрования.Убедитесь, что вы определили «ключ» в файле конфигурации шифрования.Вы также можете попробовать установить для параметра шифрования сеанса базы данных значение false, чтобы проверить, не является ли это причиной вашей ошибки.

0 голосов
/ 23 февраля 2012

Я не знаю, сделали ли вы это, но вам нужно создать таблицу, используя этот точный запрос:

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;
...