Cookies讓你存儲在網頁中的用戶信息。
什麼是Cookies ?
Cookies是數據,存放在小文本文件,你的計算機上。
當Web服務器發送一個網頁瀏覽器,連接被關閉,服務器忘記關於用戶的一切。
Cookies被發明來解決“如何記住用戶信息”的問題:
- 當用戶訪問網頁時,他的名字可被存儲在一個cookie 。
- 用戶訪問該頁面時,已cookie “記住”他的名字。
Cookies是保存在類似名稱 - 值對:
username = John Doe
當從服務器的瀏覽器請求網頁時, cookies屬於頁被添加到請求。 這樣,服務器獲取所需的數據“記住”用戶信息。
創建a Cookie使用JavaScript
JavaScript可以創建,讀取和刪除cookies與document.cookie屬性。
使用JavaScript, a cookie可以這樣創建:
document.cookie = "username=John Doe";
您還可以添加失效日期(UTC時間)。 默認情況下, the cookie在瀏覽器關閉時被刪除:
document.cookie = "username=John Doe; expires=Thu, 18 Dec 2013 12:00:00 UTC";
隨著路徑參數,你可以告訴路徑瀏覽器the cookie所屬。 默認情況下, the cookie屬於當前頁面。
document.cookie = "username=John Doe; expires=Thu, 18 Dec 2013 12:00:00 UTC; path=/";
讀取a Cookie使用JavaScript
使用JavaScript, cookies可以這樣寫:
var x = document.cookie;
document.cookie將返回所有cookies在一個字符串很像: cookie1=value; cookie2=value; cookie3=value; cookie1=value; cookie2=value; cookie3=value;
改變a Cookie使用JavaScript
使用JavaScript,你可以改變a cookie在創建同樣的方式:
document.cookie = "username=John Smith; expires=Thu, 18 Dec 2013 12:00:00 UTC; path=/";
舊cookie將被覆蓋。
刪除a Cookie使用JavaScript
刪除a cookie是非常簡單的。 只需設置到期參數為傳遞日期:
document.cookie = "username=; expires=Thu, 01
Jan 1970 00:00:00 UTC";
請注意,您不必指定a cookie ,當你刪除值a cookie 。
該Cookie字符串
該document.cookie屬性看起來像一個正常的文本字符串。 但事實並非如此。
即使你寫了一個整體cookie字符串document.cookie ,當你再讀一遍,你只能看到名字-值對吧。
如果你設置一個新cookie ,年紀大cookies不會被覆蓋。 新cookie將被添加到document.cookie ,所以如果你讀document.cookie再次你會得到這樣的:
cookie1 = value; cookie2 = value;
如果你想找到一個特定的值cookie ,你必須編寫的JavaScript函數中搜索cookie的值cookie字符串。
JavaScript的Cookie例
另外,在以下的例子中,我們將創建a cookie存儲訪問者的名字。
第一次一個訪問者到達的網頁,他將被要求填寫自己的名字。 然後該名稱存儲在a cookie 。
下一次訪問者到達同一個頁面,他將得到一個值得歡迎的消息。
對於這個例子,我們將創建3個JavaScript函數:
- 一個函數來設置一個cookie值
- 一個函數來獲取一個cookie值
- 該功能可以檢查一個cookie值
一個函數來設置a Cookie
首先,我們創建一個存儲在訪問者的名稱的函數a cookie變量:
例
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;
}
例子解釋:
以上的函數的參數是的名稱cookie (cname)的值the cookie (cvalue)和天直到該cookie應到期(exdays)的數目。
函數設置a cookie通過相加所述cookiename , the cookie值和到期串。
一個函數來獲取a Cookie
然後,我們創建一個返回指定的值的函數cookie :
例
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.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 "";
}
功能介紹:
以the cookiename作為參數(CNAME)。
創建文本變量(名稱)搜索(CNAME +“=”)。
拆分document.cookie上分號到一個數組稱為ca (ca = document.cookie.split(';'))
循環通過CA array (i=0;i<ca.length;i++)並讀出每個值c=ca[i])
如果the cookie發現(c.indexOf(name) == 0)返回值the cookie (c.substring(name.length,c.length)
如果the cookie沒有找到,返回“”。
A功能檢查a Cookie
最後,我們創建了功能checks ,如果a cookie設置。
如果the cookie設置它會顯示一個問候。
如果the cookie沒有設置,它會顯示一個提示框,詢問用戶名,並存儲用戶名cookie為365天,通過調用setCookie函數:
例
function checkCookie() {
var
username=getCookie("username");
if (username!="") {
alert("Welcome again " + username);
} else {
username = prompt("Please enter your name:", "");
if (username != ""
&& username != null) {
setCookie("username", username, 365);
}
}
}
現在一起所有
例
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;
}
function getCookie(cname) {
var name = cname + "=";
var ca
= document.cookie.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 "";
}
function
checkCookie() {
var user = getCookie("username");
if (user != "")
{
alert("Welcome again " + user);
} else {
user = prompt("Please enter your name:", "");
if (user != "" &&
user != null) {
setCookie("username", user, 365);
}
}
}
試一試» 上面的例子運行checkCookie()函數在頁面加載時。