php - 重定向时会话未写入
问题描述
编辑:
我发现了问题,这是在一些遗留代码中完成的,由于某种原因,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 中的相同,则它们是相同的。我也尝试在类/方法之外写入会话,这似乎也有效,我尝试设置没有状态码的标题,以查看是否改变了某些内容,但没有。
解决方案
推荐阅读
- r - R最小化具有梯度的投资组合函数
- java - Java PriorityQueue.remove() 时间复杂度?O(log N) 还是 O(N)?
- python - 熊猫添加新列性能问题
- python - 从 numpy 数组中提取数据以创建另一个数组
- python - 在 Python 中创建一个包含一系列数字的矩阵
- angular - 如何在ionic4中为电容器设置本地存储
- java - 如何从 HashMap 中的 HashMap 获取 Set
- javascript - matter.js 空白屏幕,没有加载
- flutter - 添加边距时,BottomAppBar CircularNotchedRectangle 未居中
- swiftui - SwiftUI如何显示弹出框