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.
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';
Supprimez cette ligne ajoutée et définissez:
$config['sess_save_path'] = 'ci_sessions';
Le reste du code devrait être ok . Lien vers docs .