Лучший способ получить идентификатор сессии в Kohana 3? - PullRequest
0 голосов
/ 05 мая 2010

Каков наилучший способ получить текущий идентификатор сеанса посетителей в Kohana v3? session_id(), похоже, не работает, а возвращает только ноль для меня ..

В данный момент я использую cookie::get('session'), но это не работает при первом входе на сайт, что мне нужно сделать.

Я знаю, что вы можете сделать $this->session->id() в Kohana v2, но этого не существует в KO3 ...

Спасибо

Ответы [ 5 ]

4 голосов
/ 02 октября 2012

Кохана имеет класс-оболочку для сеансов. Этот класс называется Session. Kohana позволяет хранить данные сеанса несколькими способами, используя несколько драйверов, таких как memcached. Я использую собственный способ хранения данных сеанса, который используется по умолчанию, если вы не вносите никаких изменений в конфигурацию через config / session.php Я посмотрел код Kohana для родной сессии и обнаружил, что это даст идентификатор сессии

Session::instance()->id();

Это работает для меня. надеюсь, что это работает и для вас!

4 голосов
/ 07 мая 2010

Обычно вы используете любой из этих трех типов сеансов: Native, Cookie, Database.

Для куки, я думаю, у вас нет идентификатора сессии. Даже если вы вызовете Session :: instance () - >enerate () при использовании cookie в качестве типа сессии, он вернет только NULL.

Для native вы должны иметь возможность получить идентификатор при генерации его с помощью Session :: instance () -> Регенерация (), который возвращает идентификатор сеанса.

Для базы данных Session_Database защитил $ _session_id, где хранится идентификатор сессии. Возможно, вы захотите расширить этот класс и написать свой собственный метод получения.

Надеюсь, это поможет.

2 голосов
/ 29 сентября 2010
0 голосов
/ 12 мая 2010

Если вы используете драйвер базы данных, тогда cookie будет содержать идентификатор сеанса.

С другой стороны, похоже, нет прямого способа получить идентификатор сеанса. Как и подсказал @SyaZ, вы должны расширить класс сеанса и написать свой собственный метод получения.

0 голосов
/ 06 мая 2010

Судя по исходному коду на GitHub, я не могу найти способ вернуть идентификатор.

Однако session_id() используется для собственного драйвера , поэтому, возможно, он должен работать в вашем случае.

Возможно, если вы сначала позвоните session_regenerate_id()

...