切换同一域上的选项卡时,PHP会话将重置

时间:2012-09-17 08:07:19

标签: php session

我有一个带有私人后端的网站(www.mysite.com)(www.mysite.com/admin)

当我在管理区域中向网站添加内容并在同一浏览器窗口中的选项卡之间来回切换以查看我正在编辑的内容时,我的会话将过期/结束/终止并且我是再次重定向到登录页面。

我之前在许多网站上使用了相同的代码很多次(这是我自己制作的CMS)没有问题。我唯一能想到的是这个特定的网站托管在不同的Web服务器上,也许这是php.ini设置或服务器配置的问题。有什么想法吗?

6 个答案:

答案 0 :(得分:1)

要检查的一些事项:

  • session.cookie_lifetime设置 - 可能太短; 0是默认值并保留cookie直到浏览器关闭
  • session.cookie_path设置 - 您希望这是'/'
  • 会话存储 - 确保正在写入会话数据。
  • 如果您的会话存储在数据库中,请显式调用session_close()。这将确保在您的对象和数据库资源被销毁之前编写它们。
  • 如果通过任何类型的代理服务,请检查是否有任何已更改的标头信息。
  • 如果缓存,请检查您的网页应用程序而不是缓存提供的动态网页(需要会话)。
  • 如果您使用本地/ etc / hosts进行测试,请首先清除您的Cookie,以便新服务器的Cookie是新鲜的,不会发生冲突。
  • 在浏览器中确认cookie实际上已存储。也许它实际上并没有回到标题中。

答案 1 :(得分:1)

您是否检查过浏览器Cookie? (实际的客户端?)或尝试与另一个浏览器的运气?这可能听起来有点奇怪,但我有类似的问题,在我的情况下,它与这些cookie有关。由于你的奇怪问题,可能值得弄清楚。您可能知道,phpsession值存储在该cookie中,域也是如此。 祝你好运!

答案 2 :(得分:1)

这可能是几件事的结果,但我的第一直觉是检查并查看会话cookie是否很快到期。有时,服务器标头可能会更改到期值。您可能还想检查服务器发送的缓存标头。如果您在管理区域使用异步功能,则服务器可能会以某种方式更改可能影响此目的的缓存文件的到期时间。

我渴望看到解决方案。

答案 3 :(得分:0)

可能有几个原因。由于没有代码或没有关于提供的网站的详细信息,我假设问题可能是您使用htpasswd。如果您正在使用htaccess身份验证,那么您的会话将被销毁。

答案 4 :(得分:0)

根据经验,我可以告诉你一些事情。

首先,需要以

开始会话
session_start();

在您想要使用会话的每个页面的顶部。

接下来,要保存会话数据,您需要调用另一个函数来告诉php您正在保存存储的数据。该功能是

Session_write_close();

当您将数据写入会话并希望将其保存以供以后使用时,页面底部需要该功能。

将这两者组合在一起,可以让您正确地写入会话,保存您输入的数据,并在以后的网站上访问它。

祝你好运。

答案 5 :(得分:0)

阅读this topic后发现问题。

我在根目录中有一个自定义的php.ini,显然它干扰了$ _SESSION。我不知道为什么但删除后一切正常。

起初似乎问题是在几个浏览器选项卡中打开位于不同子文件夹中的页面,但是它会缩小到子文件夹问题以及$ _SESSION无法通过它们访问的事实。

我要感谢大家花了一些时间来帮助我解决这个问题。