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

PHP Cookie 完整指南:設置、讀取與實戰應用

     編輯:PHP 相關知識

Cookie 工作原理

Cookie 是瀏覽器存儲在用戶端的小型文本數據。當瀏覽器請求頁面前,會先檢查該域名下是否有匹配的 Cookie,若有則隨請求發送至服務器。服務器據此識別用戶、提供個性化內容(如 Amazon 的推薦頁面)。

設置 Cookie:setcookie() 詳解

必須在輸出任何 HTML 內容前調用,通常置於 <head> 區域:

<?php
setcookie("CookieID", $USERID);
?>
<html><body>...</body></html>

setcookie() 接受六個參數:

參數說明
名稱字符串,必填,不可含冒號、逗號、空格。僅提供此參數則刪除該 Cookie。
值通常為字符串變量,可用 "" 跳過設置。
過期時間Unix 時間戳。省略或 0 表示會話級(瀏覽器關閉失效)。常用相對時間:time()+3600 表示 1 小時後過期。
路徑匹配路徑,"/" 表示整個域名有效。注意 PHP 與 Netscape 定義順序相反。
域名需以點開頭,如 ".example.com",至少包含兩個點才被接受。
安全標誌1 僅 HTTPS 傳輸,0 或省略允許 HTTP。

讀取 Cookie

PHP 自動將接收到的 Cookie 轉為同名變量(如 $CookieID),也可通過超全局數組訪問:

echo $CookieID;                    // 直接變量
echo $_COOKIE['CookieID'];         // 推薦方式(PHP 4.1.0+)
echo $HTTP_COOKIE_VARS['CookieID']; // 老版本寫法

實戰案例:用戶自動登錄

結合 MySQL AUTO_INCREMENT 主鍵作為唯一用戶標識:

ALTER TABLE users
ADD COLUMN uid INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT;

用戶註冊後,將生成的 uid 寫入 Cookie(有效期 3 年):

<?php
mysql_connect("localhost", "user", "pass");
mysql_select_db("mydb");
mysql_query("INSERT INTO users (username) VALUES ('$username')");
setcookie("CookieID", mysql_insert_id(), time()+94608000, "/");
?>

後續訪問時自動識別:

<?php
if (isset($_COOKIE['CookieID'])) {
    $uid = $_COOKIE['CookieID'];
    $res = mysql_query("SELECT username FROM users WHERE uid=$uid");
    $row = mysql_fetch_assoc($res);
    echo "歡迎回來,{$row['username']}!";
} else {
    // 顯示登錄/註冊表單
}
?>

最佳實踐建議

  • 敏感數據勿直接存 Cookie,應存會話 ID,數據放服務端 Session。
  • 設置 HttpOnly 標誌防 XSS(PHP 5.2+ 支持 setcookie 第 7 參數)。
  • 關鍵操作(修改密碼、支付)需重新驗證身份,不僅依賴 Cookie。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved