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

PHP Cookie 處理函數 setcookie() 完整指南:建立、讀取、有效期、路徑、刪除

     編輯:PHP 綜合知識

Cookie 基本認知

伺服器留在客戶端的小型資料檔,用於識別用戶、儲存偏好。每次請求自動攜帶。
與 Session 差異:Cookie 存客戶端,Session 存伺服器端。

setcookie() 完整語法

bool setcookie(
    string $name,
    string $value = "",
    int $expire = 0,
    string $path = "",
    string $domain = "",
    bool $secure = false,
    bool $httponly = false
)

參數詳解

參數說明
name必填,Cookie 名稱
value值,空字串表示刪除
expireUnix 時間戳過期時間,0 或省略 = 會話級(關閉瀏覽器失效)
path生效路徑,預設 "/" 全站
domain生效域名,預設當前域
securetrue 時僅 HTTPS 傳輸
httponlytrue 時 JavaScript 無法存取(防 XSS)

建立 Cookie 範例

// 簡單建立
setcookie("lang", "zh-TW");

// 1 小時後過期
setcookie("token", $token, time() + 3600);

// 指定路徑、域名、僅 HTTPS、HttpOnly
setcookie("session_id", $sid, time()+86400, "/", ".example.com", true, true);

讀取 Cookie

// 必須在「其他頁面」或「重新整理後」才能讀到
echo $_COOKIE['lang']; // zh-TW

// 安全讀取
$lang = isset($_COOKIE['lang']) ? $_COOKIE['lang'] : 'en';

注意: setcookie() 後立即在同頁 $_COOKIE 取不到值,需下一次請求。

有效期設定技巧

setcookie("c1", "A", time() + 3600);        // 1 小時
setcookie("c2", "B", time() + 86400);       // 1 天
setcookie("c3", "C", mktime(23,59,59,12,31,2025)); // 指定日期
setcookie("c4", "D");                        // 會話級

路徑控制

setcookie('admin_token', $val, 0, '/admin'); // 僅 /admin 及子路徑傳送
// 根目錄不會攜帶此 Cookie,節省頻寬、提升安全

刪除 Cookie

// 設定過去時間
setcookie("lang", "", time() - 3600);

// 若建立時指定 path/domain/secure/httponly,刪除時必須完全一致
setcookie("token", "", time()-3600, "/", ".example.com", true, true);

安全最佳實踐

  • 敏感 Cookie 必設 httponly=true、secure=true(HTTPS 站點)
  • 設定 SameSite=Strict/Lax(PHP 7.3+ 支援 setcookie(..., ['samesite' => 'Lax']))
  • 不在 Cookie 存放敏感資料(密碼、Token 建議 Session 或 JWT)
  • 定期輪換 Session ID,防 Session Fixation
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved