在Kohana 3获得会话ID的最佳方式?

时间:2010-05-05 14:57:17

标签: php session kohana kohana-3

在Kohana v3中获取当前访问者会话ID的最佳方法是什么? session_id()似乎不起作用,只为我返回null ..

目前我正在使用cookie::get('session'),但是在您第一次访问该网站时这不起作用,我需要这样做。

我知道你可以在Kohana v2中做$this->session->id(),但这在KO3中似乎不存在......

由于

5 个答案:

答案 0 :(得分:4)

通常,您使用以下3种会话类型中的任何一种:Native,Cookie,Database。

对于cookie,我相信你没有会话ID。即使在使用cookie作为会话类型时调用Session :: instance() - > regenerate(),它也只会返回NULL。

对于native,你应该能够在Session :: instance() - > regenerate()生成ID时获取ID,返回会话ID。

对于数据库,Session_Database已保护$ _session_id,其中存储了会话ID。您可能希望扩展该类并编写自己的getter。

希望有所帮助。

答案 1 :(得分:4)

Kohana有会话包装课程。该类称为Session。 Kohana允许多种方式使用多个驱动程序(如memcached)存储会话数据。我使用本机方式存储会话数据,如果您不通过config / session.php进行任何配置更改,则默认为默认值 我查看了本地会话的kohana代码,发现这将提供会话ID

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

它对我有用。希望它也适合你!

答案 2 :(得分:2)

答案 3 :(得分:0)

从GitHub上查看源代码,我似乎无法找到返回id的方法。

但是,session_id()用于native driver,因此

也许您先拨打session_regenerate_id()

答案 4 :(得分:0)

如果您正在使用数据库驱动程序,则cookie将保留会话ID。

另一方面,它似乎没有获得会话ID的直接方法。 正如@SyaZ建议的那样,你应该扩展会话类并编写自己的getter方法。