2010-03-06 68 views
0

我使用CodeIgniter和存儲在MySQL數據庫中的CodeIgniter會話。多頁面重定向

我需要做的多頁面重定向如下所示:

`some_form.php` -> `processing.php` -> `another_form_based_on_processing.php` 

一切正常,從去some_form.php - >processing.php

但是,當我從processing.php - >another_form_based_on_processing.php重定向頁面時,我失去了會話。一個全新的會話開始,用戶信息和所有其他會話變量都消失了。

解決此問題的最佳方法是什麼?

+0

我認爲它沒有「多頁」重定向,但經常一個頁面重定向來自processing.php到another_form_based_on_processing.php – 2010-03-06 20:50:51

+0

的用戶沒有輸入來自processing.php - > another_form_based_on_processing.php因此用戶應該處理之後直接那裏採取。 處理應該只進行一次。 但是,只要我做了重定向('another_page_based_on_processing.php'); 我發現自己完全退出了應用程序。 – user285379 2010-03-06 21:14:12

回答

0

有時(如果用戶沒有啓用,例如餅乾),PHP已經從頁面傳遞會話ID頁面的URL ......也許,在這裏的話,當你從第2重定向頁面切換到第3(並且用戶已註銷),這是因爲會話標識未被攜帶。只是一個想法。

調試這種方法的一種策略可能比觀看HTTP標頭更簡單,它將(暫時)大幅簡化您的代碼。現在你說第1頁到第2頁的跳是好的,但是2到3是會話丟失的地方......所以把頁改爲2立即重定向到第3頁。如果在改變之後,用戶仍然登錄在第3頁(即會話被保留),這意味着其他在您的頁面2代碼正在銷燬會話。

祝你好運,呼應上校彈片的評論上方,張貼代碼/調試結果可以幫助我們來幫助你更:-)

+0

p.s.你的redirect()函數是什麼樣的? – Eric 2010-03-06 22:00:38

+0

我還沒有得到它,但你說得對。我簡化了它,會話持續不斷。這意味着它的東西在代碼本身。我現在就去找。 謝謝。 – user285379 2010-03-07 00:44:48

+0

我的榮幸。 FWIW我通常會發現這是一個快速的方法來家中快上的時候,我不能完全肯定有一個錯誤確切的問題在於:我剛開始在用大砍刀代碼劈砍而去,(暫時)去除功能大塊並看看錯誤是否仍然存在。 – Eric 2010-03-08 02:08:38

0

解決任何問題的最好方法是基於知識進行調試。

在會話的情況下,調試涉及HTTP嗅探以觀察其中的HTTP標頭和Cookie。服務器設置的內容以及瀏覽器返回的內容。來自此頁面上廣告的HttpWatch可以提供幫助。

我希望你的腳本都在同一個域/服務器上。

+0

是在同一臺服務器上的所有腳本。 – user285379 2010-03-06 21:16:03

+0

很好用於HTTP調試。 在這裏重定向代碼也是有幫助的 – 2010-03-06 21:52:08