2017-08-06 81 views
16

我正在使用PHP作爲後端技術的網站管理員cp,同時我正在解決一些響應問題。Chrome切換不同設備視圖破壞會話

所以我登錄到管理面板但是,當我切換Galaxy,Nexus Iphone或響應模式等不同設備以測試響應式外觀或修復程序時,我發現自己已註銷並重定向到登錄頁面並且我還會看到登錄前不應出現的內容,例如管理員菜單,但無法訪問,換句話說,它是一半登錄狀態,一半沒有登錄。

兌現未禁用。

會話ID是相同的,我可以看到它。

我真的無法繞過它!

瀏覽器中的東西是否正常,意味着每個設備都獨立於整個瀏覽器?

或者我做錯了什麼?

+0

檢查當您打開控制檯時,取消選中禁用緩存 –

+1

@JoaquinPeraza no cahsing未禁用! –

+0

你如何檢查登錄狀態? – Akintunde007

回答

7

最後經過數個小時審查我的代碼和調試的每一件事情的,我想出了一個解決我的問題:

  • 我的問題,這個設備是一個獨立 彼此假設是相當正確的,因爲每個設備都有一個不同的 HTTP_USER_AGENT

,您可以嘗試這樣的:

echo $_SERVER['HTTP_USER_AGENT']; 

在瀏覽器上切換不同的設備並查看結果。

因此,對於基於堆棧溢出和其他許多資源的會話最佳實踐,最好在會話中保存$_SERVER['HTTP_USER_AGENT'],然後在登錄後檢查會話,這意味着登錄用戶完全是來自該用戶的用戶瀏覽器

而這正是我在做我檢查用戶登錄會話和用戶代理會話

而這是什麼原因導致的問題,所以當我切換不同的設備HTTP_USER_AGENT得到改變,因此會議沒有按」 t匹配,因此我會自動註銷。

+2

我剛剛看到這個問題,並說要清楚你的用戶代理驗證'$ this-> session-> set('agent',$ this-> custom - > userAgent());'和chromes設備視圖將其更改爲您已將其設置爲的設備的用戶代理... –