codeIgniter: потеря данных сеанса после входа в систему

В Codeigniter после входа в систему я сохраняю все данные в сеансе и перенаправляю к контроллеру форума. Но я теряю все значения в контроллере форума.

Когда я пытаюсь уменьшить некоторые значения из сеанса, он работает отлично.

Теперь мой вопрос: почему это происходит? Есть ли верхний предел значений для хранения в сеансе в CodeIgniter?

Я даже пытаюсь найти

redirect('forum', 'refresh'); 

Но это не работает. И мой проект разработан наполовину, поэтому я не могу использовать «собственный класс сеанса PHP» для кода.

Related of "codeIgniter: потеря данных сеанса после входа в систему"

По умолчанию CodeIgniter хранит данные сеанса в файле cookie, который имеет верхний предел размером 4 КБ. Если вы пытаетесь сохранить более 4 Кбайт данных в сеансе, вы начнете сталкиваться с проблемами.

Самое легкое решение, вероятно, для хранения сведений о сеансе в БД. В документации сеанса CodeIgniter подробно описывается процесс хранения сеанса в БД – это вопрос настройки таблицы и изменения пары параметров конфигурации.

Сеанс CI хранит все в cookie с дополнительным шифрованием. Поэтому, видимо, можно достичь этого предела. Это если вы храните что-то вроде 2K байтов; если это просто информация для входа, это не должно быть проблемой. Если вы используете что-то такое большое, ну, я думаю, вы не должны.

Во всяком случае, я не думаю, что это проблема, поскольку у меня была аналогичная проблема (я не помню точной причины этого). Решение, которое я нашел, состояло в том, чтобы использовать класс Native PHP Session и добавил к нему один метод: all_userdata или что бы он ни назывался. При этом все работало так же, как с обычной сессией (ничего не нужно менять).

Объяснение : По умолчанию CodeIgniter хранит данные сеанса в файле cookie, который имеет верхний предел размером 2 КБ-4 КБ в зависимости от браузера. Если вы пытаетесь сохранить более 4 Кбайт данных в сеансе, вы начнете сталкиваться с проблемами.

Самое простое решение – сохранить данные сеанса в БД. Документация сеанса CodeIgniter подробно описывает процесс хранения сеанса в DB.it – ​​вопрос настройки таблицы и изменение пары параметров конфигурации. Ниже приведены изменения, которые вам нужно сделать –

Обновить ниже переменную в файле конфигурации (application / config / config.php):

 $config['sess_use_database'] = TRUE; $config['sess_table_name'] = 'ci_sessions'; 

Создал новую таблицу для хранения сеансов,

 CREATE TABLE IF NOT EXISTS `ci_sessions` ( session_id varchar(40) DEFAULT '0' NOT NULL, ip_address varchar(45) 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`) ); 

Для получения дополнительной информации: http://goo.gl/YPllj0

В моем случае после некоторых тестов (с https и http в localhost) ошибка возникает из-за этой проблемы и не имеет надлежащего набора $ config ['cookie_secure'], поэтому вы можете попробовать изменить в config.php:

 $config['cookie_secure'] = FALSE; // if is not under https, or true if you use https 

Ура!