【问题标题】:Best way to get session id in Kohana 3?在 Kohana 3 中获取会话 ID 的最佳方法?
【发布时间】:2010-05-05 14:57:17
【问题描述】:

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

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

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

谢谢

【问题讨论】:

    标签: php session kohana kohana-3


    【解决方案1】:

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

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

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

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

    希望对您有所帮助。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 为提高您的帖子质量,请说明您的答案将如何/为何解决问题。
      【解决方案3】:
      【解决方案4】:

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

      但是,session_id() 用于native driver,所以也许它应该适用于您的情况。

      也许你先打电话给session_regenerate_id()

      【讨论】:

        【解决方案5】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-08-23
          • 1970-01-01
          • 2012-04-26
          相关资源
          最近更新 更多