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