2016-01-23 74 views
1

我希望有人可以給我一個關於以下問題的明確答案。 我使用挑戰 - 響應模式進行登錄。登錄名在子域上。像subdomain.domain.com一樣。每次用戶輸入登錄名時,都會創建一個新的質詢並保存在會話中($_SESSION)。PHP會話與Chrome在子域中的不同行爲

當我POST我的表單時,響應將被創建,並在服務器端通過創建與保存在$_SESSION中的挑戰相同的匹配來檢查響應。

我不明白,以及如何解決的是,當我輸入subdomain.domain.com/form.php,SESSION設置。我POST到同一頁面(並希望留在子域!)我的SESSION被改變。 運行FF或IE它工作沒有任何問題,所以價值沒有改變。 但使用chrome運行它會更改。

此外我發現通過鏈接domain.com/subdomain/form.php,SESSION沒有改變。

[編輯] 我檢查了session_id,但那是一樣的。

親切的問候

+0

你知道,當創建一個會話,一個cookie存儲在用戶計算機與session_id在那裏引用您的會話文件服務器? – Jordy

+0

是的,這是正確的,我只會阻止像你這樣的答案,把你的挑戰放入cookie或其他東西:-)但無論如何,它很奇怪,FF和IE工作沒有任何問題,但Chrome修復 –

回答

0

好了多麼可怕的錯誤是這樣的......

不過,我找到了答案。

我有一個子域名,我只是在做這個,所以它與共享cookies或會話或類似的東西沒有任何關係。 但我沒有應用程序的圖標! Chrome使POST操作成爲可能並搜索favicon。當他找不到任何東西時,他拋出一個302和再見,會話重新啓動...

所以要清楚,你有PHP和會話的問題,只有在Chrome?檢查你是否有一個圖標集並檢查網絡面板! 許多人也迴應有關URL重寫,但favicon是問題...

+1

它可能不是鉻錯誤,鉻實際上做正確的事情。它試圖調用你的圖標,但它不在那裏,在你的代碼的某個地方應該有302重定向,如果不是chrome只是返回404爲favicon,所以在你的會話變量改變之前。所以沒有錯誤。可能有誤用。 – FZE

+0

@FZE它只是當我有我的來源的圖標。但它從來沒有設置,所以它永遠不應該打這個電話。 –