2010-05-05 50 views
0

在Kohana v3中获取当前访客会话ID的最佳方式是什么? session_id()似乎并没有工作,只为我返回空。在Kohana 3中获得会话ID的最佳方式是什么?

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

我知道你可以在Kohana的V2做$this->session->id(),但是这似乎并没有在KO3存在......

感谢

回答

4

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

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

对于本机,您应该能够在通过Session :: instance() - > regenerate()生成它时获取ID,它将返回会话ID。

对于数据库,Session_Database已经保护了存储会话ID的$ _session_id。你可能想要扩展这个类并编写你自己的getter。

希望有所帮助。

0

通过观察在GitHub上源,我似乎无法到找到一个返回id的方法。

但是,session_id()用于native driver,所以也许它应该工作在你的情况。

也许如果您先致电session_regenerate_id()

0

如果您使用的是数据库驱动程序,那么cookie将保存会话ID。

另一方面,它似乎没有直接的方式来获得会话ID。 作为@SyaZ建议的方式,您应该扩展会话类并编写自己的getter方法。

4

的Kohana有会议包装类。这个类被称为Session。 Kohana允许使用多种驱动程序(如memcached)以多种方式存储会话数据。我使用本机的方式来存储会话数据,这是默认的,如果你不 我已经看过的Kohana代码本地会话通过配置/ session.php文件的任何配置的变化,发现这会给会话ID

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

它适合我。希望它也适合你!

+0

要提高你的文章的质量,请包括/为什么你的答案将解决问题。 – 2012-10-03 00:42:49

+0

谢谢。我解释说。 – hridayesh 2012-12-03 08:41:15

相关问题