PHP 會話
會話是一種儲存資訊(在變數中)以便跨多個頁面使用的機制。
與 cookie 不同,資訊不會儲存在使用者計算機上。
什麼是 PHP 會話?
當你使用一個應用程式時,你會開啟它,做一些更改,然後關閉它。這很像一個會話。計算機知道你是誰。它知道你何時啟動應用程式以及何時結束。但在網際網路上有一個問題:Web 伺服器不知道你是誰或你在做什麼,因為 HTTP 地址不維護狀態。
會話變數透過儲存使用者資訊來解決這個問題,這些資訊可以在多個頁面中使用(例如使用者名稱、喜歡的顏色等)。預設情況下,會話變數會一直保留到使用者關閉瀏覽器。
所以;會話變數儲存單個使用者的資訊,並可用於應用程式中的所有頁面。
提示:如果你需要永久儲存,你可能想將資料儲存在 資料庫 中。
啟動 PHP 會話
會話使用 session_start()
函式啟動。
會話變數使用 PHP 全域性變數:$_SESSION 設定。
現在,我們建立一個名為“demo_session1.php”的新頁面。在此頁面中,我們將啟動一個新的 PHP 會話並設定一些會話變數。
示例
<?php
// Start the session
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Set session variables
$_SESSION["favcolor"] = "green";
$_SESSION["favanimal"] = "cat";
echo "Session variables are set.";
?>
</body>
</html>
執行示例 »
注意: session_start()
函式必須是文件中的第一件事。在任何 HTML 標籤之前。
獲取 PHP 會話變數值
接下來,我們建立另一個名為“demo_session2.php”的頁面。從這個頁面,我們將訪問我們在第一個頁面(“demo_session1.php”)上設定的會話資訊。
請注意,會話變數不會單獨傳遞給每個新頁面,而是從我們為每個頁面開頭開啟的會話(session_start()
)中檢索。
另外請注意,所有會話變數值都儲存在全域性 $_SESSION 變數中。
示例
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Echo session variables that were set on previous page
echo "Favorite color is " . $_SESSION["favcolor"] . ".<br>";
echo "Favorite animal is " . $_SESSION["favanimal"] . ".";
?>
</body>
</html>
執行示例 »
顯示單個使用者會話所有會話變數值的另一種方法是執行以下程式碼:
示例
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
print_r($_SESSION);
?>
</body>
</html>
執行示例 »
它是如何工作的?它怎麼知道是我?
大多數會話會在使用者的計算機上設定一個使用者金鑰,看起來像這樣:765487cf34ert8dede5a562e4f3a7e12。然後,當在另一個頁面上開啟一個會話時,它會掃描計算機以查詢使用者金鑰。如果匹配,它會訪問該會話,否則,它會啟動一個新會話。
修改 PHP 會話變數
要更改會話變數,只需覆蓋它即可。
示例
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// to change a session variable, just overwrite it
$_SESSION["favcolor"] = "yellow";
print_r($_SESSION);
?>
</body>
</html>
執行示例 »
銷燬 PHP 會話
要刪除所有全域性會話變數並銷燬會話,請使用 session_unset()
和 session_destroy()
。
示例
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// remove all session variables
session_unset();
// destroy the session
session_destroy();
?>
</body>
</html>
執行示例 »