2012-02-23 15 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'); 

は、その後、私はページをリロードし、私はDB

+0

:なぜあなたはそうするつもりですか? – zerkms

+0

エラーが出ますか? – yoda

+0

私は$ this-> session-> set( 'test'、 'test')を保存します。データベース –

答えて

0

Iドンでテーブルsessionsに新しい行が表示されませんあなたがそれをしたかどうかは分かりますが、この正確なクエリを使用してテーブルを作成する必要があります:

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テーブルが存在しない場合は 'sessions'( ' session_id' varchar(24)NOT NULL、 'last_active' int(10)unsigned NOT NULL、 ' contents'テキストはNULLではなく、 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

これはまさに正しいことです。ありがとうございました。 Kohanaのドキュメンテーションは間違っています。私は暗黙のうちに私の暗号化設定ファイル 'encryption.php'に名前を付けました。 'デフォルトのconfig/encryption.phpをコピーする ' - http://kohanaframework.org/3.3/guide/kohana/security/encryption素晴らしいフレームワーク、恐ろしいドキュメント。 – chrisboustead

関連する問題