问题描述
编辑:
我已经发现了问题,这是在某些旧版代码中完成的,并且由于某种原因,在我写会话之前,在代码的不同部分进行了一个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_NONE
或sessions are enabled,but none exists
,但我可以看到已经设置并保存了其他会话值。>
我已经检查了会话ID,如果它与我的Cookie中的ID相同,则它们是相同的。我还尝试在类/方法之外写入会话,这似乎也可行,我尝试设置没有状态码的标头,以查看是否更改了某些内容,但没有改变。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)