跳轉到內容

PHP 和 MySQL 程式設計/會話處理

來自華夏公益教科書

HTML 和 PHP 是“無狀態”語言。這意味著它們無法在頁面之間保留狀態。為了解決這個嚴重的限制,我們使用會話。在會話中,會話變數儲存在 web 伺服器上的檔案中,因此可以在多個頁面之間訪問。

開始會話

[編輯 | 編輯原始碼]

在我們開始使用會話變數之前,我們需要開始一個會話。這需要在每個使用會話變數的頁面上完成。需要注意的是,會話必須在任何內容輸出之前開始。以下是啟動會話的程式碼

<?php
session_start();
?>

請確保在 "<?php"(php 開始標籤)之前沒有空格,因為這會導致錯誤!

值得注意的是,伺服器區分同時實現的多個會話的方式是透過會話 ID。當建立一個唯一的會話時,它會被分配一個會話 ID,瀏覽器會保留該 ID,並用來讓 web 伺服器知道要使用哪個會話。

寫入會話變數

[編輯 | 編輯原始碼]

建立一個會話後,變數可以儲存在$_SESSION[]陣列變數中。以下是一個示例

session_start();
$_SESSION['user_name'] = "Administration";

檢索會話變數

[編輯 | 編輯原始碼]

建立一個會話並存儲變數後,可以從$_SESSION[]陣列中檢索它們。以下是一個示例

session_start();
if (isset($_SESSION['user_name'])){
   $user_name = $_SESSION['user_name'];
   print $user_name;
}

上面的例子首先開始一個會話,然後檢查會話變數 'user_name' 是否已建立(使用isset()函式),如果已經建立,則將它的值賦值給$user_name,並將其列印到螢幕上。

銷燬會話

[編輯 | 編輯原始碼]

要銷燬會話,我們使用session_destroy()函式。這在我們要(例如)登出 web 應用程式的使用者時很有用。因此,我們將使用以下程式碼

session_start();
session_destroy();

注意,我們需要首先開始會話,然後再銷燬它。這是因為該session_destroy()函式會銷燬當前活動的會話。


華夏公益教科書