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

PHP 與 MySQL 基礎教程(三):Cookie 追蹤使用者實戰

     編輯:PHP 綜合知識

Cookie 機制與使用者識別實作

本教程第三部分深入探討如何利用 Cookie 在無資料庫環境下追蹤並識別使用者,結合 MySQL 自動遞增 ID 實作「記住我」功能。

Cookie 運作原理

瀏覽器在請求頁面前,會檢查該域名下是否有符合的 Cookie,若有則自動送至伺服器。伺服器端 PHP 腳本於輸出任何內容之前即可透過 setcookie() 設定 Cookie。

設定 Cookie 範例

<?php
// 必須在 <HTML> 標籤之前
setcookie("CookieID", $USERID);
?>
<HTML><BODY>...</BODY></HTML>

setcookie() 接受六個參數:名稱、值、過期時間、路徑、域名、安全標誌。常用相對時間如 time()+3600(一小時後過期)。

Cookie 與變數自動轉換

PHP 自動將接收到的 Cookie 轉為同名變數(如 $CookieID),也可透過 $HTTP_COOKIE_VARS['CookieID'] 存取。

實作:為每位使用者分配唯一 ID

  1. 資料表新增自動遞增欄位:
    ALTER TABLE dbname
    ADD COLUMN USERID INT(11) NOT NULL
    PRIMARY KEY AUTO_INCREMENT;
  2. 插入使用者資料後寫入 Cookie:
    <?php
    mysql_connect("localhost", "username", "password");
    mysql_select_db("dbname");
    mysql_query("INSERT INTO tablename (first_name, last_name) VALUES ('$first_name', '$last_name')");
    setcookie("CookieID", mysql_insert_id(), time()+94608000, "/"); // 三年有效
    ?>

    mysql_insert_id() 取得剛插入記錄的 USERID,作為 Cookie 值。

  3. 讀取 Cookie 並歡迎使用者:
    <?php
    print $CookieID; // 顯示 ID
    mysql_connect("localhost", "username", "password");
    mysql_select_db("dbname");
    $selectresult = mysql_query("SELECT * FROM tablename WHERE USERID = '$CookieID'");
    $row = mysql_fetch_array($selectresult);
    echo "歡迎你的光臨 " . $row['first_name'] . "!";
    ?>

安全與最佳實務提醒

  • 生產環境請改用 mysqli 或 PDO,並採用預處理語句防止 SQL 注入。
  • Cookie 值建議加密或簽名,避免竄改。
  • 設定 HttpOnly、Secure、SameSite 旗標提升安全性。
  • 提供使用者登出機制,清除 Cookie 並銷毀 Session。

延伸應用

此機制可擴展為購物車識別、個人化推薦、單一登入(SSO)基礎等場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved