#php #codeigniter #session
#php #codeigniter — инициализатор кода #сеанс #codeigniter
Вопрос:
Я загрузил класс сеанса в autoload.php , но когда я использую сеанс CodeIgniter, ничего не происходит.
Пример: я устанавливаю флэш-данные:
$this->session->set_flashdata('message', 'HELP!');
Когда я печатаю эту информацию, ничего не происходит!
Пример:
echo $this->session->flashdata('message');
В чем проблема с моим кодом?
ПРИМЕЧАНИЕ: у меня возникли проблемы с сеансом CodeIgniter в целом, проблема с set_flashdata и set_userdata.
Обновить:
Это была проблема с сервером, теперь она решена. Спасибо за все!
Комментарии:
1. Флэш-данные доступны только для СЛЕДУЮЩЕГО http-запроса. Вы делаете еще один запрос? Если да, то вы создаете только один?
2. Да, я делаю еще один запрос и только один.
3. Вы уверены, что выполняется только один запрос?
4. Да, у меня проблемы с сеансом CodeIgniter в целом. Проблема с set_flashdata и set_userdata.
5. Пожалуйста, отредактируйте свой вопрос в своем сеансе config.php вещи
Ответ №1:
флэш-данные доступны вам только для следующего запроса сервера в рамках этого конкретного сеанса . означает, что если вы сделали другой запрос или поставили перенаправление после загрузки представления, то флэш-сообщение не появится. и кроме этого, не забудьте добавить ключ encryption_key в библиотеку сеансов автоматической загрузки файла конфигурации и не пытаться перенаправить на другую страницу после загрузки представления. надеюсь, это ответит на ваш вопрос
Комментарии:
1. Да, я делаю еще один запрос и только один. У меня проблемы с сеансом CodeIgniter в целом. Проблема с set_flashdata и set_userdata, я не забыл encryption_key .
2. можете ли вы поделиться кодом, чтобы я лучше понимал, как вы делаете запросы
3. Смотрите этот пример: if ($this-> ion_auth-> login($this-> input->post(‘identity’), $this->input->post(‘password’), $remember)) { $this-> session-> set_flashdata(‘message’, $this->ion_auth->сообщения()); перенаправление(‘/’, ‘обновить’); } else { $this->сессия-> set_flashdata(‘сообщение’, $this-> ion_auth-> ошибки()); перенаправление (‘авторизация / вход’,’обновить’); }
4. это должно быть доступно, я не понял, что это не работает
Ответ №2:
Ничего не происходит, потому что это:
$this->session->set_flashdata('message', 'HELP!');
Просто устанавливает «СПРАВКУ» в сеансовом «сообщении»;
$this->session->set_flashdata('error', 'WOOPS!');
Вам также необходимо установить некоторые условия в вашем представлении, чтобы прочитать сеанс и увидеть результат:
<?php
if($this->session->flashdata('message'))
{
?>
<div class="container" style="padding-top:80px;">
<div class="alert alert-info alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">amp;times;</span></button>
<?php echo $this->session->flashdata('message');?>
</div>
</div>
<?php
}elseif($this->session->flashdata('error')){
?>
<div class="container" style="padding-top:80px;">
<div class="alert alert-warning alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">amp;times;</span></button>
<?php echo $this->session->flashdata('error');?>
</div>
</div>
<?php
}
?>
Как вы можете видеть, здесь есть два примера: один для сообщения (успех) и один для ошибки (сбой)
Редактировать:
В качестве реакции на ваш комментарий я публикую это здесь, потому что в комментарии не будет читаться:
Как вы говорите, вы уже это сделали:
$autoload['libraries'] = array('database','session');
Вы также установили это в конфигурации?
$config['encryption_key'] = 'DCF564RT9JN761AZX56FR76Rd8hg6s12';
$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = 'ci_session';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;
Комментарии:
1. Это не моя проблема. Я знаю, как распечатать flashdata и проверить, установлен ли он. У меня проблема с сеансом codeigniter в целом, проблема с set_flashdata и set_userdata.
2. У меня есть редактирование в ответе. Я разместил там, потому что здесь будет невозможно прочитать. Это странная проблема.
3. Да, я уже выполнил эту настройку, и она не сработала
4. Хорошо, отлично. Есть ли у вас в базе данных таблица с именем
ci_session
?5. У меня есть, но это не проблема, сеанс codeigniter работает без базы данных
Ответ №3:
Загрузите последнюю версию Codeigniter (версия 3.1.6) с официального сайта Codeigniter и замените системную папку на свой проект Codeigniter, и он будет работать.