2013-02-13 136 views
1

我在這裏面臨一個非常奇怪的問題。CodeIgniter和Joomla - 會話數據丟失

我有兩個網站:**A** and **B**

**A** is the landing page (a micro website). **A** is running Joomla. 

**B** - payment pages. Coded with CodeIgniter. Uses session library and stores session data in a database. 

=================

方案: 用戶訪問登陸頁面(網站A),選擇一個服務包並點擊購買。然後他被帶到付款頁面(網站B),並開始填寫他的申請表。 一旦完成,他將被帶到支付網關(由SecureTrading提供)並進行支付。付款成功後,用戶將被帶回網站B,在那裏他必須完成他的應用程序的最後一點。

問題: 成功付款後,用戶被重定向回網站,但由於某些原因,所有的會話數據都將丟失。

當發生這種情況: 會話數據丟失,只有當用戶從登錄頁面(一個)的到來。 如果我一開始沒有訪問登陸頁面就開始填寫申請表,一切正常。

這是怎麼發生的? 我該如何解決這個問題?

+0

清除會話表並執行您列出的步驟。當你到達會話數據丟失的地方時,檢查會話表中的任何一個。 1)表是空的,2)表有一個條目,但會話數據是空的/無效的,3)現在有兩個條目。報告結果。 – 2013-02-13 12:20:45

+0

現在有兩個條目 - 其中一個具有正確的數據(以及主session_id),另一個在付款後添加到數據庫中,除了新的session_id外,其中沒有數據。 顯然,由於某種原因我的會話被重置...... 這隻發生在我訪問外部網站的付款頁面時。 Joomla與它無關。 – chuckfinley 2013-02-13 12:29:57

+0

你可以在你確定會話是否存在的地方發佈你的代碼,並且如果它沒有通過檢查就創建一個會話。這可能是你的罪魁禍首。系統沒有正確地判斷會話是否已經存在,因此它正在創建一個新的會話並因此覆蓋用戶的會話cookie,因此有效的cookie不再被髮送到服務器以檢索第一個/實際會話。您可能在多個地方有這樣的問題代碼,請考慮執行會話檢查的所有地方。 – 2013-02-13 12:32:50

回答

2

確保您的application/config.php文件有以下設置中設置這個值:

$config['cookie_domain'] = ".mysite.com"; 

拿筆記領先.這表示該cookie訪問的站點範圍內的。這將確保可以從所有子域訪問cookie。這裏有更多關於cookie域如何工作的information。您應該始終設置此配置選項,因爲它默認爲空,因此將使用默認的cookie設置,在大多數設置中這不是開發人員需要的。