Срок действия сессии CodeIgniter истекает в файле конфигурации - PullRequest
0 голосов
/ 10 января 2012

Я работаю над платформой CodeIgniter.

То, что я хочу, это установить время истечения сеанса сайта на 3 часа, т. Е. (3600 * 3 = 10800 секунд).

Но когда я установил $config['sess_expiration'] = 10800; в config.php , сессия истекает примерно через 30 минут бездействия и перенаправляется на страницу входа.

Почемуэто происходит?

Вот некоторые из моих настроек сеанса в конфигурации

  $config['sess_cookie_name']     = 'ci_session';
   $config['sess_expiration']      = 10800;
      $config['sess_encrypt_cookie']  = FALSE;
  $config['sess_use_database']    = TRUE;
  $config['sess_table_name']      = 'ci_sessions';
  $config['sess_match_ip']        = FALSE;
  $config['sess_match_useragent'] = TRUE;
  $config['sess_time_to_update']  = 300;

Ответы [ 3 ]

3 голосов
/ 10 января 2012

Убедитесь, что в вашей базе данных есть таблица ci_sessions.

CREATE TABLE IF NOT EXISTS  `ci_sessions` (
    session_id varchar(40) DEFAULT '0' NOT NULL,
    ip_address varchar(16) DEFAULT '0' NOT NULL,
    user_agent varchar(120) NOT NULL,
    last_activity int(10) unsigned DEFAULT 0 NOT NULL,
    user_data text NOT NULL,
    PRIMARY KEY (session_id),
    KEY `last_activity_idx` (`last_activity`)
);

РЕДАКТИРОВАТЬ: также убедитесь, что вы не используете $ _ SESSION против $ this-> session-> set_userdata ($ array);

Ссылка: http://codeigniter.com/user_guide/libraries/sessions.html

1 голос
/ 10 января 2012

Проверьте код следующим образом:

if($login)
{
   $this->session->sess_expire_on_close = TRUE;
}
else
{
   $this->session->sess_expiration = 60*60*3;
   $this->session->sess_expire_on_close = FALSE;
}

  $this->session->set_userdata('your_item'); 
0 голосов
/ 06 апреля 2018

Проверьте вашу конфигурацию session.gc_lifetime в php.ini.

По умолчанию это 1440 или 24 минуты.Это означает, что всякий раз, когда работает сборщик мусора PHP (он делает это с настроенной вероятностью при каждой загрузке страницы), любые сеансы старше 24 минут будут очищаться с помощью функции gc() в вашем драйвере сеанса CodeIgniter.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...