2011-05-23 74 views
1

我有一個kohana(php)網站,當我們使用代理下的本地網絡上的計算機時,會話出現問題。Kohana本地網絡下的PHP會話問題

問題: PC 1和PC 2位於同一本地網絡中。他們使用代理服務器訪問外部網站。 PC 1使用「用戶A」訪問網站,他現在在主頁面,網站上顯示「與用戶A連接」。 PC 2進入站點並通過「用戶B」訪問,他現在在主頁面中,站點顯示「與用戶B連接」。 PC 1按F5重新加載站點主頁面,該站點現在說用「USER B」記錄。

該系統是外部安裝的,我們只有在這個低代理網絡中有這個問題。在本地網絡(但沒有代理服務器)下也可以訪問其他PC,不會有這個問題。

我們啓用了auth模塊中的「user_token」部分(它使用一個名爲「user_tokens」的新表,它使用瀏覽器用戶代理),但問題仍然存在。

- 編輯 - 我們正在使用的Kohana 3.0,PHP 5.2.9和Postgres 8.4

+0

您正在使用什麼Kohana版本? – dusan 2011-05-23 17:01:23

+0

這是否發生在與其他Kohana(或PHP)網站的網絡中? – dusan 2011-05-23 18:39:18

回答

1

您的代理支持緩存嗎?它應該是不是如果客戶端登錄,則緩存頁面不同。

您的應用程序可能必須設置適當的HTTP標頭以告訴代理它不允許緩存HTTP響應。

如果這不能解決它,請確保您沒有使用客戶端IP地址作爲會話密鑰。 (如果您仍然喜歡使用IP,請爲允許的代理創建白名單,然後使用HTTP forwarded_for標頭,但它只會修復您所信任的代理的問題)。

+0

我解決了它。這是一個頭問題,所以我建議代理緩存它。 – juakonn 2011-05-24 16:09:45

+0

我加了這個:header(「Expires:Mon,1997年7月26日05:00:00 GMT」); (「Last-Modified:」。gmdate(「D,d M Y H:i:s」)。「GMT」); (「Cache-Control:no-store,no-cache,must-revalidate」); header(「Cache-Control:post-check = 0,pre-check = 0」,false); header(「Pragma:no-cache」); – juakonn 2011-05-24 16:10:05

0

你能把代理暫時關閉,以確認問題?

你可以嘗試使用Firefox和Firebug擴展訪問該網站嗎?這將讓您看到從站點發送的確切HTTP響應代碼和標題。瞭解它們將幫助我們爲您診斷問題。

+0

我們無法關閉代理,但我們正在嘗試更改它(使用另一個)。 – juakonn 2011-05-24 14:33:07

+0

我們無法關閉代理服務器,但我們正在嘗試對其進行更改(使用另一個代理服務器)。我不認爲可以安裝firefox和firebug ...因爲本地網絡不夠techicals足夠的用戶,我不能指示他們分析。無論如何,它可以幫助我用標題做一些測試。 – juakonn 2011-05-24 15:03:21