| 特性 | session_id() | SID 常數 |
| 型別 | 函數 | 常數(字串) |
| 回傳值 | 純 Session ID 字串 | session_name=session_id 格式(如 PHPSESSID=abc123) |
| 需先 session_start() | 是 | 是 |
| 可設定 Session ID | 是(傳入參數) | 否 |
| 主要用途 | 讀取/設定 ID、傳遞給 API | 自動嵌入 URL/表單隱藏欄位(舊式無 Cookie 環境) |
基本範例
<?php
session_start();
echo "session_id(): " . session_id() . "\n"; // 純 ID
echo "SID: " . SID . "\n"; // PHPSESSID=abc123
// 在 URL 中自動攜帶 SID(無 Cookie 時)
echo "下一頁";
?>
進階:自訂 Session ID
<?php
// 必須在 session_start() 之前呼叫
session_id('my-custom-id-123');
session_start();
echo session_id(); // my-custom-id-123
?>
自訂 ID 需符合驗證規則(字母數字、逗號、減號),否則會產生新 ID。
常見誤區
- ❌ 以為
SID 只有 ID → 實際包含 name=value,直接當 ID 用會出錯。
- ❌ 未
session_start() 就讀取 → 兩者皆回傳空字串。
- ❌ 將
SID 寫入資料庫當 ID → 應存 session_id()。
現代最佳實務
- 預設使用 Cookie 傳遞 Session ID(
session.use_cookies=1、session.use_only_cookies=1),不需手動處理 SID。
- API 服務改用 Token (JWT) 或 API Key,無需 Session。
- 若必須支援無 Cookie 客戶端,使用
session_id() 手動管理透明傳遞。
總結
session_id() 為核心 API,SID 為舊式相容產物。現代專案以 Cookie 為主,理解差異即可避免誤用。希望本文對您的 PHP 程式設計有所幫助。
- 上一篇文章: PHP 基本 HTTP 認證實作:.htaccess 替代方案與安全最佳實務
- 下一篇文章: PHP Session 儲存資料:$_SESSION 超全域陣列完整操作指南
Copyright ©
程式碼之家 All Rights Reserved