PHP 中的 Session 用途與實踐範例:完整指南

本篇 ShengYu 介紹 PHP 中的 Session 用法與範例,在當今的網路應用程式中,會話管理是一個關鍵組成部分。PHP 中的 $_SESSION 是一個強大的工具,讓開發者可以在不同的網頁之間儲存和共享使用者資料。本指南將詳細介紹 PHP 中的會話用途及實踐範例,幫助您在項目中有效使用會話。

什麼是 PHP 中的 Session?

會話(Session)是一個臨時的資料儲存機制,用於在使用者瀏覽不同的網頁時,保持使用者資料的持久性。在 PHP 中,$_SESSION 是一個超全域陣列,用於儲存會話資料。會話資料儲存在伺服器上,而使用者端則透過一個唯一的會話 ID 來識別。

會話的主要用途

  1. 保持使用者登入狀態:當使用者登錄到一個網站時,會話可以保存使用者的登入狀態,這樣在使用者瀏覽不同頁面時不需要重新登錄。
  2. 保存使用者首選項:會話可以保存使用者的設定和首選項,比如語言選擇、顏色主題等。
  3. 暫存表單資料:在多步驟表單中,可以使用會話來保存每一步的資料,直到使用者完成所有步驟。
  4. 購物車:在電子商務網站中,會話可以用來保存使用者的購物車內容,直到使用者結帳。

如何使用 PHP 中的 Session

1. 開始會話

在使用會話之前,需要先啟動會話。這通常是在每個頁面的開頭進行的:

1
2
3
<?php
session_start();
?>

2. 設定會話變數

可以將資料儲存到會話中,透過給 $_SESSION 陣列賦值:

1
2
3
4
5
<?php
session_start();
$_SESSION['username'] = 'JohnDoe';
$_SESSION['email'] = 'john.doe@example.com';
?>

3. 讀取會話變數

在需要使用會話資料的地方,可以讀取 $_SESSION 陣列中的值:

1
2
3
4
5
<?php
session_start();
echo 'Username: ' . $_SESSION['username']; // 輸出:Username: JohnDoe
echo 'Email: ' . $_SESSION['email']; // 輸出:Email: john.doe@example.com
?>

4. 刪除會話變數

可以使用 unset() 函式來刪除會話中的某個變數:

1
2
3
4
<?php
session_start();
unset($_SESSION['email']);
?>

5. 銷毀會話

如果需要刪除所有會話資料並結束會話,可以使用 session_destroy() 函式:

1
2
3
4
<?php
session_start();
session_destroy();
?>

範例:簡單的登入系統

以下是一個簡單的登入系統範例,使用會話來保存和檢查使用者的登入狀態。

login.php

這個頁面包含一個基本的登入表單。當使用者送出表單時,會檢查使用者名和密碼是否對應,如果對應,則設定會話變數並重導向到歡迎頁面。

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
<?php
session_start();
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$username = $_POST['username'];
$password = $_POST['password'];

// 假設使用簡單的硬編碼認證
if ($username == 'admin' && $password == 'password') {
$_SESSION['loggedin'] = true;
$_SESSION['username'] = $username;
header('Location: welcome.php');
exit;
} else {
$error = 'Invalid username or password';
}
}
?>
<!DOCTYPE html>
<html>
<body>
<form method="POST">
Username: <input type="text" name="username" required><br>
Password: <input type="password" name="password" required><br>
<input type="submit" value="Login">
</form>
<?php if (isset($error)) echo $error; ?>
</body>
</html>

welcome.php

這個頁面是使用者登入後的歡迎頁面。如果使用者沒有登入,會重導向回登入頁面。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
session_start();
if (!isset($_SESSION['loggedin'])) {
header('Location: login.php');
exit;
}
?>
<!DOCTYPE html>
<html>
<body>
<h1>Welcome, <?php echo $_SESSION['username']; ?>!</h1>
<a href="logout.php">Logout</a>
</body>
</html>

logout.php

這個頁面用於使用者登出,銷毀會話並重導向回登入頁面。

1
2
3
4
5
6
<?php
session_start();
session_destroy();
header('Location: login.php');
exit;
?>

結論

PHP 中的會話功能是一個強大且靈活的工具,能夠在不同頁面之間共享資料,實現使用者狀態保持、資料儲存和跨頁面資料共享。透過上面的範例,您可以看到如何在您的應用程式中實現會話管理。

以上就是 PHP Session 用途與實踐範例介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!

其它相關文章推薦
如果你想學習 PHP 相關技術,可以參考看看下面的文章,
PHP 和 PDO 進行資料庫操作
PHP $_POST 變數用途、語法與實用範例詳解
深入理解 PHP 中的 isset 用法、範例及最佳實踐
PHP substr 函式全面解析與應用範例