session_start之后的session::instance()-Kohana(v.3.2) - php

我正在使用Kohana的Session类,没有问题,但是现在我遇到了一种特殊情况。
在我的脚本中,我必须加载一个供应商类,该供应商类在某个地方调用session_start

稍后在代码中,我需要调用Session :: instance(),这将导致Error reading session data.异常。

我无法修改供应商代码(具体来说,它是facebook php sdk,并且我不想修改它),我必须稍后再调用Session::instance()

如何解决这种情况?

你必须知道,一个简单的

<?php
session_start();
Session::instance();
?>

会产生相同的异常。
我认为这是Kohana 3.2中的错误,但我需要采取一些措施。

要了解有关Session类的更多信息,请查看以下内容:http://kohanaframework.org/3.2/guide/api/Session

顺便说一句,我正在使用默认的本机会话类。

参考方案

正如Alex Mihai指出的,我们可以在Session :: instance()中使用session id参数来重新启动它。

您得到的例外是该会话仍在运行,并且您无法还原正在运行的会话。因此,您必须先关闭它。

试试这个:

// Start session
session_start();    

// Store session id and close the session
$sessionId = session_id();
session_write_close();

// Then we can restore the session by using the session id 
// and the Session class from Kohana
Session::Instance(Session::$default, $sessionId);

它可能也不是最优雅的解决方案,但这对我有用,希望对您有所帮助。

php session header()重定向后丢失 - php

这是我第一次尝试创建会话。另外,成功登录后,我使用header()函数重定向页面,但是在重定向的页面上,我不再有会话。有代码:建立工作阶段:function userLogin($user){ session_start(); $_SESSION['username'] = $user; header("Location: /~…

PHP Memcached会话突然失效 - php

session.save_handler = memcached session.save_path = "127.0.0.1:11211" session.gc_maxlifetime = 86400 其余的标准。我希望自上次用户访问该页面以来,该会话至少可以保留86400秒,即,如果我在5分钟后启动了一个会话并访问了该页面,则该会话应…

PHP-foreach影响会话值 - php

foreach循环如何影响会话变量?session_start(); $_SESSION[test] = "Session content"; echo $_SESSION[test].'<br />'; $test_array = array("test", "array&#…

如何在jquery中获取session的值 - php

如何在jquery中获取session的值。我已经使用此获取价值,但无法获取价值。 参考方案 将此值存储在一个隐藏的字段中,然后使用该字段的值。

PHP防止注销后返回页面 - php

我有一个受保护的页面,该页面仅显示登录用户的数据,一旦用户单击注销链接,它将破坏会话数据并重定向到另一个页面。 header('Location: login.php');现在,一旦页面重定向到login.php,我就可以轻松地返回到受保护的后页,并且可以在那里查看所有信息,并且可以保留在该页面上,直到我刷新浏览器或关闭它。在Gmail等…