#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) автоматически делает его доступным для вас.