Search code examples
phpmysqlcodeignitersessioncodeigniter-3

How I can set a session in codeigniter 3 database?


I'm using the new version(3.0.0). of CodeIgniter and I have a new problem, my sessions doesn't work. I mean, the code in the controller is correct because there are not errors but, when I try to print a PHP variable in a view there is nothing.

I checked my table in the MySQL Server, and nothing, I don't now what is the problem. I put my code of config.php. (I don't understand a lot of things in this new 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;

I have to add the first line to "make" sessions works, I don't know if that configuration is correct to make sessions in a database.

If somebody has the same problem, help me please :( . My Session class has not been edited.


Solution

  • First of all CI3 session table and CI2 session table( Saving Session Data to a Database)structure is different

    New session table 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`)
    );
    

    Second They support old configuration variables with new configuration but it is better to use new 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;
    

    See more details at their docs

    Few new feature(function) available for session library.

    Remember Don't forget it to load via autoload.php or loading $this->load->library('session'); before use it.