session_unset()
釋放當(dāng)前在內(nèi)存中已經(jīng)創(chuàng)建的所有$_SESSION變量,但不刪除session文件以及不釋放對應(yīng)的session id
session_destroy()
刪除當(dāng)前用戶對應(yīng)的session文件以及釋放session id,內(nèi)存中的$_SESSION變量內(nèi)容依然保留
【注意】:
刪除session方法:
1、unset ($_SESSION['xxx']) 刪除單個session,unset($_SESSION['xxx']) 用來unregister一個已注冊的session變量。其作用和session_unregister()相同。session_unregister()在PHP5中不再使用,可將之打入冷宮。
unset($_SESSION) 此函數(shù)千萬不可使用,它會將全局變量$_SESSION銷毀,而且還沒有可行的辦法將其恢復(fù)。用戶也不再可以注冊$_session變量。
2、$_SESSION=array() 刪除多個session
3、session_destroy()結(jié)束當(dāng)前的會話,并清空會話中的所有資源。。該函數(shù)不會unset(釋放)和當(dāng)前session相關(guān)的全局變量(globalvariables),也不會刪除客戶端的session cookie.PHP默認(rèn)的session是基于cookie的,如果要刪除cookie的話,必須借助setcookie()函數(shù)。
返回值:布爾值。
功能說明:這個函數(shù)結(jié)束當(dāng)前的session,此函數(shù)沒有參數(shù),且返回值均為true
session_unset() 如果使用了$_session,則該函數(shù)不再起作用。由于PHP5必定要使用$_session,所以此函數(shù)可以打入冷宮了。
可以得出刪除session的步驟:
?、賡ession_start()
?、?_SESSION=array()/unset($_session['xxx'])
?、踫ession_destroy()
哪幾種情況可以銷毀session(一般有3種)
1、超時(一般服務(wù)器設(shè)置超時時間為30分鐘)服務(wù)器會銷毀session;
2、點(diǎn)擊控制臺的紅色按鈕異常關(guān)閉服務(wù)器要銷毀session
3、手動調(diào)用session的invalidate方法session.invalidate();
注意如果服務(wù)器正常關(guān)閉不會銷毀
服務(wù)器正常關(guān)閉不銷毀session,()session會存到我們的硬盤中,也就是我們正常的點(diǎn)擊stop server()會在tomcat的work的Catalina\localhost\項目名稱下面生成一個文件SESSIONS(執(zhí)行序列化),當(dāng)服務(wù)器再次啟動的時候會加載此文件(反序列化),倘若沒有實現(xiàn)序列化接口(Serializable)可能會報錯因為序列化和反序列化會依據(jù)一個id:
private static final long serialVersionUID = 1L;
Session和界面沒任何關(guān)系
是服務(wù)器在內(nèi)存中創(chuàng)建的一種為了保持HTTP狀態(tài)的值
HTTP 無連接(因為會斷開) 無狀態(tài)
我沒法知道你是 用戶freewolf
只能靠Session和Cookie
來保存狀態(tài)~
C 登陸界面
S 驗證成功
S 創(chuàng)建Session
S 返回成功和SessionID
C 拿到SessionID
C 每次操作拿著SessionID
S 我根據(jù)SessionID知道你是誰
C 我要退出
S 銷毀SessionId
Session超時也會失效 其實 和客戶端一點(diǎn)關(guān)系都沒有~
如對本文有疑問,請?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會為你解答??! 點(diǎn)擊進(jìn)入論壇