Бисквитки ?

Уеб комуникацията се извършва чрез набор от правила, наречени HTTP протокол. Самият протокол е без състояние и не помни нищо. Така че ефективно поддържане на състояние се използват бисквитки. Бисквитките са информация за проследяване на потребителя или предоставяне на по-добро потребителско изживяване.

Работи ли?

Когато уеб браузърът трябва да проследи данни, той изисква от потребителя бележка за съгласие. При потвърждаването му браузърът на потребителя ще запази част от информацията в браузъра и също така ще изпрати копие от нея до сървъра всеки път, когато уебсайт извика своя бекенд

Бисквитките са обикновен текстов запис на данни от 5 полета с променлива дължина −

  • Изтича – Датата, на която бисквитката ще изтече. Ако това е празно, бисквитката ще изтече, когато посетителят напусне браузъра.
  • Домейн – Името на домейна на вашия сайт.
  • Път – Пътят до директорията или уеб страницата, която е задала бисквитката. Това може да е празно, ако искате да извлечете бисквитката от която и да е директория или страница.
  • Защитено – Ако това поле съдържа думата „защитено“, тогава бисквитката може да бъде извлечена само със защитен сървър. Ако това поле е празно, не съществува такова ограничение.
  • Име=Стойност – Бисквитките се задават и извличат под формата на двойки ключ-стойност

Забележка — JavaScript може също да манипулира бисквитки, като използва свойството cookie на обекта Document.

Съхраняване на бисквитки

Най-простият начин за създаване на бисквитка е да присвоите стойност на низ към обекта document.cookie, който изглежда така.

document.cookie = "key1 = value1;key2 = value2;expires = date";

Тук атрибутът изтича не е задължителен. Ако предоставите на този атрибут валидна дата или час, тогава бисквитката ще изтече на дадена дата или час и след това стойността на бисквитките няма да бъде достъпна.

Забележка – Стойностите на бисквитките не могат да включват точка и запетая, запетаи или интервали. Поради тази причина може да искате да използвате функцията escape() на JavaScript, за да кодирате стойността, преди да я съхраните в бисквитката. Ако направите това, ще трябва да използвате и съответната функция unescape(), когато четете стойността на бисквитката.

Пример

<html>
   <head>   
      <script type = "text/javascript">
            function WriteCookie() {
               if( document.myform.customer.value == "" ) {
                  alert("Enter some value!");
                  return;
               }
               cookievalue = escape(document.myform.customer.value) + ";";
               document.cookie = "name=" + cookievalue;
               document.write ("Setting Cookies : " + "name=" + cookievalue );
            }
      </script>      
   </head>
   
   <body>      
      <form name = "myform" action = "">
         Enter name: <input type = "text" name = "customer"/>
         <input type = "button" value = "Set Cookie" onclick = "WriteCookie();"/>
      </form>   
   </body>
</html>

Изход

Сега вашата машина има бисквитка, наречена име. Можете да зададете множество бисквитки, като използвате няколко двойки ключ = стойност, разделени със запетая.

Четене на бисквитки

Четенето на бисквитка е също толкова лесно, колкото писането на такава, защото стойността на обекта document.cookie е бисквитката. Така че можете да използвате този низ винаги, когато искате да получите достъп до бисквитката. Низът document.cookie ще поддържа списък с двойки име=стойност, разделени с точка и запетая, където име е името на бисквитката, а стойността е нейната низова стойност.

Можете да използвате функцията split() на низове, за да разделите низ на ключ и стойности, както следва:

Пример

<html>
   <head>   
      <script type = "text/javascript">
         <!--
            function ReadCookie() {
               var allcookies = document.cookie;
               document.write ("All Cookies : " + allcookies );
               
               // Get all the cookies pairs in an array
               cookiearray = allcookies.split(';');
               
               // Now take key value pair out of this array
               for(var i=0; i<cookiearray.length; i++) {
                  name = cookiearray[i].split('=')[0];
                  value = cookiearray[i].split('=')[1];
                  document.write ("Key is : " + name + " and Value is : " + value);
               }
            }
         //-->
      </script>      
   </head>
   
   <body>     
      <form name = "myform" action = "">
         <p> click the following button and see the result:</p>
         <input type = "button" value = "Get Cookie" onclick = "ReadCookie()"/>
      </form>      
   </body>
</html>

Забележка − Тук length е метод от клас Array, който връща дължината на масив. Ще обсъдим масивите в отделна глава. Дотогава, моля, опитайте се да го усвоите.

Може да има други бисквитки, които вече са зададени на вашето устройство. Горният код ще покаже всички бисквитки, зададени на вашата машина.

Задаване на дата на изтичане на бисквитките

Можете да удължите живота на бисквитката след текущата сесия на браузъра, като зададете дата на изтичане и запазите датата на изтичане в бисквитката. Това може да стане чрез задаване на атрибута ‘expires’ на дата и час.

Пример

Опитайте следния пример. Той илюстрира как да удължите датата на изтичане на бисквитката с 1 месец.

<html>
   <head>   
      <script type = "text/javascript">
            function WriteCookie() {
               var now = new Date();
               now.setMonth( now.getMonth() + 1 );
               cookievalue = escape(document.myform.customer.value) + ";"
               
               document.cookie = "name=" + cookievalue;
               document.cookie = "expires=" + now.toUTCString() + ";"
               document.write ("Setting Cookies : " + "name=" + cookievalue );
            }
      </script>      
   </head>
   
   <body>
      <form name = "myform" action = "">
         Enter name: <input type = "text" name = "customer"/>
         <input type = "button" value = "Set Cookie" onclick = "WriteCookie()"/>
      </form>      
   </body>
</html>

Изтриване на бисквитка

Понякога ще искате да изтриете бисквитка, така че следващите опити за четене на бисквитката да не върнат нищо. За да направите това, просто трябва да зададете датата на изтичане на време в миналото.

Пример

Опитайте следния пример. Той илюстрира как да изтриете бисквитка, като зададете датата й на изтичане на един месец след текущата дата.

<html>
   <head>   
      <script type = "text/javascript">
            function WriteCookie() {
               var now = new Date();
               now.setMonth( now.getMonth() - 1 );
               cookievalue = escape(document.myform.customer.value) + ";"
               
               document.cookie = "name=" + cookievalue;
               document.cookie = "expires=" + now.toUTCString() + ";"
               document.write("Setting Cookies : " + "name=" + cookievalue );
            }
      </script>      
   </head>
   
   <body>
      <form name = "myform" action = "">
         Enter name: <input type = "text" name = "customer"/>
         <input type = "button" value = "Set Cookie" onclick = "WriteCookie()"/>
      </form>      
   </body>
</html>

Справка

http://www.tutorialspoint.com/javascript/javascript_cookies.htm