2015-11-14 12:32:32
php
刪除會話,有三個方法數組
一、unset();
刪除單個會話
<?php
session_register();
$_SESSION["admin"]="aa";
if(!empty($_SESSION['admin'])){
$myvalue=$_SESSION['admin'];
echo $myvalue;
}
//刪除session,一個個地刪除的
unset($_SESSION["admin"]);
echo $_SESSION['admin'];
?>
只能顯示 一個,說明,刪除了session
注意:
unset()不能夠一次註銷整個數組,這樣會禁止整個會話功能 ,
如:unset($_SESSION)將全局變量$_SESSION銷燬,並且沒有辦法將其恢復 ,用戶也不能再註冊 $_SESSION變量,
二、刪除多個會話$_SESSION=array();
//刪除多個會話,把一個空數組給$_SESSION,把以前的值覆蓋了,這樣並非將$_SESSION銷燬 ,還能夠從新賦值
<?php
session_register();
$_SESSION["admin"]="aa";
$_SESSION['name']="葉凌月";
$_SESSION['age']=16;
echo "<pre>";
print_r($_SESSION);
echo "</pre>";
//刪除多個會話,把一個空數組給$_SESSION,把以前的值覆蓋了,這樣並非將$_SESSION銷燬 ,還能夠從新賦值
$_SESSION=array();
echo "<pre>";
print_r($_SESSION);
echo "</pre>";
?>
三、結束當前的會話:
session_destory();
一、出錯 :
<?php
session_start();
$_SESSION["admin"]="aa";
$_SESSION['name']="葉凌月";
$_SESSION['age']=16;
echo "<pre>";
print_r($_SESSION);
echo "</pre>";
//結束當前會話
session_destroy($_SESSION);
//session_unset($_SESSION);
echo "<pre>";
print_r($_SESSION);
echo "</pre>";
?>
Wrong parameter count for session_destroy()
錯誤的參數計數session_destroy()
緣由 :
session_destroy();不須要添加參數 ,註銷表明的是當前 的會話
注意:
使用session_destroy();要與session_start();一塊兒用否則會受到警告
二、出錯,以爲session_destroy();
不起做用,爲何仍是會把$_SESSION的值顯示 ,是不是註銷了還保存有一份在cookie裏呢,可是沒有建立cookie呀,無論先試試
<?php
session_start();
$_SESSION["admin"]="aa";
$_SESSION['name']="葉凌月";
$_SESSION['age']=16;
setcookie($_SESSION,"",time()-1);
//結束當前會話
session_destroy();
echo "<pre>";
print_r($_SESSION);
echo "</pre>";
?>、
Warning: setcookie() expects parameter 1 to be string, array given
你給傳遞給strlen()的參數不是string類型的。
改成
結果仍是顯示 了
緣由 大解決:
一、session 是一個會話,在session_start() 的時候創建。
2、$_SESSION 是一個全局數組,和其餘的全局數組沒有任何區別。只是php在建立一個會話的時候,會順便建立一個全局數組來保存會話的內容,這個數組又恰好叫$_SESSION,和咱們本身去建立的其餘數組沒有什麼不同。
3、session_start() 執行的時候,開啓了會話,首先是若是該會話沒有被建立,則在系統的tmp目錄中建立了session文件(默認,可自定義),而且在當前會話的執行腳本建立全局數組$_SESSION,這時的$_SESSION是一個空數組。若是會話存在,則讀取session文件中的內容,創建$_SESSION數組。
4、session_destroy() ,手冊中明確的說道:destroys all of the data associated with the current session. It does not unset any of the global variables associated with the session, or unset the session cookie. To use the session variables again, session_start() has to be called.
不會刪除 session 的全局變量和 session相關cookie,只是結束了此次會話。做爲一個普普統統的全局變量,
若是咱們不須要樂得話,就將他 unset() 掉。若是想再次開啓會話,就須要再一次session_start(),可是session_start() 從新創建會話,會從新初始化$_SESSION數組,session_start()以後$_SESSION 就又是一個空數組了
<?php
session_start();
$_SESSION["admin"]="aa";
$_SESSION['name']="葉凌月";
$_SESSION['age']=16;
//結束當前會話
session_destroy();
?>
<?php
session_start();
echo "<pre>";
print_r($_SESSION);
echo "</pre>";
?>
修改下
總結 :
session_destroy();只是僅僅結束當前會話,並且是用以前要與session_start();一塊兒用,session_start();是初始化變量$_SESSION至關於清除了數組裏的變量
還有session_destory();與session_unset();獲得的結果不同,
要同樣,session_destroy();從新啓動一次,session_start();cookie