php session刪除會話,有三個方法 unset(); session_destroy();

2015-11-14 12:32:32

刪除會話,有三個方法

1、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變量,

 

 

2、刪除多個會話$_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>";

?>

 

 

 

 

 

 

3、結束當前的會話:

session_destory();

 

 

1、出錯 :

<?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>";

?>

 

 

e7d72d16gw1ey0g61yniej20dg07l0t4.jpg

Wrong parameter count for session_destroy()

錯誤的參數計數session_destroy()

 

session_destroy();不需要添加參數 ,註銷代表的是當前 的會話

 

 

註意:

使用session_destroy();要與session_start();一起用不然會受到警告

 

 

2、出錯,覺得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>";

?>

e7d72d16gw1ey0g72ryj3j20f604oglx.jpg、

Warning: setcookie() expects parameter 1 to be string, array given

你給傳遞給strlen()的參數不是string類型的。

改為

 

 

 

結果還是顯示 瞭

 

 

 

 

原因 大解決:

1、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();

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *