首頁 > 後端開發 > php教程 > PHP中session_unset()和session_destroy()的差別是什麼

PHP中session_unset()和session_destroy()的差別是什麼

青灯夜游
發布: 2023-04-05 15:52:02
原創
5211 人瀏覽過

在PHP中有兩個非常相似的函數session_unset()和session_destroy(),它們兩者都是用於刪除註冊到會話的所有變量,那麼它們之間有什麼差異?以下這篇文章就來跟大家介紹一下session_unset()和session_destroy()的差別,希望對大家有幫助。 【影片教學推薦:PHP教學

PHP中session_unset()和session_destroy()的差別是什麼

#session_unset()函數

session_unset()函數只刪除會話中的變量,會話仍然存在;它只會截斷資料。

基本語法:

1

session_unset( void )

登入後複製
session_destroy()函數

session_destroy()
函數會銷毀與當前會話關聯的所有資料;但它不會取消設定與會話關聯的任何全域變量,也不會取消設定會話cookie。

基本語法:

1

session_destroy( void )

登入後複製

PHP中session_unset()和session_destroy()的差別是什麼

相關專題推薦

php session(包含圖文、影片、案例)

session_unset()和session_destroy()的差異

PHP中session_unset()和session_destroy()的差別是什麼

下面透過程式碼範例來看看session_unset()和session_destroy()的差異

首先使用session.php檔案儲存會話

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<?php

header("content-type:text/html;charset=utf-8");

// 启动会话

session_start();

   

//显示会话ID

echo session_id();

   

// 检查会话名称是否存在

if( isset($_SESSION[&#39;name&#39;]) ) {

    echo &#39;<br>&#39; . &#39;会话还有效.&#39;;

}

else {

    echo &#39;<br>&#39; . &#39;会话已销毁&#39;;

}

   

$_SESSION[&#39;name&#39;] = &#39;PHP中文网!&#39;;

$_SESSION[&#39;website&#39;] = &#39;www.php.cn&#39; ;

   

?>

登入後複製
PHP中session_unset()和session_destroy()的差別是什麼輸出:

#範例1:使用session_unset()函數

在使用session_unset()函數之前,先會顯示name和website。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

<?php

header("content-type:text/html;charset=utf-8");

// 启动会话

session_start();

   

// 检查会话名称是否存在

if( isset($_SESSION[&#39;name&#39;]) ) {

    echo &#39;<br>&#39; . &#39;会话还有效&#39;.&#39;<br>&#39;;

}

else {

    echo &#39;<br>&#39; . &#39;会话已销毁&#39;;

}

echo $_SESSION[&#39;name&#39;].&#39;<br>&#39;;

echo $_SESSION[&#39;website&#39;].&#39;<br>&#39;;

   

?>

登入後複製
PHP中session_unset()和session_destroy()的差別是什麼輸出:

PHP中session_unset()和session_destroy()的差別是什麼使用session_unset()函數後,它破壞了正在使用的'name'和'website'之類的變數。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<?php

header("content-type:text/html;charset=utf-8");

// 启动会话

session_start();

   

// 检查会话名称是否存在

if( isset($_SESSION[&#39;name&#39;]) ) {

    echo &#39;<br>&#39; . &#39;会话还有效&#39;.&#39;<br>&#39;;

}

else {

    echo &#39;<br>&#39; . &#39;会话已销毁&#39;;

}

echo $_SESSION[&#39;name&#39;].&#39;<br>&#39;;

echo $_SESSION[&#39;website&#39;].&#39;<br>&#39;;

// 使用session_unset()函数

session_unset();

?>

登入後複製

輸出:

範例2:使用session_destroy()函數
######session_destroy()函數會破壞整個會話而不是破壞變數。呼叫session_start()時,PHP會在瀏覽器中設定會話cookie。我們還需要刪除cookie以完全破壞會話。 ###

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

<?php

header("content-type:text/html;charset=utf-8");

// 启动会话

session_start();

   

// 检查会话名称是否存在

if( isset($_SESSION[&#39;name&#39;]) ) {

    echo &#39;<br>&#39; . &#39;会话还有效&#39;.&#39;<br>&#39;;

}

else {

    echo &#39;<br>&#39; . &#39;会话已销毁&#39;;

}

   

echo $_SESSION[&#39;name&#39;].&#39;<br>&#39;;

echo $_SESSION[&#39;website&#39;].&#39;<br>&#39;;

   

$_SESSION = array();

   

// 如果想要终止会话,需要删除会话cookie。

// 注意:这将破坏会话,而不仅仅是会话数据!

if (ini_get("session.use_cookies")) {

    $params = session_get_cookie_params();

    setcookie(session_name(), &#39;&#39;, time() - 42000,

        $params["path"], $params["domain"],

        $params["secure"], $params["httponly"]

    );

}

   

// 最后,销毁会话。

session_destroy();

   

?>

登入後複製
###輸出:###############說明:執行echo session_id();語句時,可以看到有一個不同的會話ID,這表示上一個會話已被銷毀,所有變數和cookie也已銷毀。因為所有變數都被破壞了,所以當偵測會話是否存在時會轉到else條件輸出'會話已銷毀'。 ###############註:如果希望終止會話,也請刪除會話cookie。這將破壞會話,而不僅僅是會話資料。 #########相關學習推薦:###PHP程式設計從入門到精通##########

以上是PHP中session_unset()和session_destroy()的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板