建立 Cookie 陣列
<?php
setcookie('ICNet[Reg]', 'This is reg cookie', time() + 3600);
setcookie('ICNet[Active]', 'This is login cookie.', time() + 3600);
// 瀏覽器端實際發送:ICNet[Reg]=...; ICNet[Active]=...
?>
讀取 $_COOKIE 陣列
<?php
print_r($_COOKIE);
/* 輸出範例:
Array(
[ICNet] => Array(
[Reg] => This is reg cookie
[Active] => This is login cookie.
)
[PHPSESSID] => ...
)
*/
// 存取方式
echo $_COOKIE['ICNet']['Reg'];
echo $_COOKIE['ICNet']['Active'];
// 或先取出子陣列
$arr = $_COOKIE['ICNet'];
echo $arr['Reg'];
echo $arr['Active'];
?>
銷毀 Cookie 陣列
<?php
// 單獨刪除
setcookie('ICNet[Reg]', '', time() - 3600);
setcookie('ICNet[Active]', '', time() - 3600);
// 整組刪除(需逐鍵刪除,無單一指令刪除整組)
foreach ($_COOKIE['ICNet'] as $k => $v) {
setcookie("ICNet[$k]", '', time() - 3600);
}
?>
注意事項
- Cookie 總大小限制 4KB,陣列結構會增加開銷
- 子鍵名稱建議英數字底線,避免特殊字元編碼問題
- 安全性:敏感資料勿存 Cookie,改用 Session + 加密 Token
- 設定
HttpOnly、Secure、SameSite=Lax 參數(PHP 7.3+ setcookie() 支援 options 陣列)
現代寫法(PHP 7.3+)
setcookie('ICNet[Reg]', 'value', [
'expires' => time() + 3600,
'path' => '/',
'domain' => '',
'secure' => true, // 僅 HTTPS
'httponly' => true, // 阻止 JS 存取
'samesite' => 'Lax', // CSRF 防護
]);