cookie的概念
Javascript是運行在客戶端的腳本,Session運行在服務端,所以Javascript不能操作Session,cookie運行在客戶端,具有和Session類似的效果,可以被Javascript操作。 cookie是指某些網站為了辨別用戶身份、進行session跟蹤而儲存在用戶本地終端上的數據(通常經過加密)。cookie是一段以鍵值對形式(key=value)保存在計算機硬盤上的字符串信息,各個cookie之間用分號加空格隔開。cookie存儲容量大概4kb,不同瀏覽器存在微小差異。cookie存在有效期,默認有效期是從cookie生成到瀏覽器關閉,有效期也可以自定義。Javascript中cookie名稱區分大小寫。
cookie的應用
cookie最典型的應用是判斷用戶是否登陸網站。還有一個重要應用場合是"購物車"(用戶可能會在一段時間內在同一家網站的不同頁面中選擇不同商品,這些信息都會寫入Cookies,以便在最后付款時提取信息)。
設置cookie:
document.cookie="name=123" //將cookie寫入客戶端
document.cookie="name=123;word=123;" //只能設置name=123(一條語句只能同時設置一個cookie)
獲取cookie:
function getCookie(name) { var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)"); if(arr=document.cookie.match(reg)) return unescape(arr[2]); else return null; }
刪除cookie
//刪除cookie需要將失效日期設置為過去的時間點
function delCookie(name) { var exp = new Date(); exp.setTime(exp.getTime() - 1); var cval=getCookie(name); if(cval!=null) document.cookie= name + "="+cval+";expires="+exp.toGMTString(); //將時間轉換成GMT格式的字符串 }
給cookie設置失效日期
expires表示cookie的失效日期。如果省略expires或將其設置為0或負值,瀏覽器關閉時cookie失效。cookie失效前,即使重啟電腦也不會丟失。expires不可讀,在Javascript中使用document.cookie不會顯示出expires。expires值應該使用GMT格式的時間字符串(GMT即格林尼治標准時間,現在也稱為UTC即全球標准時間)。
//在Javascript中使用expires時應該和cookie同時寫入,如: document.cookie = "num=123;expires=" + exp; //而如下寫法是不正確的: document.cookie = "num=123"; document.cookie = "expires=" + exp; //這樣寫會形成兩個cookie,第二個cookie的名稱是expires,兩個cookie均沒有指定失效日期。
function setCookie(name, value) { var date = new Date(); //獲取當前時間 var exp = 10; //expiresDays縮寫exp(有效時間) date.setTime(date.getTime() + exp * 24 * 3600 * 1000); //格式化為cookie識別的時間 document.cookie=escape(name) + "=" + escape(value) + ";expires="+date.toGMTString(); //將name設置為10天后過期,超過這個時間name這條cookie會消失 }
1、toGMTString()方法可根據格林尼治時間(GMT)將Date對象轉換為GMT格式的字符串
2、escape()函數可對字符串進行編碼,這樣就可以在所有計算機上讀取該字符串。該方法不會對ASCII字母和數字進行編碼,也不會對*@-_+./。這些ASCII標點符號進行編碼,其他所有字符
都會被轉義序列替換。
3、unescape()函數可以對escape()編碼的字符串進行解碼。