Класс сеанса Codeigniter не работает

#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, и он будет работать.