Codeigniter Session Данные недоступны на других страницах после входа в систему

Итак, я создал страницу входа в систему, которая проверяет учетные данные пользователя, а затем устанавливает данные сеанса Codeigniter «email» и «is_logged_in» и несколько других элементов. На первой странице после входа данные доступны. После этой страницы я больше не могу получить доступ к данным сеанса. На самом деле, если я попробую перезагрузить эту первую страницу, данные сеанса исчезнут.

Я попытался хранить его в базе данных, сохраняя его незашифрованным (плохая идея, которую я знаю, но это было для устранения неполадок) и хранения ее зашифровано. Я загрузил сессионную библиотеку в config.php.

Вот пример кода, который я использую для установки данных сеанса:

$data = array( 'email' => $this->input->post('username'), 'is_logged_in' => true ); $this->session->set_userdata($data); 

И чтобы получить его, я использую:

 $this->session->userdata('email'); 

Или

 $this->session->userdata('is_logged_in'); 

Я много работал с PHP и куки-файлами и сессиями раньше, но это мой первый проект с Codeigniter, и я недоумеваю.

Может ли это иметь какое-то отношение к проблемам с каталогом? У меня есть страница входа и процесс, контролируемый контроллером «входа», а затем перенаправляется на контроллер «сайта».

Спасибо за вашу помощь, и, пожалуйста, дайте мне знать, если мне нужно что-то разъяснить.

Related of "Codeigniter Session Данные недоступны на других страницах после входа в систему"

Ваш код выглядит отлично. У меня было много проблем с библиотекой сессий Codeigniter, включая что-то похожее на то, что вы упомянули.

Рассмотрите возможность просмотра библиотеки Native Session для решения проблемы.

Просто чтобы кто-либо еще пытался использовать сеансы CI, есть что попробовать:

Я искал решение для решения одной и той же проблемы, и после многих тупиков я повторно исследовал свой config.php .

В этом я заметил, что $config['cookie_domain'] установлен неправильно. Установив это (и установив my cookie_prefix в '' ), сеансы теперь работают правильно.

Поскольку файл cookie должен быть установлен в ваш домен, чтобы его можно было правильно потянуть, он просто не нашел ссылку на cookie для моей сессии и каждый раз создавал новую.

(Настройка сеансов базы данных очень помогла вам разобраться с этим.)

Если кто-нибудь столкнется с этой проблемой, перейдите в config / config.php и убедитесь, что для параметра $config['sess_use_database'] установлено значение TRUE. Это сохранит все данные сеанса в вашей базе данных – что сработало для меня.

Если у вас нет таблицы с именем «сеансы», запустите эту команду SQL:

 CREATE TABLE `sessions` ( `session_id` VARCHAR( 40 ) NOT NULL DEFAULT '0', `ip_address` VARCHAR( 16 ) NOT NULL DEFAULT '0', `user_agent` VARCHAR( 120 ) DEFAULT NULL , `last_activity` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0', `user_data` TEXT NOT NULL , PRIMARY KEY ( `session_id` ) , KEY `last_activity_idx` ( `last_activity` ) ) ENGINE = MYISAM DEFAULT CHARSET = utf8; 

Im также новый для воспламенителя кода. Юз дать идею. У вас есть session_start () в вашем контроллере? вот пример:

класс Cuser расширяет контроллер {

 function Cuser() { parent::Controller(); session_start(); $this->load->helper('url'); } 

}

возможно, я ошибаюсь … но вы можете попробовать … 🙂

Ум, чтобы проверить ваше имя файла cookie. В нем нет точек.

Плохое печенье: .domain.com

Хорошее cookie: domaincom

Почему вы не используете ion auth для обеспечения безопасности и для данных сеанса … Я всегда использую это, когда хочу создать программное обеспечение с логином. Также вам нужно создать таблицу в своем db с именем session. И перейдите в файлы конфигурации и базы данных в папке Config и поставьте true для сеанса, где он хочет для базы данных. Вы не хорошо прочитали документацию