کوکی ها در جاوا اسکریپت

آموزش کوکی ها در جاوا اسکریپت - آموزش جاوا اسکریپت - آموزش javascript

کوکی ها چیست ؟ 

هنگامی که کاربر از وب سایتی بازدید میکند ، مرورگر  کاربر و سرور بوسیله ی یک پروتکل به نام http با یکدیگر تبادل اطلاعات میکنند و زمانی که یک کاربر وارد سایت میشود اطلاعات او معمولا در سشن ها ذخیره میشود که داده هایی سمت سرور هستند و هر بار باید از سمت سرور فراخوانی شوند . در برخی موارد نیاز نیست اطلاعات کاربران سمت سرور ذخیره گردد و باید همان سمت مرورگر کاربر ذخیره شود تا سرور بتواند بهتر تصمیم بگیرد . 

مثلا در سایت های فروشگاهی ، علاقه های یک کاربر در کوکی ها ذخیره میشود و وقتی کاربر برای بار دوم به سایت مراجعه میکند ، ابتدا سرور کوکی ها را از مرورگر فراخوانی میکند و سپس محصولاتی را براساس علاقه ی کاربر به او نشان میدهد . 

در بسیاری از حالت ها کوکی ها نقش مهمی در تعیین ، علاقه های کاربر ، جنسیت او و ... دارند . 

 

کوکی ها چطور کار میکند ؟ 

 

زمانی که کاربر به وب سایت مراجعه میکند سرور داده هایی را با عنوان کوکی به سمت مرورگر ارسال میکند ، مرورگر باید کوکی را قبول کند ( تنظیمات استفاده از کوکی ها در مرورگر کاربر فعال باشد ) ، سپس کوکی های بعنوان یک فایل متنی ساده در هارد دیسک کامپیوتر کاربر ذخیره میشوند . 

سپس اگر کاربر دوباره از یک صفحه ای بازدید کند کوکی ها بصورت خودکار از سمت مرورگر به سمت سرور ارسال میشوند و زمانی که کوکی ها سمت سرور رسیدند سرور آنها را دریافت و انها را تحلیل میکند . 

کوکی ها اطلاعات ساده ی متنی هستند که پنج متغیر زیر را داراست : 

  • Expires  تاریخی که مشخص میکند کوکی کی قرار است منقضی شود ، اگر این متغیر خالی باشد زمانی که کاربر مرورگر را میبنندد کوکی از بین میرود 
  • Domain  نام دامنه ای که کاربر آنرا مشاهده کرده است 
  • Path  مسیر تنظیم شده برای کوکی ها ، ممکن است این متغیر خالی باشد  . 
  • Secure  اگر این فیلد مقدارش برابر با secure باشد در صورتی کوکی ساخته و دخیره میشود که سرور از امنیت لازم برخوردار باشد و فقط برای پروتکل های ایمن شده مثل https سرویس میدهد . اگر این فیلد خالی باشد برای تمامی سرورها کوکی کار میکند 
  • Name=Value نام و مقدار کوکی که تنظیم میشود و میتواند متعدد باشد . 

کوکی ها در اصل برای برنامه های CGI ساخته شده بوده است که اطلاعات بین سرور و کلاینت بصورت خودکار ارسال و دریافت میشده و سمت سرور با اسکریپت CGI تحلیل میشده .

 

در زبان جاوا اسکریپ برای کار با کوکی ها درون شی Document میتوانید از ویژگی cookie استفاده کنید . 

جاوا اسکریپت میتواند کوکی ها را بخواند ، کوکی ها را ایجاد کند ، کوکی را ویرایش و حتی پاکسازی کند و تغییرات خود را به آدرس صفحه ی اینترنتی جاری اعمال کند . 

 

ذخیره سازی کوکی ها در جاوا اسکریپت : 

 

ساده ترین راه ساخت و ذخیره کوکی ها با استفاده از جاوا اسکریپت ، استفاده از document.cookie  میباشد . در زیر سینتکس استاندارد این مورد را مشاهده میکنید :

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

 

مقدار expires  اختیاری است اگر یک زمان دقیق برای این متغیر تعریف کنید بعد از آن زمان دیگر کوکی مورد نظر پاک خواهد شد و دیگر دسترسی به آن امکان نخواهد داشت . 

نکته : مقادیر کوکی ها بدون استفاده از سمی کالن ، ویرگول ،  فضای خالی تعریف میشود . به همین منظور قبل از ذخیره سازی کوکی ها میتوانید از escape() استفاده کنید و زمان فراخوانی از تابع 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>

اگر مثال بالا را انجام دهید حالا مروگر شما در سیستم یک کوکی به نام name را ساخته و ذخیره کرده است اگر قصد داشتید چندین کوکی را به این شکل تعریف کنید یک ویرگول قرار داده و کوکی بعدی را تعریف کنید و به همین ترتیب میتوانید بعد از ویرگول کوکی های جدیدی را تعریف کنید . 

 

فراخوانی کوکی ها در جاوا اسکریپت : 

 

فراخوانی کوکی ها در جاوا اسکریپت راحت ترین از ایجاد آنهاست کافیست document.cookie را فراخوانی کنید . 

در هنگام فراخوانی document.cookie شامل لیستی از کوکی های ساخته شده با مقادیرشان میباشد که میتوانید به انها دسترسی داشته باشید 

از تابع split() میتوانید استفاده کنید تا رشته کوکی ها را بصورت key و value در بیاورید . 

مثال : 

<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 انجام داد . 

در مثال زیر کوکی ها بعد از یک ماه از بین میروند : 

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

 

پاک کردن کوکی ها در زبان جاوا اسکریپت : 

 

اگر شما نیاز داشته باشید مقادیر درون کوکی ها را دستی پاک کنید و دیگر دسترسی به آن کوکی ها امکان نداشته باشد میتوانید تاریخ expire آنها را به تاریخ گذشته تنظیم کنید  .

با تنظیم کردن تاریخ expire به گذشته کوکی مطمئنا پاک خواهد شد مثال زیر را ببینید : 

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

 

. اتمام .