刪除某個(gè)session值可以使用PHP的unset函數(shù),刪除后就會(huì)從全局變量$_SESSION中去除,無(wú)法訪問(wèn)。
session_start(); $_SESSION['name'] = 'jobs'; unset($_SESSION['name']); echo $_SESSION['name']; //提示name不存在
如果要?jiǎng)h除所有的session,可以使用session_destroy函數(shù)銷毀當(dāng)前session,session_destroy會(huì)刪除所有數(shù)據(jù),但是session_id仍然存在。
session_start(); $_SESSION['name'] = 'jobs'; $_SESSION['time'] = time(); session_destroy();
值得注意的是,session_destroy并不會(huì)立即的銷毀全局變量$_SESSION中的值,只有當(dāng)下次再訪問(wèn)的時(shí)候,$_SESSION才為空,因此如果需要立即銷毀$_SESSION,可以使用unset函數(shù)。
session_start(); $_SESSION['name'] = 'jobs'; $_SESSION['time'] = time(); unset($_SESSION); session_destroy(); var_dump($_SESSION); //此時(shí)已為空
如果需要同時(shí)銷毀cookie中的session_id,通常在用戶退出的時(shí)候可能會(huì)用到,則還需要顯式的調(diào)用setcookie方法刪除session_id的cookie值。
unset($_SESSION['xxx']) 刪除單個(gè)session,unset($_SESSION['xxx']) 用來(lái)unregister一個(gè)已注冊(cè)的session變量。
其作用和session_unregister()相同。
session_unregister()在PHP5中已經(jīng)廢棄。
php 官方刪除session方式
<?php // 初始化session. session_start(); /*** 刪除所有的session變量..也可用unset($_SESSION[xxx])逐個(gè)刪除。****/ $_SESSION = array(); /***刪除sessin id.由于session默認(rèn)是基于cookie的,所以使用setcookie刪除包含session id的cookie.***/ if (isset($_COOKIE[session_name()])) { setcookie(session_name(), '', time()-42000, '/'); } // 最后徹底銷毀session. session_destroy(); ?>
使用unset刪除name的session值。
<?php session_start(); $_SESSION['name'] = 'jobs'; //在這里刪除name的session值 unset($_SESSION['name']); if (isset($_SESSION['name'])) { echo $_SESSION['name']; return; } echo 'session被銷毀';
徹底銷毀Session代碼如下所示:
<?php //開(kāi)啟 Session session_start(); // 刪除所有 Session 變量 $_SESSION = array(); //判斷 cookie 中是否保存 Session ID if(isset($_COOKIE[session_name()])){ setcookie(session_name(),'',time()-3600, '/'); } //徹底銷毀 Session session_destroy(); ?>
注意:使用 $_SESSION = array() 清空 $_SESSION數(shù)組的同時(shí),也將這個(gè)用戶在服務(wù)器端對(duì)應(yīng)的 Session 文件內(nèi)容清空。而使用 session_destroy()函數(shù)時(shí),則是將這個(gè)用戶在服務(wù)器端對(duì)應(yīng)的 Session 文件刪除。
session_destroy()結(jié)束當(dāng)前的會(huì)話,并清空會(huì)話中的所有資源。該函數(shù)不會(huì)unset(釋放)和當(dāng)前session相關(guān)的全局變量(globalvariables),也不會(huì)刪除客戶端的session cookie.PHP默認(rèn)的session是基于cookie的,如果要?jiǎng)h除cookie的話,必須借助setcookie()函數(shù)。
小結(jié):
session_destroy是注銷所有的session變量,并且結(jié)束session會(huì)話;
如果希望刪除一些session數(shù)據(jù),則可以使用unset()函數(shù)或session_destroy()函數(shù)。unset()函數(shù)的作用是釋放指定的session變量,
如對(duì)本文有疑問(wèn),請(qǐng)?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會(huì)為你解答!! 點(diǎn)擊進(jìn)入論壇