我想了解PHP應用程式如何檢查,以查看用戶是否登錄。我專門找在MediaWiki的代碼,試圖幫助我理解,但這些情況應該在所有的PHP應用相當普遍。會話超時後,php應用如何識別用戶?
從我所收集的主要情況是:
用戶只需登錄或創建,他們每次訪問的頁面PHP知道通過檢查常見到$ _SESSION變量數據的他們, cookie。
用戶有一個很久以前的「記住我」選項登錄頁面上選中。他們在那裏有一個cookie的計算機與tokenID,這是與服務器上的一個令牌進行檢查,以驗證它們。在這種情況下,沒有會話變量,因爲訪問之間的時間可能是幾周。
我的問題是,當用戶登錄時會發生什麼,但PHP會話超時並且他想訪問一個頁面?我會假設服務器沒有簡單的方法知道這個人是誰 - 而且他們必須重定向到登錄頁面。
然而,鏈接到MediaWiki做到了這一點。我已經驗證會話文件在X分鐘後被刪除,但是當我在mediawiki中進行刷新時,它會知道我是哪個用戶,並且cookie中不包含「token」變量。
還要注意的是cookie可能只有被保存在內存中,而不是保存到磁盤,所以你不一定會看到cookie文件中的令牌。在這種情況下,會話可以通過內存中的cookie重新創建,但是如果瀏覽器關閉,cookie數據將丟失,用戶將重定向到登錄頁面。 – 2010-03-30 18:22:03