iT邦幫忙

2025 iThome 鐵人賽

DAY 19
0

昨天有介紹 Cookie,今天介紹 Session。

Session 是儲存在伺服器端的使用者資料,每個使用者瀏覽器會有一個 唯一的 Session ID,通常存放在 Cookie 裡。它的特點包括:

資料存在伺服器 → 比 Cookie 安全

可以存敏感資料(例如帳號、權限、購物車)

關閉瀏覽器或 Session 過期 → 資料消失

適合管理登入狀態、購物車、個人化設定等

剛剛說的是Session在瀏覽器的儲存位置
在 PHP 中,Session 的資料預設會存在伺服器的檔案系統裡(通常在 /tmp 資料夾,或 php.ini 裡設定的 session.save_path)。
除了檔案外,也可以將 Session 儲存在其他地方,方便系統擴充或提升效能:

資料庫:方便多伺服器共享,適合需要登入狀態同步的應用。

記憶體快取(Redis、Memcached):效能更快,適合大型網站或即時系統

<?php
session_start();

if(isset($_SESSION["visits"])){
    $_SESSION["visits"] += 1;
} else {
    $_SESSION["visits"] = 1;
}

echo "你已經訪問本站 " . $_SESSION["visits"] . " 次!";
?>

可以用上述程式碼測試 Session 和 Cookie 的差別,不過建議用無痕模式測試,因為現代瀏覽器(例如 Chrome)常有「恢復上次分頁」或「保留 Session Cookie」功能,所以即使關閉瀏覽器,Session 有時仍然存在。

注意:session_start() 和 setcookie() 必須放在 HTML 標籤前面,否則會出現錯誤

Cookie Session
存放地 使用者瀏覽器 伺服器端
過期 可設定,每次刷新可延長 固定,由伺服器端控制(gc_maxlifetime)
累加邏輯 每次刷新都可以用 setcookie() 延長過期時間 伺服器端 Session 過期時間固定,需要額外設定才會延長
安全性 較低,易被竄改或偷取 較高,敏感資料可存伺服器
適用場景 訪客偏好、簡單計數器 登入狀態、購物車、個人化設定

上一篇
【Day18】cookie
下一篇
【Day20】檔案處理
系列文
PHP 新手自學筆記20
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言