2012-07-23 68 views
2

我发现在我的简单Web应用程序中,如果您将页面单独保留五分钟以上,然后重新载入页面,则调用session_id()将在第二次返回不同的值。用户保持登录状态,所以会话数据被移动到新的ID,但我根据会话ID跟踪MySQL数据库中的购物车项目,当ID改变时,与购物车项目的关联就会丢失。正在自动重新生成PHP会话ID

在我的代码

没有在任何地方我曾经打电话session_regenerate_id()

帮助!

+0

你有什么样的托管?共享服务器? – 2012-07-23 16:22:03

+1

我假设你正在调用'session_start()' - 也就是在页面加载之前。 – 2012-07-23 16:22:43

+2

你应该看看你的会话过期时间'session.gc_maxlifetime'的值。它可能太短。 – 2012-07-23 16:22:58

回答

0

你可能想检查你的代码,看看你是否使用带有参数的session_id(),因为这也会改变会话ID。在没有看到代码的情况下,很难明确修复或知道发生了什么问题。

0

一些事情你可能要检查,如果遇到这样的情况,并且您使用会话名称():

  1. PHP Online Manuals

警告! 会话名称不能只包含数字,必须至少存在一个字母。

  • 确保你不要有空格的会话名称()说法像
  • 会话名称( '等等等等')

    这两种情况都会强制每次生成新的会话标识。