2 votes

Kohana 3.2 sauvegarde la session dans la base de données

Aidez-moi à comprendre pourquoi les sessions n'écrivent pas dans la base de données.

configuration de la session

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

Je le fais :

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

Je recharge ensuite la page et je ne vois pas de nouvelle ligne dans le tableau. sessions dans la DB

2voto

J.Money Points 1997

Si vous utilisez le cryptage, vous devez vous assurer que vous avez défini une clé de cryptage dans le fichier encrypt.php fichier de configuration.

'database'      => array(
    'name'      => 'session_database',
    'encrypted' => TRUE,               /* using encryption requires a key */
)

/application/configuration/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'
   ),

);

0voto

this.lau_ Points 23290

Je ne sais pas si vous l'avez fait, mais vous devez créer la table en utilisant cette requête exacte :

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;

0voto

bibimij Points 117

Peut-être que votre cadre Session::$default = 'database'; écrase par Session::instance() . Essayez ceci :

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

0voto

Vérifiez si des erreurs se sont produites dans vos journaux.

Je vois que vous avez configuré les données de la session pour qu'elles soient cryptées. Assurez-vous d'avoir défini une "clé" dans le fichier de configuration du cryptage. Vous pouvez également essayer de définir le paramètre de cryptage de la session de la base de données sur false pour voir si cela provoque votre erreur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X