Cookie 的使用

 

Cookie 的使用

注意,當於單一 html 檔直接執行時,Cookie 將無作用;

必須於 server 上跑,Cookie 才能發揮作用。

 

一、cookie read

以下的方法是讀取 cookie 裡全部資料的語法

document.cookie;

由上圖可知道 cookie 裡現有一筆 _ga 的資料。

 

二、cookie create

現在來將一筆資料「"username=Tom"」寫進 cookie 裡,語法如下

document.cookie = "username=Tom";

然後再來檢查 cookie 是否成功寫入

 

三、cookie update

如果想要將 cookie 裡的 username 的值改成 Bill 則可用下列語法去覆蓋 username

document.cookie = "username=Bill";

 

四、cookie delete

如果你要刪除 username 時,則是要指定有效日期來間接達到刪除的效果。

document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 UTC;";

 

五、特定 cookie name 的找尋

先前 cookie 讀取語法只能做到一次讀取全部資料,

當只想取得特定的 name-value pairs 時,只能特別撰寫程式去解析 cookie 字串。

如下方法,去取得「username」的值

function getCookie(cname) {
  var name = cname + "=";
  var decodedCookie = decodeURIComponent(document.cookie);
  var ca = decodedCookie.split(';');
  for(var i = 0; i <ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0) == ' ') {
      c = c.substring(1);
    }
    if (c.indexOf(name) == 0) {
      return c.substring(name.length, c.length);
    }
  }
  return "";
}

 

六、新增一 cookie name 的值與有效日期

如下方法

function setCookie(cname, cvalue, exdays) {
  var d = new Date();
  d.setTime(d.getTime() + (exdays*24*60*60*1000));
  var expires = "expires="+ d.toUTCString();
  document.cookie = cname + "=" + cvalue + ";" + expires + ";";
}

說明:

參數 exdays 是天為一個單位,而 getTime() 是以毫秒為一個單位。