正在自动重新生成PHP会话ID

正在自动重新生成PHP会话ID,php,session,session-cookies,Php,Session,Session Cookies,我发现,在我的简单web应用程序中,如果将页面单独放置五分钟以上,然后重新加载页面,调用session_id()将在第二次返回不同的值。用户保持登录状态,因此会话数据将被移动到新ID,但我根据会话ID跟踪MySQL数据库中的购物车项目,当ID更改时,与购物车项目的关联将丢失 在我的代码中,我从来没有调用过session\u regenate\u id() 救命啊 您可能需要检查代码,查看是否正在使用带参数的会话id(),因为这也会更改会话id。如果不查看代码,就很难确定修复或知道出现了什么问题。

我发现,在我的简单web应用程序中,如果将页面单独放置五分钟以上,然后重新加载页面,调用session_id()将在第二次返回不同的值。用户保持登录状态,因此会话数据将被移动到新ID,但我根据会话ID跟踪MySQL数据库中的购物车项目,当ID更改时,与购物车项目的关联将丢失

在我的代码中,我从来没有调用过session\u regenate\u id()


救命啊

您可能需要检查代码,查看是否正在使用带参数的会话id(),因为这也会更改会话id。如果不查看代码,就很难确定修复或知道出现了什么问题。

您可能需要检查代码,查看是否正在使用会话id()使用参数anywere,因为这也会更改会话id。如果没有看到代码,就很难确定修复或知道出现了什么问题。

如果遇到这种情况,您可能还需要检查一些事情,并且您确实使用了会话名称()

  • 发件人:
  • 警告!会话名称不能仅由数字组成,必须至少有一个字母

  • 确保session\u name()参数中没有空格,如
  • 会话名称(“诸如此类”)


    这两种情况都会强制每次生成一个新的会话id。

    如果遇到这种情况并且确实使用了会话名称(),您可能还需要检查几件事:

  • 发件人:
  • 警告!会话名称不能仅由数字组成,必须至少有一个字母

  • 确保session\u name()参数中没有空格,如
  • 会话名称(“诸如此类”)


    这两种情况都会强制每次生成一个新的会话id。

    您有什么类型的主机?共享服务器?我假设您正在相应地调用
    session\u start()
    ,即在页面加载之前。您可能应该查看会话过期时间段的“session.gc\u maxlifest”值。它可能太短。@MikeB它位于共享服务器上,yes@JasonMcCreary是的,我在页面加载前调用session_start。值得注意的是,当ID号更改时,用户没有注销,就好像调用了session_regenate_ID(),但我仔细检查了代码,我们在任何地方都没有使用该函数。您有什么类型的主机?共享服务器?我假设您正在相应地调用
    session\u start()
    ,即在页面加载之前。您可能应该查看会话过期时间段的“session.gc\u maxlifest”值。它可能太短。@MikeB它位于共享服务器上,yes@JasonMcCreary是的,我在页面加载前调用session_start。值得注意的是,当ID号更改时,用户没有注销,就好像调用了session_regenate_ID(),但我已经仔细检查了代码,我们没有在任何地方使用该函数。