идентификатор сеанса cakephp пуст

#php #session #cakephp #cakephp-1.3

#php #сессия #cakephp #cakephp-1.3

Вопрос:

Идентификатор сеанса пуст, когда я делаю: pr($this->Session); я получаю :

 SessionComponent Object
(
    [__active] => 1
    [__bare] => 0
    [valid] => 1
    [error] => 
    [_userAgent] => 5343528de22b8a6d25e7fd391692c911
    [path] => /profiles
    [lastError] => 
    [security] => medium
    [time] => 800-452-3639
    [sessionTime] => 800-452-3639
    [cookieLifeTime] => 720000
    [watchKeys] => Array
        (
        )

    [id] => 
    [host] => xyz.org
    [timeout] => 
    [enabled] => 1
)
  

Как мне либо включить идентификатор сеанса, либо создать идентификатор сеанса?

Ответ №1:

Если вам действительно нужен идентификатор сеанса, вам нужно запустить сеанс. Попробуйте это в своем фильтре before:

 $this->Session->start();
$this->Session->id(session_id());
  

Затем, когда вы pr($this->Session->id()); увидите новый идентификатор сеанса.

Комментарии:

1. Спасибо за session_id() . Я нигде не смог найти это задокументировано. Действительно ли требуется запуск сеанса? Возможно, он запускается автоматически, когда я записываю в сеанс?

Ответ №2:

Об этом пассивно заботится Cake — вам не нужно его устанавливать. Просто вызывайте read (), write () по мере необходимости.

 $this->Session->write('key', $value);

$value = $this->Session->read('key');
  

Ответ №3:

Просто используйте

echo $this-> Session->id(); //выводит как 7gl7bo9gv38rj0sjtqo52dkeu5

в контроллере. Нет необходимости запускать() или что-то еще. Cakephp (протестирован в 2.7) автоматически делает его доступным для вас.