Сессия не содержит пользовательских данных - PullRequest
0 голосов
/ 02 января 2012

Я новичок в CodeIgniter и начал использовать библиотеку сессий.

Я автоматически загрузил библиотеку сеансов и пытался сохранить текущий идентификатор_пользователя в массиве пользовательских данных сеанса. Но информация исчезает, когда я пытаюсь прочитать ее на другой странице.

Нативные сессии PHP работают нормально (проверено), поэтому должно быть что-то из CI.

Я запрограммировал простую тестовую страницу, где я тестирую следующее:

  • Установка пользовательских данных сеанса.
  • На тестовой странице правильно отображаются данные пользователя.
  • Раскомментируйте строки данных установленного сеанса в коде контроллера и перезагрузите страницу.
  • На тестовой странице не отображаются данные пользователя.

Код контроллера:

class Welcome extends CI_Controller {

   public function index(){ 
        $data = null;

        $data['test'] = "Yeeeeh!!";
        $this->session->set_userdata($data);

        $this->load->view('welcome_message', $data);
    }
}

код вида:

<?php
    echo $this->session->userdata('test');
?>

Ответы [ 2 ]

0 голосов
/ 02 января 2012

Сеансы CI - это куки, а не сессии PHP.Вызов сеансов в представлении работает (IIRC), но, поскольку ваше представление загружается в том же запросе, сеанс создан, он не будет установлен.

Вам нужно вызвать его по другому запросу (т.е. другому контроллеру), или установить сеанс где-то еще (в другом контроллере, через AJAX также может работать), или использовать вместо него собственный массив PHP $ _SESSION.

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

public function index(){ 
        $data = null;

        $data['test'] = "Yeeeeh!!";
        $this->session->set_userdata($data);

        $this->load->view('welcome_message', $data);
    }

в поле зрения:

<?php
  echo $test;
?>
0 голосов
/ 02 января 2012

Почему представление отображает session_id, а не переменную "test", которую вы создали?

Вы тестировали

<?php
echo $this->session->userdata('test');

?>

в файле просмотра?

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