2015-05-06 19:56
浏览 60

如何在codeigniter 3数据库中设置会话?

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.

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • dpkt17803
    dpkt17803 2015-05-06 21:21

    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.

    点赞 评论
  • douni1396
    douni1396 2015-05-06 20:03

    If you added the "first line" (i.e. sess_table_name) to make it work, that is because your sess_driver value is set to database. Take a look at the list of supported drivers and you will see that for file based sessions, it will default to that. In other words, if you remove these lines, it should work:

    $config['sess_table_name']          = 'ci_sessions';
    $config['sess_driver']              = 'database';
    点赞 评论
  • doudi1978
    doudi1978 2015-05-06 20:50

    Remove that added line and set:

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

    Rest of code should be ok. Link to docs.

    点赞 评论
  • douci2022
    douci2022 2016-10-02 22:00

    Try this :

    $config['sess_save_path'] = sys_get_temp_dir();
    点赞 评论