如果网站丢失用户会话,应该去哪里查找?

如果网站丢失用户会话,应该去哪里查找?

几天前我突然发现,在我的网站上,当我填写某个地方的表单(例如 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

我猜测有以下两种情况:

  1. session_start()缺少a
  2. 您没有使用会话 cookie,并且执行此操作时请求变量丢失header('Location', ...)

我会使用 Firebug 及其面板Persist中的选项Net来检查所有请求是否都带有PHPSESSIDcookie 或请求变量。假设确实如此,我会检查标头的目标页面session_start()上是否缺少这些内容。Location

相关内容