Cookie 是服務器存放在用戶瀏覽器的小型文本數據,每次請求同域名頁面時自動攜帶發送。PHP 通過 setcookie() 發送、$_COOKIE 超全局數組讀取。
setcookie() 必須在任何 HTML 輸出之前調用(包括空白字符)。<?php
// 1. 設置/更新 Cookie(必須在輸出前)
$cookieName = 'visit_count';
$expireTime = time() + 60 * 60 * 24 * 60; // 60 天後過期
if (isset($_COOKIE[$cookieName])) {
$count = (int)$_COOKIE[$cookieName] + 1;
} else {
$count = 1;
}
setcookie($cookieName, $count, $expireTime, '/'); // 路徑設為根目錄,全站有效
?>
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>訪問計數</title></head>
<body>
<h1>歡迎訪問!</h1>
<p>這是您第 <?php echo $count; ?> 次訪問本頁。</p>
<p>Cookie 將在 60 天后過期。</p>
</body>
</html>
<?php
$lastVisitCookie = 'last_visit';
$now = date('Y-m-d H:i:s');
if (isset($_COOKIE[$lastVisitCookie])) {
$last = $_COOKIE[$lastVisitCookie];
echo "您上次訪問時間:{$last}";
} else {
echo "這是您第一次訪問(或 Cookie 已過期/被清除)。";
}
setcookie($lastVisitCookie, $now, time() + 3600 * 24 * 30, '/'); // 30 天
?>
HttpOnly 旗標防 XSS 竊取:`setcookie(..., true)`(PHP 5.2+ 第 7 參數)。Secure 旗標:`setcookie(..., false, true)`。