如何建立和讀取cookie的值


概述

Cookie是臨時儲存,以鍵值對的形式儲存使用者資料。Cookie儲存在客戶端系統上。當用戶訪問網站時,會向託管網站的伺服器傳送請求,然後伺服器載入內容並將其傳送回接收端(接收端是客戶端或使用者)。伺服器傳送Cookie以儲存使用者資料以供將來使用。但最終取決於使用者是否要將登入憑據儲存到Cookie中。就像可食用的餅乾中填充巧克力一樣,在網頁Cookie中,Cookie是“甜甜圈”,而填充的巧克力是Cookie的值。

語法

建立Cookie的語法如下:

document.cookie= cookieName + cookieValue + cookieExpiry;
  • cookieName  這是儲存值的Cookie名稱。例如:使用者名稱、地址等等。

  • cookieValue  這是儲存在Cookie名稱鍵中的值。例如:Alex、美國等。

  • cookieExpiry  這是一個數值,表示Cookie在客戶端瀏覽器中保持有效的天數。

演算法

步驟 1  在文字編輯器(如Sublime Text或Visual Studio Code)中建立一個HTML檔案。在HTML檔案中新增HTML基本結構。

步驟 2  現在,向HTML文件的body標籤新增onload()事件函式。將一個名為“myFunc()”的函式傳遞給onload()函式。

<body onload="myFunc()"></body>

步驟 3  現在,在與HTML檔案相同的資料夾中建立一個script.js檔案。在body標籤結束之前,將script.js檔案連結到HTML文件。

<script src="script.js"></script>

步驟 4  現在,在指令碼檔案中建立一個箭頭函式,該函式檢查客戶端系統中是否存在Cookie。函式名稱應與我們在body標籤中作為屬性傳遞給onload()函式的名稱相同。

myFunc = () => {
   var cl = readCookiesValue("clients_Name");
   var ad = readCookiesValue("clients_address")
   if (cl != "") {
      alert("Welcome " + cl +" from "+ad + “ to the server”);
   } else {
      cl = prompt("Write your name", "");
      ad = prompt("Write your address", "");
      if (cl != "" && cl != null) {
         createCookies("clients_Name", cl, 30);
         createCookies("clients_address", ad, 30);
      }
   }
}

步驟 5  現在,建立一個名為“createCookies”的箭頭函式,該函式將為使用者建立一個Cookie。建立Cookie將cookie名稱、cookie值和cookie有效期作為三個引數。Cookie將使用“document.cookie”語法建立。

createCookies = (ckName, ckValue, ckExpiry) => {
   var cdate = new Date();
   date.setTime(cdate.getTime() + (ckExpiry * 24 * 60 * 60 * 1000));
   var expires = "expires=" + cdate.toGMTString();
   document.cookie = ckName + "=" + ckValue + ";" + expires + ";path=/";
}

步驟 6  建立Cookie後,建立一個名為“readCookiesValue”的箭頭函式,該函式將讀取瀏覽器中當前的Cookie,這將cookie名稱作為引數,並返回cookie的值。

readCookiesValue = (cookieName) => {
   var name = cookieName + "=";
   var decoded_cookie = decodeURIComponent(document.cookie);
   var dcooks = decoded_cookie.split(';');
   for (let i = 0; i < dcooks.length; i++) {
      var c = dcooks[i];
      while (c.charAt(0) == ' ') {
         c = c.substring(1);
      }
      if (c.indexOf(name) == 0) {
         return c.substring(name.length, c.length);
      }
   }
   return "";
}

步驟 7  Cookie的讀取和建立函式已成功建立。

示例

在這個例子中,我們建立了一個函式,該函式將檢查客戶端瀏覽器中是否存在Cookie,如果客戶端瀏覽器中不存在Cookie,則它將為當前客戶端建立Cookie,並將其儲存到Cookie過期之前。

<html>
<head>
   <title>Create and read cookie value</title>
</head>
<body onload="myFunc()">
   <h1 style="text-align: center;color: green;" onload="myfunc()">Welcome to tutorialspoint.com</h1>
   <script src="script.js"></script>
   <script>
      myFunc = () => {
         var client = readCookiesValue("clients_Name");
         var adress = readCookiesValue("clients_address")
         if (client != "") {
            alert("Hello " + client +" from "+adress);
         } else {
            client = prompt("Enter your name", "");
            adress = prompt("Enter your adress", "");
            if (client != "" && client != null) {
               createCookies("clients_Name", client, 30);
               createCookies("clients_address", adress, 30);
            }
         }
      }
      createCookies = (cookieName, cookieValue, cookieExpiry) => {
         var date = new Date();
         date.setTime(date.getTime() + (cookieExpiry * 24 * 60 * 60 * 1000));
         var expires = "expires=" + date.toGMTString();
          document.cookie = cookieName + "=" + cookieValue + ";" + expires; + ";path=/";
      }
      readCookiesValue = (cookieName) => {
         var name = cookieName + "=";
         var decoded_cookie = decodeURIComponent(document.cookie);
         var dcooks = decoded_cookie.split(';');
         for (let i = 0; i < carr.length; i++) {
            var c = carr[i];
            while (c.charAt(0) == ' ') {
               c = c.substring(1);
            }
            if (c.indexOf(name) == 0) {
               return c.substring(name.length, c.length);
            }
         }
         return "";
      }
   </script>
</body>
</html>

輸出

下圖顯示了上述示例的輸出,在該示例中,我們構建了讀取和建立Cookie的函式。因此,當用戶第一次在其瀏覽器中載入上述示例時,該函式將檢查當前請求中是否存在Cookie,如果不存在,則客戶端將收到一個提示,要求其輸入姓名,客戶端在框中輸入姓名後,將收到另一個提示,要求其輸入城市名稱,然後將重定向到主要內容。因此,當客戶端第二次載入網頁時,該函式將再次檢查Cookie,此時Cookie存在於客戶端瀏覽器中,因此客戶端將收到一條問候訊息“您好,cityName 的 clientName”,您可以在第三張圖片中看到。

結論

Cookie用於所有應用程式,例如irctc和其他網站的預訂和瀏覽目的。它們允許使用者登入網站,只要Cookie有效。有時Cookie也會對系統構成危險,因為某些有害或盜版網站可能會建立Cookie來監視您的系統,因此建議不要接受來自未知網站的Cookie。

更新於:2023年7月14日

398 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始
廣告