几天前我突然发现,在我的网站上,当我填写某个地方的表单(例如 POST)然后进行重定向以查看该地方时,用户会话就会丢失。如果我刷新该页面,我就会再次连接。这种情况也会发生在另一个表单+重定向中。
这只会发生在生产服务器上。在准备阶段(与生产配置相同)和本地运行正常。
我生产中使用的堆栈是 Apache、memcache(会话)、PHP、Symfony1.4、MySQL。
知道我应该去哪里找吗?Apache,什么?Memcache?
谢谢!
编辑
- 这不是 suhosin,因为我没有启用扩展
- 仅在 POST 和 Header 重定向之后发生
答案1
我找到了错误,但它与此无关。下面的代码破坏了它。我刚刚对其进行了注释。仍然不知道原因,但至少错误已经解决。我得问问 symfony 的伙计们。
// clear cache
$cacheDriver = $this->getTable()->getAttribute(Doctrine::ATTR_RESULT_CACHE);
$cacheDriver->deleteByPrefix('tour.'.$this->id);
答案2
我猜测有以下两种情况:
session_start()
缺少a- 您没有使用会话 cookie,并且执行此操作时请求变量丢失
header('Location', ...)
我会使用 Firebug 及其面板Persist
中的选项Net
来检查所有请求是否都带有PHPSESSID
cookie 或请求变量。假设确实如此,我会检查标头的目标页面session_start()
上是否缺少这些内容。Location