PHP Conference Japan 2024

session_abort

(PHP 5 >= 5.6.0, PHP 7, PHP 8)

session_abort捨棄工作階段陣列變更並結束工作階段

說明

session_abort(): 布林值

session_abort() 結束工作階段但不儲存資料。因此,工作階段資料中的原始值會被保留。

參數

此函式沒有參數。

回傳值

成功時回傳 true,失敗時回傳 false

更新日誌

版本 說明
7.2.0 此函式的回傳型別現在是 布林值 (bool)。之前,它是 空值 (void)

另請參閱

新增註記

使用者貢獻的註記 2 則註記

parsa dot mhn at outlook dot com
9 年前
為了更好地理解此函式,您應該先執行以下程式碼

<?php
// 首先選擇您的路徑,例如 C:/session
session_save_path('您的路徑放在這裡!');

session_start();

// 定義一個工作階段變數
$_SESSION['Key'] = 'value' ;

var_dump(session_status() == PHP_SESSION_ACTIVE);

// 輸出:bool(True),表示您有一個開啟的工作階段!
?>

然後您應該執行以下程式碼

<?php
// 選擇您在第一部分使用的路徑
session_save_path('您的路徑放在這裡');

session_start();

// 如果您想關閉工作階段並將原始資料保留在您的路徑中,您應該使用 session_abort()
session_abort();

var_dump(session_status()== PHP_SESSION_ACTIVE);

// 輸出:bool(False),表示您的工作階段已關閉。
?>

因此,如果您有一個開啟的工作階段,session_abort() 將會簡單地關閉它,而不會影響外部工作階段資料,因此您可以再次從您選擇的路徑重新載入您的資料。
mhd dot nickz13 at gmail dot com
6 年前
session_abort() 會關閉目前的工作階段並捨棄套用到目前頁面中工作階段陣列的變更,它不會刪除工作階段檔案
讓我用一個例子來說明。
頁面 1.php
<?php
session_start
();
$_SESSION['city']="Sydney";
echo
"<a href=\"2.php\"> page2</a>";
?>
當您開啟這個頁面時,會在伺服器上建立一個 session 檔案(要找出 session 檔案的儲存位置,請執行 "echo session_save_path()"),檔案名稱為 session_id,內容為以下變數:

  sess_o22iabs75j93uhc7i4jf1lecjk  (檔案名稱)
city|s:6:"Sydney";               (內容)

如果我們前往包含以下程式碼的 2.php:

<?php
session_start
();
$_SESSION['country']="Australia";
echo
session_encode();
session_abort();
session_start();
echo
"<br>".session_encode();
?>

當執行 session_abort 時,session 會被關閉,並且此處的變更,也就是 Session 陣列中的 'country' 元素,將會被捨棄。

輸出:
city|s:6:"Sydney";country|s:9:"Australia";
city|s:6:"Sydney";
To Top