什么是Session就不多說的,與之相關的是cookie,百度百科有很詳細的介紹。
先看看session的工作原理:
1.當一個session第一次被啟用時,一個唯一的標識被存儲于本地的cookie中。
2.首先使用session_start()函數,PHP從session倉庫中加載已經存儲的session變量。
3.當執(zhí)行PHP腳本時,通過使用session_register()函數注冊session變量。
4.當PHP腳本執(zhí)行結束時,未被銷毀的session變量會被自動保存在本地一定路徑下的session庫中,這個路徑可以通過php.ini文件中的session.save_path指定,下次瀏覽網頁時可以加載使用。
今天遇到一個網站登錄以后,點擊退出然后任然顯示的登錄狀態(tài),第一反應是代碼里面退出的時候未執(zhí)行session_destroy()函數;但是查看該文件已經執(zhí)行該函數,于是唯一的可能的是服務器的session變量未被銷毀。
接下來在服務器找到session儲存目錄,清空里面的session變量值,然后再登錄網站,查看目錄生成了session變量,點擊退出按鈕以后,服務器的session儲存目錄里面的session變量值依然存在,在屬性查看該文件夾的everyone用戶的權限,發(fā)現沒有刪除權限,于是勾選刪除權限以后再去退出發(fā)現成功!