2012-07-23 54 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

警告! 會話名稱不能只包含數字,必須至少存在一個字母。

  • 確保你不要有空格的會話名稱()說法像
  • 會話名稱( '等等等等')

    這兩種情況都會強制每次生成新的會話標識。