2012-02-23 2 views
2

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

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

'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 в БД

+0

В случае любопытства: почему же вы собираетесь делать? – zerkms

+0

Выдает ошибку? – yoda

+0

Я хочу сохранить $ this-> session-> set ('test', 'test'); в базе данных –

ответ

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; 
+0

exsistCREATE TABLE IF NOT EXISTS 'sessions' ( ' session_id' VARCHAR (24) NOT NULL, ' last_active' INT (10) NOT NULL без знака, ' contents' текст NOT NULL, ПЕРВИЧНЫЙ КЛЮЧ ('session_id'), KEY' last_active' ('last_active') ) ENGINE = MyISAM DEFAULT CHARSET = utf8; –

0

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

$this->session = Session::instance('database'); 
$this->session->set('test', 'test'); 
0

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

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

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

); 
+2

Это точно, это очень помогло мне. Спасибо. Документация Коханы неверна - и без проверки я вслепую назвал свой файл конфигурации шифрования 'encryption.php'. 'скопируйте конфигурацию по умолчанию/encryption.php' - http://kohanaframework.org/3.3/guide/kohana/security/encryption. Отличная инфраструктура, ужасная документация. – chrisboustead

Смежные вопросы