本教程第三部分深入探討如何利用 Cookie 在無資料庫環境下追蹤並識別使用者,結合 MySQL 自動遞增 ID 實作「記住我」功能。
瀏覽器在請求頁面前,會檢查該域名下是否有符合的 Cookie,若有則自動送至伺服器。伺服器端 PHP 腳本於輸出任何內容之前即可透過 setcookie() 設定 Cookie。
<?php
// 必須在 <HTML> 標籤之前
setcookie("CookieID", $USERID);
?>
<HTML><BODY>...</BODY></HTML>
setcookie() 接受六個參數:名稱、值、過期時間、路徑、域名、安全標誌。常用相對時間如 time()+3600(一小時後過期)。
PHP 自動將接收到的 Cookie 轉為同名變數(如 $CookieID),也可透過 $HTTP_COOKIE_VARS['CookieID'] 存取。
ALTER TABLE dbname
ADD COLUMN USERID INT(11) NOT NULL
PRIMARY KEY AUTO_INCREMENT;
<?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 值。
<?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 注入。HttpOnly、Secure、SameSite 旗標提升安全性。此機制可擴展為購物車識別、個人化推薦、單一登入(SSO)基礎等場景。