在網(wǎng)站建設(shè)中,當(dāng)完成一個會話后,可以刪除Session變量,也可以將其銷毀。如果用戶想退出網(wǎng)站,就需要提供一個注銷的功能,把所有信息在服務(wù)器中銷毀??梢哉{(diào)用session_destroy()函數(shù)結(jié)束當(dāng)前的會話,并清空會話中的所有資源。該函數(shù)的語法格式如下:bool session-destroy ( void ) //銷毀和當(dāng)前Session有關(guān)的所有資料相對于session_start()函數(shù),該函數(shù)用來關(guān)閉Session的運作,如果成功則傳回true,銷毀Ses-sion資料失敗則返回false。
該函數(shù)并不會釋放和當(dāng)前Session相關(guān)的變量,也不會刪除保存在客戶端Cookie中的SessionID。因為$_SESSION數(shù)組和自定義的數(shù)組在使用上是相同的,不過可以使用unset()函數(shù)來釋放在Session中注冊的單個變量。如下所示:unset($_SESSION["username"]); //刪除在Session中注冊的用戶名變量 unset($_SESSION["passwrod"]); //刪除在Session中注冊的用戶密碼變量
提示:不要使用unset($_SESSION)刪除整個$_SESSION數(shù)組,這樣將不能再通過$_SESSION超全局?jǐn)?shù)組注冊變量了。但如果想把某個用戶在Session中注冊的所有變量都刪除,可以直接將數(shù)組變量$_SESSION賦上一個空數(shù)組。如下所示:$_SESSION=array(); //將某個用戶在Session中注冊的變量全部清除PHP默認(rèn)的Session是基于Cookie的,Session ID被服務(wù)器存儲在客戶端的Cookie中,所以在注銷Session時也需要清除Cookie中保存的Session ID,而這就必須借助setCookie()函數(shù)完成。
【示例】清除客戶端Cookie中保存的會話信息。在Cookie中,保存Session ID的Cookie標(biāo)識名稱就是Session的名稱,這個名稱是在php.ini中,通過session.name屬性指定的值。在PHP腳本中,可以通過調(diào)用session_name()函數(shù)獲取Ses-sion名稱。刪除保存在客戶端Cookie中的SessionID,代碼如下:
<?php if (isset($_COOKIE[session_name()])) { //判斷Cookie中是否保存Session ID setcookie(session_name(), '', time()-3600, '/'); //刪除包含Session ID的Cookie }?>
通過前面的介紹可以總結(jié)出來,Session的注銷過程共需要4個步驟。在下面的腳本文件de-stroy.php中,提供完整的4個步驟代碼,運行該腳本就可以關(guān)閉Session并銷毀與本次會話有關(guān)的所有資源。代碼如下:
<?php//第一步:開啟Session并初始化session_start();//第二步:刪除所有Session的變量,也可用unset($_SESSION[xxx])逐個刪除$_SESSION = array();//第三步:如果使用基于Cookie的Session,使用setCooike()刪除包含Session ID的Cookieif (isset($_COOKIE[session_name()])) { setcookie(session_name(), '', time()-42000, '/');}//第四步:最后徹底銷毀Sessionsession_destroy();?>