刪除某個session值可以使用PHP的unset函數,刪除后就會從全局變量$_SESSION中去除,無法訪問。session_start();
$_SESSION['name']?=?'jobs';
unset($_SESSION['name']);
echo?$_SESSION['name'];?//提示name不存在
如果要刪除所有的session,可以使用session_destroy函數銷毀當前session,session_destroy會刪除所有數據,但是session_id仍然存在。session_start();
$_SESSION['name']?=?'jobs';
$_SESSION['time']?=?time();
session_destroy();
值得注意的是,session_destroy并不會立即的銷毀全局變量$_SESSION中的值,只有當下次再訪問的時候,$_SESSION才為空,因此如果需要立即銷毀$_SESSION,可以使用unset函數。session_start();
$_SESSION['name']?=?'jobs';
$_SESSION['time']?=?time();
unset($_SESSION);
session_destroy();
var_dump($_SESSION);?//此時已為空
如果需要同時銷毀cookie中的session_id,通常在用戶退出的時候可能會用到,則還需要顯式的調用setcookie方法刪除session_id的cookie值。
unset($_SESSION['xxx']) 刪除單個session,unset($_SESSION['xxx']) 用來unregister一個已注冊的session變量。
其作用和session_unregister()相同。
session_unregister()在PHP5中已經廢棄。
php 官方刪除session方式<?php
//?初始化session.
session_start();
/***?刪除所有的session變量..也可用unset($_SESSION[xxx])逐個刪除。****/
$_SESSION?=?array();
/***刪除sessin?id.由于session默認是基于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代碼如下所示:
//開啟?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數組的同時,也將這個用戶在服務器端對應的 Session 文件內容清空。而使用 session_destroy()函數時,則是將這個用戶在服務器端對應的 Session 文件刪除。
session_destroy()結束當前的會話,并清空會話中的所有資源。該函數不會unset(釋放)和當前session相關的全局變量(globalvariables),也不會刪除客戶端的session cookie.PHP默認的session是基于cookie的,如果要刪除cookie的話,必須借助setcookie()函數。
小結:
session_destroy是注銷所有的session變量,并且結束session會話;
如果希望刪除一些session數據,則可以使用unset()函數或session_destroy()函數。unset()函數的作用是釋放指定的session變量,