1. 程式人生 > >javascript入門經典--筆記9 cookie

javascript入門經典--筆記9 cookie

一個cookie的例子:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">

 document.cookie = "UserName = paul;expires=Tue, 28 Dec 2020 00:00:00;";

</script>
</head>
<body>
<p>This page just created a kookie</p>
</body>
</html>

cookie字串

當建立一個cookie 時,需要建立一個cookie字串,包含 6 個子串: name , value ,  expires(過期時間), path(路徑), domain(域)和secure(安全)。其中後面4 個是可選的

name 用來引用該cookie ,value 則是該cookie 所儲存的資訊。name/value 對 是必須要設定的,且需要放置在字串開始。

UserName = paul;
上面即為名為Username , 值為 paul .

expires ,如果不設定,則為會話cookie,使用者關閉瀏覽器之後cookie就過期。過期時間的格式根重要,必須與 toGMTString( ) 方法返回的格式相同。該方法用於發揮一個Date 物件的 GMT 時間。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
/*獲取當前時間*/
var expireDate = new Date();
/*將過期時間設定為當前時間+7秒之後*/
expireDate.setMilliseconds(expireDate.getMilliseconds()+7000);
/*這裡注意需要將日期格式設定為GMT格式*/
document.cookie = "UserName = paul;expires="+expireDate.toGMTString()+";";  /*這裡expireDate.toGMTString()為什麼加雙引號???*/
</script>
</head>
<body>
<p>This page just created a kookie</p>
</body>
</html>
但是如果使用者刪掉cookie 或者瀏覽器所能支援的 cookie 數量達到上限,cookie就在在過期時間之前失效。

secure:是一個布林值,如果設定為true,則該cookie 將僅在瀏覽器和伺服器通過SSL(安全套接層)安全協議連線時才會被傳輸。通常情況下不用指定,只通過一個普通的HTTP 連線來傳輸。

建立cookie

建立一個cookie函式:

function setCookie (cookieName,cookieValue,cookiePath,cookieExpires){	
/*將特殊字元進行編碼*/
	cookieValue=escape(cookieValue);
	if(cookieExpires==""){
		var nowDate = new Date();  
		nowDate.setMonth(nowDate.getMonth()+6);
		cookieExpires=nowDate.toGMTSrting();
	}
	if(cookiePath!=""){
		cookiePath="; path="+cookiePath;	
	}
	document.cookie=cookieName+"="+cookieValue+";"+"cookieExpires="+cookieExpires+";"+cookiePath;	
}
cookie中name以及value中不可以含有特殊字元,比如空格,分號等等,這裡的escape( )函式將 可以對特殊字元進行轉義,將非字母轉義成十六進位制編碼。同樣可以用 unescape()來解碼。

使用setCookie 函式:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>set cookie</title>
<script type="text/javascript">
function setCookie (cookieName,cookieValue,cookiePath,cookieExpires){	
	cookieValue=escape(cookieValue);
	if(cookieExpires==""){
		var nowDate = new Date();  
		nowDate.setMonth(nowDate.getMonth()+6);
		cookieExpires=nowDate.toGMTString();
	}
	if(cookiePath!=""){
		cookiePath="; path="+cookiePath;	
	}
  /*設定cookie函式*/
 document.cookie=cookieName+"="+cookieValue+";"+"cookieExpires="+cookieExpires+";"+cookiePath;	
}
setCookie("Name","bob","","");
setCookie("Age","18","","");
setCookie("FirstVisite","10 may 2007","","");
alert(document.cookie);
</script>
</head>
<body>

</body>
</html>