CodeIgniter 3和会话

时间:2015-02-07 18:28:24

标签: php codeigniter session

我最近更新了CodeIgniter 3,遵循本指南: CI3: upgrade 3.0 from 2.2.1

我在application / config / config.php文件中设置了这个配置:

$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session_my_site';
$config['sess_expiration'] = 604800; // 1 week
$config['sess_save_path'] = NULL;
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;

这里有什么不对吗?我的会话在几个小时后被销毁......

4 个答案:

答案 0 :(得分:12)

在保存路径中,您需要设置位置文件夹。使用'files'作为会话驱动程序首选。如下所示,我已经设置了一个缓存来存储BASE PATH中设置文件夹的会话。确保您已自动加载会话并$config['encryption_key'] = ''添加密钥。

您可以设置数据库会话,但这也可以。确保文件夹权限0700

http://www.codeigniter.com/userguide3/search.html?q=session&check_keywords=yes&area=default

$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 1440;
$config['sess_save_path'] = BASEPATH . 'yourfoldername/cache/';
$config['sess_match_ip'] = TRUE;
$config['sess_time_to_update'] = 300;

一旦完成,那么你应该可以做类似的事情。

$this->load->library('session');
$data_session_set = array('logged' => 1, 'username' => $this->input->post('username'), 'user_id' => $this->user_auth->get_id()); 
$this->session->set_userdata($data_session_set);

答案 1 :(得分:6)

在application / config / config.php中设置此值:

$config['sess_save_path'] = sys_get_temp_dir();

答案 2 :(得分:0)

我使用此代码工作。

    if (version_compare(PHP_VERSION, '5.4.0', '<')) {
        if(session_id() == '') session_start();
    } else  {
       if (session_status() == PHP_SESSION_NONE) session_start();
    }

答案 3 :(得分:0)

我使用了2个不同的值并且它们的工作方式不同,这取决于Centos的版本:

对于Centos 6.X我用过:

在application / config / config.php中设置此值:

$ config ['sess_save_path'] = NULL;

对于Centos 7.X我用过:

$ config ['sess_save_path'] = sys_get_temp_dir();

如果您将应用从一个服务器版本移动到另一个服务器版本而不编辑此值,它将无效。