重定向时会话未写入

问题描述

编辑:
我已经发现了问题,这是在某些旧版代码中完成的,并且由于某种原因,在我写会话之前,在代码的不同部分进行了一个session_write_close()调用,从而关闭了会话。

我一直在编写一些PHP类来写入会话(主要用于单个请求的东西),并且在写入会话时遇到了麻烦。 当我写入会话时,它看起来像在工作,并且可以在xdebug中看到它,然后我尝试重定向回另一个页面,但是当我进入新请求时,它没有保存到会话中。

我这样写会话:

public function flash($key,$value = null)
{
    if (is_null($value)) {
        return $this->flash[$key];
    }
    $_SESSION['flash'][$key] = $value;
}

,然后像这样重定向

session_write_close();
header('Location: ' . $location,true,$status);
exit;

我似乎无法弄清楚为什么不保存会话变量,session_write_close()函数返回false,所以我知道它没有保存。但是当我不使用重定向时,它确实可以保存。
编辑:使用session_start()

在每个请求上开始会话

我希望有人知道会发生什么并能对我有所帮助。
在此先感谢:)

编辑: 使用session_status()时,我得到的返回值为1,根据文档,它的意思是PHP_SESSION_NONEsessions are enabled,but none exists,但我可以看到已经设置并保存了其他会话值。>

我已经检查了会话ID,如果它与我的Cookie中的ID相同,则它们是相同的。我还尝试在类/方法之外写入会话,这似乎也可行,我尝试设置没有状态码的标头,以查看是否更改了某些内容,但没有改变。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)