【问题标题】:Kohana PHP sessions problem under a local network本地网络下的 Kohana PHP 会话问题
【发布时间】:2011-05-23 16:59:48
【问题描述】:

我有一个 kohana (php) 网站,当本地网络上的计算机在代理下使用会话时,我们遇到了问题。

问题: PC 1 和 PC 2 在同一个本地网络中。他们使用代理服务器访问外部网站。 PC 1 使用“用户 A”访问该站点,他现在在主页中,该站点显示“与用户 A 连接”。 PC 2 进入站点并使用“USER B”访问,他现在在主页中,并且站点显示“与 USER B 连接”。 PC 1 按 F5 重新加载站点主页,站点现在显示已使用“USER B”记录。

系统是在外部安装的,我们只在这个代理网络中遇到这个问题。在本地网络下(但没有代理)的其他 PC 访问没有这个问题。

我们在 auth 模块中启用了“user_token”部分(它使用了一个名为“user_tokens”的新表,该表使用了浏览器用户代理),但问题仍然存在。

-- 编辑-- 我们使用的是 Kohana 3.0、PHP 5.2.9 和 postgres 8.4

【问题讨论】:

  • 您使用的是什么 Kohana 版本?
  • 在该网络中是否会与其他 Kohana(或 PHP)网站发生这种情况?

标签: php session proxy kohana authentication


【解决方案1】:

您的代理是否支持缓存?如果客户端登录,它应该缓存不同的页面。

您的应用程序可能必须设置适当的 HTTP 标头来告诉代理它不允许缓存 HTTP 响应。

如果这不能解决问题,请确保您没有使用客户端 IP 地址作为会话密钥。 (如果您仍然喜欢使用 IP,请为允许的代理创建白名单,然后使用 HTTP forwarded_for 标头。不过,它只会解决您信任的代理的问题。)

【讨论】:

  • 我解决了。这是一个标头问题,所以我认为代理正在缓存它。
  • 我添加了这个:header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified:" .gmdate("D, d M Y H:i:s") ." GMT"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache");
【解决方案2】:

能否暂时关闭代理以确认问题?

您可以尝试使用 Firefox 和 Firebug 扩展程序访问该站点吗?这将让您看到从站点发送的确切 HTTP 响应代码和标头。了解它们是什么将有助于我们为您诊断问题。

【讨论】:

  • 我们无法关闭代理,但我们正在尝试更改它(使用另一个)。
  • 我们无法关闭代理,但我们正在尝试更改它(使用另一个)。我认为不可能安装 firefox 和 firebug ......因为本地网络的用户不够技术,我无法指导他们进行分析。无论如何,它可以帮助我对标题进行一些测试。
猜你喜欢
  • 2012-07-10
  • 1970-01-01
  • 1970-01-01
  • 2014-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多