آموزش جاوا اسکریپت

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

مرورگرها و سرورهای وب از پروتکل HTTP برای برقراری ارتباط استفاده می کنند و HTTP یک پروتکل stateless است. اما برای وب سایت تجاری، لازم است اطلاعات مربوط به session را در بین صفحات مختلف نگهداری کنید. برای مثال، پس از اتمام بسیاری از صفحات، ثبت نام یک کاربر به پایان می رسد. اما چگونه اطلاعات session کاربران را در تمام صفحات وب حفظ کنید. در بسیاری از موارد، استفاده از کوکی ها کارآمد ترین روش برای یادآوری و ردیابی ترجیحات، خرید، کمیسیون و سایر اطلاعات مورد نیاز برای تجربه بهتر بازدید کننده یا آمار سایت است.

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

سرور شما برخی از داده ها را به مرورگر بازدید کننده به صورت کوکی می فرستد. مرورگر ممکن است کوکی را قبول کند. اگر این کار را انجام داد، آن را به عنوان یک رکورد ساده در دیسک سخت بازدید کننده ذخیره می نماید. در حال حاضر، زمانی که بازدید کننده به یک صفحه دیگر در سایت شما وارد می شود، مرورگر همان کوکی را برای سرور جهت بازیابی می فرستد. هنگامی که بازیابی می شود، سرور شما می داند / به یاد می آورد چه چیزی را پیش از آن ذخیره کرده است. کوکی ها یک رکورد داده متن ساده از 5 متغیر هستند- طول زمینه.

  • Expire (منقضی) می شود، دادۀ کوکی منقضی می شود. اگر خالی باشد، کوکی زمانیکه بازدید کننده از مرورگر خارج می شود، منقضی می شود.
  • Domain (دامنه)، نام دامنه سایت شما می باشد.
  • Path (مسیر)، مسیر دایرکتوری یا صفحه وب که کوکی را تنظیم می کند و در زمانی که خواستار بازیابی کوکی از هر دایرکتوری یا صفحه می باشید می تواند خالی باشد.
  • Secure (ایمنی)، اگر این فیلد شامل کلمه " secure " باشد، سپس کوکی تنها با یک سرور امن قابل بازیابی بوده و اگر فیلد خالی باشد، چنین محدودیتی وجود ندارد.
  • Name=Value (نام = مقدار)، کوکی ها به صورت مقدار جفت کلید تنظیم و بازیابی می شوند.

کوکی ها در ابتدا برای برنامه نویسی CGI طراحی شده بودند. داده های موجود در کوکی به طور خودکار میان مرورگر وب و سرور وب ارسال می شوند، بنابراین اسکریپت های CGI در سرور می توانند مقادیر کوکی را که در سرویس گیرنده ذخیره می شوند، بخوانند و بنویسند

جاوا اسکریپت همچنین می تواند کوکی ها را با استفاده از cookie property (خصوصیت کوکی)  Document object (سند شئ) اداره نماید. جاوا اسکریپت می تواند کوکی هایی را که برای صفحه وب فعلی اعمال می شود، read (بخواند)، create( ایجاد)، modify (اصلاح) و delete (حذف) کند.

ذخیره سازی کوکی ها

ساده ترین راه برای ایجاد کوکی، دادن یک مقدار رشته به شیء document.cookie می باشد که مانند زیر است.

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

در اینجا ویژگی expire (منقضی شدن ) اختیاری می باشد. اگر این خصیصه را با یک تاریخ یا زمان معتبر ارائه کنید، کوکی همان تاریخ یا زمان معین به پایان می رسد و بعد از آن مقدار کوکی ها قابل دسترسی نخواهد بود.

نکته: مقادیر کوکی ممکن است شامل سمیکالن (;)، کاما (,) و یا فضای خالی باشد. به همین دلیل ممکن است بخواهید از تابع () 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 می باشد. شما می توانید کوکی های چندگانه را با استفاده از چندین جفت  key=value جدا شده توسط کاما تنظیم نمایید.

خواندن کوکی ها

خواندن کوکی مانند نوشتنش ساده است ، زیرا مقدار شئ  document.cookie  همان کوکی می باشد. بنابراین شما می توانید هر بار که می خواهید به کوکی دسترسی پیدا کنید  از این رشته استفاده نمایید. رشته document.cookie یک لیست از جفت name=value جدا شده توسط سمیکالن ها را حفظ می کند، که در آن name نام کوکی و value مقدار رشته آن می باشد.

شما می توانید از تابع 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 که طول آرایه را باز می گرداند. ما در رابطه با آرایه ها در یک فصل جداگانه بحث خواهیم نمود.

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

 

تنظیم تاریخ انقضا کوکی ها

شما با استفاده از با تنظیم و ذخیره سازی تاریخ انقضا در کوکی می توانید زندگی کوکی ها را به جایی فراتر از session مرورگر فعلی گسترش دهید. این کار را می توان با تنظیم ویژگی "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>

خروجی

در صورتی که سوال و یا نظری دارید، از بخش نظرات با ما در میان بگذارید.

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد

شما چه نظر و یا سوالی درباره این نوشته دارید؟

مبحث آموزشی

آموزش جاوا اسکریپت

Learn JavaScript

سرفصل ها

پرســیدن سؤال جدید

سؤال های تخصصی خود را از ما بپرسید

دنبال کردن تلگرام کانال سافت اسکیل

https://telegram.me/softskill_ir

عملیات کاربران

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد

کلیک کنید و سوالات خود را از ما بپرسید
لطفا فرم سوال را پر کنید

سوال شما با موفقیت ثبت شد. برای اینکه بتوانیم به شما اطلاع رسانی کنیم، موارد زیر را وارد کنید:

لطفا چند لحظه منتظر بمانید ...