‎‎كوكي ها در جاوااسكريپتJavaScript Cookies -‎

Previous >    <Next  

‎كوكي ها اين امكان را ميدهد كه بتوان اطلاعات كاربر را در صفحات وب ذخيره كرد .اما بدليل ‎رعايت حريم خصوصي افراد بايستي با اجازه كاربر باشد.

‎‎كوكي ها چيستندWhat are Cookies -‎

‎‎كوكي ها داده هائي هستند كه در فايل هاي متني در كامپيوتر كاربر ذخيره ميشوند.

‎هنگاميكه يك سروروب صفحه اي را براي مرورگر ارسال ميكند، اتصال قطع وسرور همه چيز را در مورد ‎كاربر فراموش ميكند.

‎‎كوكي براي حل مشكل فوق ، يعني داشتن اطلاعاتي از كاربر بوجود آمدند:

‎‎كوكي ها بصورت زوج‎name-‎value‎ ذخيره ميشوند . مثابه زير:

‎username= John Doe‎

‎هنگاميكه يك مرورگر صفحه وبي را از سرور درخواست ميكند، كوكي هاي متعلق به صفحه به آن درخواست ‎اضافه ميگردد .به اين ترتيب سرور داده هاي لازم را براي اطلاعات مربوط به كاربران دريافت ‎ميكند.

‎‎اگر پشتيباني از كوكي هاي محلي در مرورگر شما خاموش باشد، هيچ يك از مثال هاي زير كار نميكند.

‎Create a Cookie with JavaScript‎

‎‎ايجاد كوكي با جاوااسكريپت

‎در جاوااسكريپت با ويژگي‎document.cookie‎ ميتوان كوكي را ايجاد، حذف ويا ‎آنرا بخوانيد.

‎‎در جاوااسكريپت يك كوكي ميتواند مشابه زير ايجاد شود.

document.cookie = "username=John Doe";

‎همچنين ميتوانيد تاريخ انقضا‎)‎ در زمان‎(UTC‎ اضافه كنيد .بطور پيش فرض ‎وقتي مرورگر بسته ميشود، كوكي حذف ميگردد:

document.cookie = "username=John Doe; expires=Thu, 18 Dec 2013 12:00:00 UTC";

‎با يك پارامتر مسير، ميتوانيد براي مرورگر مشخص كنيد كه كوكي به كدام مسير تعلق دارد .بصورت ‎پيش فرض متعلق به صفحه فعلي است:

document.cookie = "username=John Doe; expires=Thu, 18 Dec 2013 12:00:00 UTC; path=/";

‎‎خواندن كوكيRead a Cookie with JavaScript -‎

‎‎با جاوااسكريپت ميتوان مشابه زير كوكي را خواند:

let x = document.cookie;

‎ويژگي‎document.cookie‎ تمام كوكي هارا مشابه ‎cookie1=value; cookie2=vallue; cookie3=value; ‎‎برگشت ميدهد.

‎‎تغيير كوكيChange a Cookie with JavaScript -‎

‎‎با جاوااسكريپت مشابه با ايجاد كوكي ميتوان آن را تغييرداد .جديد جانشين قبلي ميشود:

document.cookie = "username=John Smith; expires=Thu, 18 Dec 2013 12:00:00 UTC; path=/";

‎‎حذف كوكيDelete a Cookie with JavaScript -‎

‎‎حذف كوكي بسيار ساده است .وقتي نام كوكي بدون مقدار ذكر شود، آن حذف ميگردد .مشابه زير:

document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";

‎‎توجه شود فقط تاريخ را مطابق تاريخ گذشته تنظيم كنيد.

‎براي اطمينان از حذف كوكي بايد مسير آنرا تعريف كنيد .اگر مسير مشخص نشود، برخي از مرورگرها ‎اجازه حذف آنرا نمي دهند.

‎‎رشته كوكيThe Cookie String -‎

‎برگشتي‎document.cookie‎ مشابهتي با رشته دارد، اما رشته نيست .حتي اگر ‎يك رشته كامل درdoument.cookie بنويسيد، وقتي آنرا دو باره مي خوانيد، فقط ميتوانيد زوج name-‎value‎آنرا به بينيد .

‎اگر كوكي جديدي تنظيم كنيد، كوكي هاي قديمي تر رونويسي نميشوند .كوكي جديد بهdocument.cookie ‎اضافه ميشود .اگر آنرا دو باره بخوانيد چيزي مشابه زير خواهيد ديد:

‎‎cookie1=value; cookie2=value;‎‎

‎اگر ميخواهيد مقدار يك كوكي مشخص را بيابيد، بايد يك تابع جاوااسكريپت براي پيدا كردن آن ‎بنويسيد.

‎‎مثالهاي كوكيJavaScript Cookie Example -‎

‎‎در مثالي كه در ادامه مي آيد، يك كوكي ايجاد ميشود كه نام بازديدكننده را ذخيره ميكند.

‎اولين باريكه بازديدكننده وارد صفحه وب ميشود، ازاو خواسته ميشود كه فيلد نام را پركند .سپس ‎نام بازديد كننده در كوكي ذخيره ميشود. ‎دفعه بعد كه بازديدكننده بهمان صفحه مراجعه ميكند، پيام خوش آمد دريافت ميكند.

‎‎براي مثال سه تابع جاوااسكريپت مطابق زير ايجاد ميشود:

  1. ‎‎يك تابع كه مقدار كوكي را تنظيم ميكند.
  2. ‎‎يك تابع كه مقدار كوكي را دريافت ميكند.
  3. ‎‎تابعي كه مقدار كوكي را كنترل مي نمايد.

‎‎تابع تنظيم مقدار كوكيAFunction to Set a Cookie -‎

‎ابتدا تابعي‎(‎function‎)‎ ايجاد ميشود كه نام بازديدكننده را در متغير ‎كوكي ذخيره كند.

‎‎مثال ـ تابع ذخيره كننده نام بازديد كننده

function setCookie(cname, cvalue, exdays) {
  const d = new Date();
  d.setTime(d.getTime() + (exdays*24*60*60*1000));
  let expires = "expires="+ d.toUTCString();
  document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}

‎‎پارامترهاي تابع بشرح زيرند:

‎‎اين تابع با كنارهم گذاشتن نام كوكي، مقداركوكي و منقضي آن رشته كوكي را تنظيم ميكند.

‎‎تابع دريافت كوكيA Function to Get a Coookie -‎

‎‎سپس بايد تابعي براي دسترسي يا دريافت كوكي ايجاد شود .مطابق مثال زير:

‎‎مثال ـ تابع دريافت يا دسترسي به كوكي

function getCookie(cname) {
  let name = cname + "=";
  let decodedCookie = decodeURIComponent(document.cookie);
  let ca = decodedCookie.split(';');
  for(let i = 0; i let c = ca[i];
    while (c.charAt(0) == ' ') {
      c = c.substring(1);
    }
    if  (c.indexOf(name) == 0) {
      return c.substring(name.length, c.length);
    }
  }
  return "";
}

‎‎تشريح تابع:

‎‎تابع كنترل كوكيA Function to Check a Cookie -‎

‎در پايان تابعي براي كنترل تنظيم كوكي ايجاد ميگردد .اين تابع بررسي ميكند كه آيا كوكي فوق ‎تنظيم شده ياخير .اگر تنظيم شده باشد پيغام تبريك داده ميشود.

‎اگر كوكي تنظيم نشده باشد، با فراخواني تابعsetCookie يك كادر اعلام نمايش ميدهد كه نام ‎كاربر را ميخواهد . براي نام كاربري كوكي براي مدت‎365‎ ذخيره ميشود.

‎‎مثال ـ تابع كنترل كوكي

function checkCookie() {
  let username = getCookie("username");
  if  (username != "") {
   alert("Welcome again " + username);
  } else {
    username = prompt("Please enter your name:", "");
    if  (username != "" && username != null) {
      setCookie("username", username, 365);
    }
  }
}

‎‎همه توابع فوق براي كوكي در مثال زير ميباشند:

‎‎مثال ـ مجموعه توابع كوكي

function setCookie(cname, cvalue, exdays) {
  const d = new Date();
  d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
  let expires = "expires="+d.toUTCString();
  document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}

function getCookie(cname) {
  let name = cname + "=";
  let ca = document.cookie.split(';');
  for(let i = 0; i < ca.length; i++) {
    let c = ca[i];
    while (c.charAt(0) == ' ') {
      c = c.substring(1);
    }
    if  (c.indexOf(name) == 0) {
      return c.substring(name.length, c.length);
    }
  }
  return "";
}

function checkCookie() {
  let user = getCookie("username");
  if  (user != "") {
    alert("Welcome again " + user);
  } else {
    user = prompt("Please enter your name:", "");
    if  (user != "" && user != null) {
      setCookie("username", user, 365);
    }
  }
}

--(go to editor for change code and run)

‎در مثال فوق هنگاميكه صفحه بارگذاري ميشود تابع‎checkCookie( )‎ ‎اجرا ميشود.


Previous >    <Next