接下來的這部分要介紹 PHP 的 Cookies
先來簡單介紹一下 Cookie 吧
Cookie 是一個很小的檔案,透過伺服器嵌入到使用者的電腦裡
而透過存放在 Cookie 裡面的資訊,可以讓我們了解到使用者有過哪些操作行為,正所謂凡走過必留下痕跡就是像 Cookie 這樣的應用~
舉例來說…
我們若有瀏覽一些網拍的網站的話,之後就常常會在瀏覽其他網頁的時候,看到曾經瀏覽過的商品出現在旁邊的廣告欄位..
這就是 Cookie 的應用
而一般也因為 Cookie 是存放在使用者的電腦裡,考量到安全性的疑慮
所以不會在 Cookie 裡面存放太過隱密的資訊,避免洩漏重要的資料~
簡單介紹完後,下面就分別來介紹 PHP Cookie 的 CRUD 吧~
1. Create
在 PHP 當中提供兩種函式去建立 Cookie
分別是 setcookie 和 setrawcookie
這邊先提一下!
其實兩者在參數傳遞的部分是相同的
唯一的差異在於是否會對 URL 進行編碼
使用 setcookie 的時候會自動對 URL 編碼;而使用 setrawcookie 則不會~
在一般的情況下,我們都會使用 setcookie 為主
不過有部分的瀏覽器,像是 firefox 這些在讀取編碼過的 URL 會發生問題
所以這種情況下就得要使用 setrawcookie 才可以順利建立!!!
而底下的介紹會以 setcookie 為主~
先來介紹一下 setcookie 可以傳入的參數
|參數名稱|型態|介紹|
|:——-|:–:|:–:|
|Name|String|Cookie 名稱|
|Value|String|Cookie 存放的數值|
|Expire|Integer|Cookie 的過期時間|
|Path|String|有效可以存取 Cookie 的網域|
|Domain|String|Cookie 存放的數值|
|Secure|Boolean|設定是否只能以 https 的方式傳送 Cookie|
|Httponly|Boolean|設定是否只能在 server-side 存取 Cookie,拒絕使用 Javascript 等腳本存取|
這些參數當中只有名稱和數值是必填,其餘的參數都有預設值~
接著就來看看範例吧!
1 | setcookie('name', 'Jason'); |
特別要注意的是
Cookie 屬於 http 標頭的一部分,所以須要在資料送給瀏覽器之前就建立 Cookie
換句話說,就是要在 html 的 標簽之前呼叫這兩種函式去建立 Cookie 才行~
2. Retrieve
至於 PHP 的 Cookie 會全部都存放在 $_COOKIE 這個全域變數中
其實在前一小節已經有偷偷暴露出取得 Cookie 的方法了~
使用陣列的方式,可以取得對應 Cookie 名稱的 Cookie~
$_COOKIE[‘name’] 像這樣子就是取得名稱是 name 的 Cookie~
而若是 Cookie 不存在的話,也會像空陣列一樣返回 NULL 值
3. Update
而修改 Cookie 數值的方式也同樣是使用 setcookie 或是 setrawcookie
使用相同的 Cookie 名稱進行賦值的話,就會修改已存在 Cookie 的數值了~
是不是非常簡單呢~
要注意因為 cache 的關係導致顯是結果會有點誤差
建議可以使用 chrome cookie 擴充功能或是使用無痕瀏覽~
1 | setcookie('name', 'Jason'); |
4. Delete
而刪除 Cookie 的方法也可以說成是讓 Cookie 過期
還記得前面曾經提過在 setcookie 當中有一個 expire 參數嗎?
它代表的是這個 Cookie 的有效使用期限
當我們將特定 Cookie 的有效使用期間改成過去的時間 (也就是負值),那就代表將這個 Cookie 給刪除了~
1 | setcookie('name', 'Jason'); |