首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 取得當前 Session ID:session_id() 與 SID 常數完整比較

     編輯:PHP 相關知識

前言

PHP 提供兩種方式取得目前 Session ID:session_id() 函數與 SID 常數。本文詳細比較差異、適用場景與常見誤區。

兩種方式對照

基本範例

<?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 程式設計有所幫助。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
特性session_id()SID 常數
型別函數常數(字串)
回傳值純 Session ID 字串session_name=session_id 格式(如 PHPSESSID=abc123)
需先 session_start()是是
可設定 Session ID是(傳入參數)否
主要用途讀取/設定 ID、傳遞給 API自動嵌入 URL/表單隱藏欄位(舊式無 Cookie 環境)