最新的Web開發教程
 

JavaScript Cookies


Cookies讓你存儲在網頁中的用戶信息。


什麼是Cookies

Cookies是數據,存放在小文本文件,你的計算機上。

當Web服務器發送一個網頁瀏覽器,連接被關閉,服務器忘記關於用戶的一切。

Cookies被發明來解決“如何記住用戶信息”的問題:

  • 當用戶訪問網頁時,他的名字可被存儲在一個cookie
  • 用戶訪問該頁面時,已cookie “記住”他的名字。

Cookies是保存在類似名稱 - 值對:

username = John Doe

當從服務器的瀏覽器請求網頁時, cookies屬於頁被添加到請求。 這樣,服務器獲取所需的數據“記住”用戶信息。


創建a Cookie使用JavaScript

JavaScript可以創建,讀取和刪除cookiesdocument.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函數:

  1. 一個函數來設置一個cookie
  2. 一個函數來獲取一個cookie
  3. 該功能可以檢查一個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通過相加所述cookienamethe 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()函數在頁面加載時。