4

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

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

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

4

7 回答 7

1

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

我渴望看到这个问题的解决方案。

于 2012-09-26T03:17:01.527 回答
1

需要检查的几件事:

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

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

于 2012-09-20T15:21:16.897 回答
0

From experience, I can tell you a few things.

First, sessions need to be started with

session_start();

At the top of every page you want to use sessions.

Next, to save session data, you need to call another function to tell php that you are saving stored data. That function is

Session_write_close();

That function is needed on the bottom of the page when you are finished writing data to a session and want it saved for later use.

With those two combined, that should allow you to properly write to a session, save the data you entered into it, and access it later on your site.

Good luck.

于 2012-09-26T12:22:42.250 回答
0

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

于 2012-09-26T10:32:39.433 回答
0

看了这个题目,问题就找到了。

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

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

我要感谢所有花时间帮助我解决这个问题的人。

于 2012-09-27T06:48:17.907 回答
0

我以前遇到过这样的问题。我刚刚从本地主机上传了一个站点到远程主机,我还没有更改名称服务器。托管公司为我提供了一个临时网址,以便我可以查看我的网站。问题是这个url就像这样https://server_name.grserver.gr:8443/sitepreview/http/my_site.gr/,结果是任何浏览器都没有接受会话cookie,因为我没有SSL 证书,因此会话根本不起作用。我浏览了一下 plesk 面板,发现了另一个使用 http 协议的临时 url,这一切都很好。因此,如果您使用 https,请尝试检查您的 ssl 证书是否有问题(例如,如果它已过期)。你说问题发生在你登录管理页面时,

于 2012-09-22T20:09:42.440 回答