web-dev-qa-db-fra.com

Comment puis-je définir une session dans la base de données Codeigniter 3?

J'utilise la nouvelle version (3.0.0). de CodeIgniter et j'ai un nouveau problème, mes sessions ne fonctionnent pas. Je veux dire, le code dans le contrôleur est correct car il n'y a pas d'erreur, mais lorsque j'essaie d'imprimer une variable PHP dans une vue, rien n'est visible.

J'ai vérifié ma table dans le serveur MySQL, et rien, je ne sais pas quel est le problème. Je mets mon code de config.php. (Je ne comprends pas beaucoup de choses dans cette nouvelle version)

$config['sess_table_name']              = 'ci_sessions';
$config['sess_driver']              = 'database';
$config['sess_cookie_name']             = 'ci_session';
$config['sess_expiration']          = 7200;
$config['sess_save_path']               = NULL;
$config['sess_match_ip']                = FALSE;
$config['sess_time_to_update']      = 300;
$config['sess_regenerate_destroy']  = FALSE;

Je dois ajouter la première ligne pour que "make" sessions fonctionne, je ne sais pas si cette configuration est correcte pour créer des sessions dans une base de données.

Si quelqu'un a le même problème, aidez-moi s'il vous plaît :(. Ma classe de session n'a pas été modifiée.

Tout d'abord Table de session CI3 et la structure de table de session CI2 ( L'enregistrement des données de session dans une base de données ) est différente

Nouvelle table de session structure

 CREATE TABLE IF NOT EXISTS `ci_sessions` (
    `id` varchar(40) NOT NULL,
    `ip_address` varchar(45) NOT NULL,
    `timestamp` int(10) unsigned DEFAULT 0 NOT NULL,
    `data` blob NOT NULL,
    PRIMARY KEY (id),
    KEY `ci_sessions_timestamp` (`timestamp`)
);

Deuxièmement, ils supportent les anciennes variables de configuration avec la nouvelle configuration mais il vaut mieux utiliser la nouvelle configuration

$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_sessions';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = 'ci_sessions';//its your table name name
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;

Voir plus de détails sur leur docs

Peu de nouvelles fonctionnalités disponibles pour la bibliothèque de sessions.

Remember N'oubliez pas de le charger via autoload.php ou de charger $this->load->library('session'); avant de l'utiliser.

29
Shaiful Islam

Si vous avez ajouté la "première ligne" (c'est-à-dire sess_table_name) pour que cela fonctionne, c'est que votre valeur sess_driver est définie sur database. Jetez un coup d’œil à la liste des pilotes pris en charge et vous verrez que, pour les sessions basées sur des fichiers, il utilisera cette valeur par défaut. En d'autres termes, si vous supprimez ces lignes, cela devrait fonctionner:

$config['sess_table_name']          = 'ci_sessions';
$config['sess_driver']              = 'database';
0
Jeremy Harris

Supprimez cette ligne ajoutée et définissez:

$config['sess_save_path'] = 'ci_sessions';

Le reste du code devrait être ok . Lien vers docs .

0
Tpojka