iT邦幫忙

2025 iThome 鐵人賽

DAY 18
0

cookie在使用者使用網站時一定常常遇到詢問要不要存取cookie,他就像一個瀏覽器裡的小紙條,用來儲存網站資料,存放位置在使用者的瀏覽器內,跟session有很大的關連,但今天就先只講cookie

cookie的安全性較低,適合存不敏感的資料

原因如下:
Cookie 儲存在使用者端 → 容易被竄改或偷取
Cookie 本身沒有加密他是明文傳輸 → 需配合 HTTPS、HttpOnly、Secure、SameSite
敏感資料不建議直接存在 Cookie,應該用 Session 儲存在伺服器

聽完之後或許會覺得cookie很不安全很不好,但是現今很多網站都會使用cookie來記錄不敏感的資料,讓使用者在下次使用該網站時,能夠保有上次的紀錄。

那cookie在php怎麼使用?
在 PHP 裡使用 Cookie,主要用途就是 讓網站「記住使用者的狀態或偏好」,方便後續操作或改善使用者體驗

cookie有分為 具有效期以及沒有效期

類型 有效期限 特性
Session Cookie 沒設定 瀏覽器關閉就消失
Persistent Cookie 設定 關閉瀏覽器也會保留,直到過期

看一下 Persistent Cookie

<?php
// 讀取 Cookie
if(isset($_COOKIE["visits"])){
    $visits = $_COOKIE["visits"] + 1;
} else {
    $visits = 1;
}

// 設定 Cookie,有效期 1 天
setcookie("visits", $visits, time() + 86400, "/");

echo "你已經訪問本站 " . $visits . " 次!";
?>

可以實際執行後端程式碼 在瀏覽器,會看到每次刷新頁面次數都會一直往上增加,因為登入資料被記錄了,/表示該 Cookie 在整個網站範圍內有效,86400為1天,因為php的time()時間單位為秒

可以把這行改成3秒,實際執行後端在重整會發現cookie的記憶變成只有3秒就會清掉了

setcookie("visits", $visits, time() + 3, "/");

這裡有個重點筆記:
每次刷新網頁,time() 都是 現在時間
time() + 86400 → 代表「從現在起 1 天後過期」
所以每次都會 重置過期時間,變成「從你最後一次訪問算起的 1 天」

好處:
只要使用者在一天內持續訪問,Cookie 永遠不會過期
這對訪客計數器或自動登入通常是 好事,因為希望 Cookie 保持有效


上一篇
【Day17】表單驗證 (XXS攻擊)
下一篇
【Day19】session
系列文
PHP 新手自學筆記20
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言