[PHP]Cookie說明與基礎練習

Cookie可以紀錄一些微量的資料在使用者的 瀏覽器上,以便使用者下次造訪時使用
像是把登入成功的使用者的帳號密碼記錄在cookie中
如此一來下次使用者造訪時就不需要再做一次登入網站的動作了
或是將購物車商品內容,以便最後付款



cookie也有一些限制,像是

  • 每個使用者的瀏覽器只能支援(存取)300個 Cookie

  • 每個瀏覽器只能針對同一個伺服器存取20個 Cookie

  • 每個Cookie的大小最多僅4kBytes的容量

  • 大部份瀏覽器可以把Cookie的功能關掉,若 關掉後Cookie就不能使用


使用cookie的方法
setCookie('name',[value] ,[expire]);

舉例來說 setcookie('userid','allen',date('U')+60);
會設定一個叫做userid而值為allen的cookie,存活時間為60秒

第一個簡單的練習是判斷cookie是否存在,存在就把值印出
否則設定cookie值。程式碼很簡單
if(isset($_COOKIE['user'])){
//判斷$_COOKIE['user']有沒有設定
$message = 'Hi,你是'.$_COOKIE['user'];
}else{
//沒有則設定$_Cookie['user'] = 'allen' 存在時間是60秒
setCookie('user','allen',date('U')+60);
$message = '我現在不知道你是誰下次就知道了';
}

接下來的下一個練習是,判斷使用者上站的次數
這邊有兩種寫法

第一種是直覺式的寫法
if(isset($_COOKIE['Time'])){
setcookie("Time",$_COOKIE['Time']+1);
} else {
setcookie("Time", 1);
}
echo "您的上站次數為:".$_COOKIE['Time'];

若已經上站過了,就把原有的cookie重新設定成員cookie+1
若沒上站過,就把cookie設成1
印出剛剛設定的cookie

第二種是比較進階的寫法
if(isset($_COOKIE['Time'])){
$times = $_COOKIE['Time']+1;
} else {
$times = 1;
}
echo "您的上站次數為:".$times;
setcookie("Time", $times);

既然要set兩次cookie,那乾脆用變數控制cookie值

這要先從echo開始看
印出上站次數為$times,那$times值為何?

首先先看若原本沒有設定cookie的時候
isset回傳值為FALSE執行else內容,$times = 1;得到$times的值為 1
也就是第一次上站,setcookie的值就是剛剛的$times
因為是第一次上站所以是 1 也是合情合理的

如此有了COOKIE之後,下一次執行網頁isset為TRUE
$times = 原有的COOKIE值+1,再傳給後面的echo出次數,並且重新設定cookie值

這次的檔案一樣放在 github 上面檔名分別是cookie.php和cookie_count.php
代表第一個練習和第二個練習

留言