我正在構建一個Web應用程序,允許用戶登錄到數據庫後端並更新一些記錄。我不是一個專業的PHP開發人員。PHP,會話和退出瀏覽器
我剛剛注意到,打開Chrome瀏覽器後,瀏覽到最後一頁,它是在幾天前(重新啓動之間),這是網站的網頁之一,你只能登錄後訪問。我認爲這很奇怪,因爲會議應該過期了。
在每個頁面的頂部,我有:
session_start();
如果到後端的用戶登錄成功我這樣設置會話變量:
$_SESSION['userAuthenticated'] = TRUE;
如果用戶點擊註銷按鈕它這樣做:
$_SESSION = array();
session_unset();
session_destroy();
在我的php.ini文件中我有以下設置:
session.cookie_lifetime 0 (0 for both local value and master value)
session.gc_maxlifetime 900 (900 for both local value and master value)
這是我的理解,會話將保持活動15分鐘,並在用戶完全退出瀏覽器時被銷燬。我剛剛測試過,我可以完全退出瀏覽器,再次打開它並訪問其中一個應該需要登錄的頁面。
難道我做錯了這裏 - 我不能總是指望用戶點擊退出按鈕,但我希望在會議上沒有任何工作15分鐘後,或者如果他們放棄他們的瀏覽器完全。
更新:這是我如何檢查,如果用戶已通過身份驗證:
if (!isset($_SESSION['userAuthenticated']) and $_SESSION['userAuthenticated'] !== TRUE) {
header('Location: index.php');
die;
}
'$ _SESSION = array();'不是必需的。此外,請顯示您如何檢查'$ _SESSION ['userAuthenticated']'以驗證用戶是否登錄。 – Raptor
您可能正在從緩存中加載頁面。如果刷新,它是否仍顯示爲已登錄? (!isset($ _ SESSION ['userAuthenticated'])和$ _SESSION ['userAuthenticated']!== TRUE){ – Mike
@Raptor - 我正在使用它來驗證用戶是否已驗證: header :index.php'); 死亡; } – user982124