JavaScript ve Çerezler

Çerez nedir?

Web Tarayıcıları ve Sunucuları, iletişim kurmak için HTTP protokolünü kullanır ve HTTP, durum bilgisi olmayan bir protokoldür. Ancak ticari bir web sitesi için, oturum bilgilerinin farklı sayfalar arasında tutulması gerekir. Örneğin, bir kullanıcı kaydı birçok sayfayı tamamladıktan sonra sona erer. Ancak tüm web sayfalarında kullanıcıların oturum bilgilerinin nasıl korunacağı.

Çoğu durumda, çerezlerin kullanılması tercihleri, satın alımları, komisyonları ve daha iyi ziyaretçi deneyimi veya site istatistikleri için gereken diğer bilgileri hatırlamanın ve izlemenin en etkili yöntemidir.

Nasıl çalışır ?

Sunucunuz bazı verileri ziyaretçinin tarayıcısına çerez şeklinde gönderir. Tarayıcı çerezi kabul edebilir. Varsa, ziyaretçinin sabit diskinde düz metin kaydı olarak saklanır. Şimdi, ziyaretçi sitenizdeki başka bir sayfaya ulaştığında, tarayıcı aynı çerezi geri alınması için sunucuya gönderir. Alındıktan sonra, sunucunuz daha önce nelerin depolandığını bilir / hatırlar.

Çerezler, 5 değişken uzunluklu alanın düz metin veri kaydıdır -

  • Expires- Çerezin süresinin dolacağı tarih. Bu boşsa, çerez, ziyaretçi tarayıcıdan çıktığında sona erecektir.

  • Domain - Sitenizin alan adı.

  • Path- Tanımlama bilgisini ayarlayan dizinin veya web sayfasının yolu. Çerezi herhangi bir dizinden veya sayfadan almak istiyorsanız bu boş olabilir.

  • Secure- Bu alan "güvenli" kelimesini içeriyorsa, çerez yalnızca güvenli bir sunucu ile alınabilir. Bu alan boşsa, böyle bir kısıtlama yoktur.

  • Name=Value - Çerezler, anahtar-değer çiftleri şeklinde ayarlanır ve alınır

Çerezler başlangıçta CGI programlama için tasarlanmıştır. Bir tanımlama bilgisinde bulunan veriler web tarayıcısı ile web sunucusu arasında otomatik olarak iletilir, böylece sunucudaki CGI komut dosyaları istemcide depolanan tanımlama bilgisi değerlerini okuyabilir ve yazabilir.

JavaScript ayrıca, çerezleri kullanarak cookie mülkiyet Documentnesne. JavaScript, mevcut web sayfası için geçerli olan tanımlama bilgilerini okuyabilir, oluşturabilir, değiştirebilir ve silebilir.

Çerezlerin Saklanması

Tanımlama bilgisi oluşturmanın en basit yolu, document.cookie nesnesine şuna benzeyen bir dize değeri atamaktır.

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

İşte expiresöznitelik isteğe bağlıdır. Bu özniteliğe geçerli bir tarih veya saat sağlarsanız, tanımlama bilgisi belirli bir tarih veya saatte sona erecek ve bundan sonra tanımlama bilgilerinin değerine erişilemeyecektir.

Note- Çerez değerleri noktalı virgül, virgül veya boşluk içeremez. Bu nedenle JavaScript'i kullanmak isteyebilirsiniz.escape()değeri tanımlama bilgisine kaydetmeden önce kodlamak için işlev. Bunu yaparsanız, ilgili olanı da kullanmanız gerekecektir.unescape() çerez değerini okuduğunuzda işlev görür.

Misal

Takip etmeyi dene. Giriş çerezinde bir müşteri adı belirler.

<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>

Çıktı

Artık makinenizde adlı bir çerez var name. Virgülle ayrılmış birden çok anahtar = değer çifti kullanarak birden çok çerez ayarlayabilirsiniz.

Çerezleri Okumak

Bir tanımlama bilgisini okumak, tanımlama bilgisi yazmak kadar basittir, çünkü document.cookie nesnesinin değeri tanımlama bilgisidir. Böylece bu dizeyi çereze erişmek istediğinizde kullanabilirsiniz. Document.cookie dizesi noktalı virgülle ayrılmış ad = değer çiftlerinin bir listesini tutacaktır.name bir tanımlama bilgisinin adı ve değer, onun dize değeridir.

Dizeleri kullanabilirsiniz ' split() bir dizeyi anahtar ve değerlere ayırmak için aşağıdaki gibi işlev -

Misal

Tüm çerezleri almak için aşağıdaki örneği deneyin.

<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>

Note - Burada length bir yöntemdir ArrayBir dizinin uzunluğunu döndüren sınıf. Dizileri ayrı bir bölümde tartışacağız. O zamana kadar, lütfen onu sindirmeye çalışın.

Note- Makinenizde zaten ayarlanmış başka çerezler olabilir. Yukarıdaki kod, makinenizde ayarlanan tüm çerezleri gösterecektir.

Çerezlerin Son Kullanma Tarihini Ayarlama

Bir son kullanma tarihi belirleyerek ve son kullanma tarihini çerez içine kaydederek bir çerezin ömrünü mevcut tarayıcı oturumunun ötesine uzatabilirsiniz. Bu,‘expires’ bir tarih ve saate atıf.

Misal

Aşağıdaki örneği deneyin. Bir çerezin sona erme tarihinin 1 Ay nasıl uzatılacağını gösterir.

<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>

Çıktı

Bir Çerezi Silme

Bazen bir çerezi silmek isteyebilirsiniz, böylece sonraki çerez okuma girişimleri hiçbir sonuç vermez. Bunu yapmak için, son kullanma tarihini geçmiş bir zamana ayarlamanız yeterlidir.

Misal

Aşağıdaki örneği deneyin. Son kullanma tarihini geçerli tarihten bir ay sonrasına ayarlayarak bir çerezin nasıl silineceğini gösterir.

<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>

Çıktı