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

PHP Cookie 實現網頁訪問計數器

     編輯:PHP 綜合知識

Cookie 基礎知識

Cookie 是服務器存放在用戶瀏覽器的小型文本數據,每次請求同域名頁面時自動攜帶發送。PHP 通過 setcookie() 發送、$_COOKIE 超全局數組讀取。

關鍵規則

  • setcookie() 必須在任何 HTML 輸出之前調用(包括空白字符)。
  • 三要素:名稱、值、過期時間。
  • 未設置過期時間 = 會話級 Cookie,瀏覽器關閉即銷毀。

完整計數器實現

<?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 天
?>

瀏覽器禁用 Cookie 怎麼辦?

  • Session + URL 重寫:`session.use_trans_sid = 1` 或手動在鏈接/表單中傳遞 `PHPSESSID`。
  • 隱藏表單字段:在表單中攜帶識別標記。
  • LocalStorage / IndexedDB:現代瀏覽器客戶端存儲方案(需 JS 配合)。

安全提示

  • 敏感數據絕不存入 Cookie(如密碼、Token)。
  • 設置 HttpOnly 旗標防 XSS 竊取:`setcookie(..., true)`(PHP 5.2+ 第 7 參數)。
  • HTTPS 站點務必加 Secure 旗標:`setcookie(..., false, true)`。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved