کوکی های جاوا اسکریپت
کوکی ها (cookies) به شما امکان می دهند اطلاعات کاربر را در صفحات وب ذخیره کنید.
کوکی ها چیست؟
کوکی ها داده هایی هستند که در فایل های متنی کوچک در رایانه شما ذخیره می شوند.
هنگامی که یک وب سرور یک صفحه وب را به یک مرورگر ارسال می کند، اتصال قطع می شود و سرور همه چیز را در مورد کاربر فراموش می کند.
کوکی ها برای حل مشکل "نحوه به خاطر سپردن اطلاعات کاربر" اختراع شدند.
هنگامی که کاربر از یک صفحه وب بازدید می کند، نام او می تواند در یک کوکی ذخیره شود.
دفعه بعد که کاربر از صفحه بازدید می کند، کوکی نام او را "به خاطر می آورد".
کوکی ها در جفت های نام-مقدار (name-value) ذخیره می شوند مانند:
هنگامی که یک مرورگر یک صفحه وب را از یک سرور درخواست می کند، کوکی های متعلق به صفحه به درخواست اضافه می شوند. به این ترتیب سرور داده های لازم را برای "به خاطر سپردن" اطلاعات مربوط به کاربران دریافت می کند.
اگر پشتیبانی از کوکی های محلی (local cookies) در مرورگر شما خاموش باشد، هیچ یک از مثال های زیر کار نمی کند.
ایجاد یک Cookie با جاوا اسکریپت
جاوا اسکریپت می تواند کوکی ها را با ویژگی document.cookie ایجاد، خواندن و حذف کند.
با JavaScript می توان یک کوکی به شکل زیر ایجاد کرد:
همچنین می توانید تاریخ انقضا (در UTC time) اضافه کنید. به طور پیش فرض، وقتی مرورگر بسته می شود، کوکی حذف می شود:
با یک پارامتر مسیر (path parameter)، می توانید به مرورگر بگویید که کوکی به کدام مسیر تعلق دارد. به طور پیش فرض، کوکی متعلق به صفحه فعلی است.
خواندن یک کوکی با جاوا اسکریپت
با جاوا اسکریپت، کوکی ها را می توان به صورت زیر خواند:
document.cookie همه کوکی ها را در یک رشته بازمی گرداند مانند : ;cookie1=value; cookie2=value; cookie3=value
تغییر یک کوکی با جاوا اسکریپت
با جاوا اسکریپت، می توانید یک کوکی را به همان روشی که آن را ایجاد می کنید تغییر دهید:
کوکی قدیمی بازنویسی می شود.
حذف یک کوکی با جاوا اسکریپت
حذف یک کوکی بسیار ساده است. زمانی که یک کوکی را حذف می کنید، لازم نیست مقدار کوکی را مشخص کنید.
فقط پارامتر expires را روی تاریخ گذشته تنظیم کنید:
برای اطمینان از حذف کوکی مورد نظر باید مسیر کوکی را تعریف کنید.
اگر مسیر را مشخص نکنید، برخی از مرورگرها به شما اجازه حذف یک کوکی را نمی دهند.
رشته کوکی (Cookie String)
ویژگی document.cookie شبیه یک رشته متنی معمولی است. اما اینطور نیست.
حتی اگر یک رشته کوکی کامل را در document.cookie بنویسید، وقتی دوباره آن را بخوانید، فقط می توانید جفت نام-مقدار آن را ببینید.
اگر کوکی جدیدی ست کنید، کوکی های قدیمی تر رونویسی نمی شوند. کوکی جدید به document.cookie اضافه شده است، بنابراین اگر document.cookie را دوباره بخوانید چیزی شبیه به آنچه که در زیر می بینید را دریافت می کنید:
;cookie1 = value; cookie2 = value
اگر می خواهید مقدار یک کوکی مشخص شده را پیدا کنید، باید یک تابع جاوا اسکریپت بنویسید که مقدار کوکی را در رشته کوکی جستجو کند.
نمونه کوکی جاوا اسکریپت
در مثالی که در ادامه می آید، یک کوکی ایجاد می کنیم که نام یک بازدیدکننده را ذخیره می کند.
اولین باری که بازدیدکننده به صفحه وب می رسد، از او خواسته می شود نام خود را پر کند. سپس نام در یک کوکی ذخیره می شود.
دفعه بعد که بازدید کننده به همان صفحه می رسد، پیام خوش آمدگویی دریافت می کند.
برای این مثال 3 تابع جاوا اسکریپت ایجاد خواهیم کرد:
1 - تابعی برای تنظیم مقدار کوکی
2 - تابعی برای دریافت مقدار کوکی
3 - تابعی برای بررسی مقدار کوکی
تابعی برای ست کردن یک کوکی
ابتدا یک تابع ایجاد می کنیم که نام بازدید کننده را در یک متغیر کوکی ذخیره می کند:
مثال زیر را ببینید:
توضیح مثال داده شده:
پارامترهای تابع بالا عبارتند از نام کوکی (cname)، مقدار کوکی (cvalue) و تعداد روزهایی باقیمانده تا زمانی که کوکی باید منقضی شود (exdays).
این تابع با اضافه کردن نام کوکی، مقدار کوکی و رشته منقضی یک کوکی را ست می کند.
تابعی برای گرفتن یک کوکی
سپس، ما یک تابع ایجاد می کنیم که مقدار یک کوکی مشخص شده را برمی گرداند:
مثال زیر را ببینید.
توضیح تابع داده شده:
cookiename را به عنوان پارامتر در نظر بگیرید (cname) .
یک متغیر (name) با متن برای جستجو ایجاد کنید (cname + "=") .
رشته کوکی را رمزگشایی کنید تا کوکی ها با کاراکترهای خاص را مدیریت کنید، به عنوان مثال. '$'
document.cookie را در نقطه ویرگول به آرایه ای به نام ca (ca = decodedCookie.split(';')) تقسیم کنید.
از طریق آرایه ca حلقه بزنید (i = 0; i < ca.length; i++) و هر مقدار c = ca[i] را بخوانید.
اگر کوکی پیدا شد (c.indexOf(name) == 0)، مقدار کوکی را برگردانید (c.substring(name.length, c.length).
اگر کوکی پیدا نشد، "" را برگردانید.
تابعی برای بررسی یک کوکی
در آخر، ما تابعی را ایجاد می کنیم که بررسی می کند آیا یک کوکی ست شده است.
اگر کوکی تنظیم شده باشد، یک تبریک نمایش داده می شود.
اگر کوکی تنظیم نشده باشد، با فراخوانی تابع setCookie یک کادر اعلان نمایش می دهد که نام کاربر را می خواهد و کوکی نام کاربری را به مدت 365 روز ذخیره می کند:
مثال زیر را ببینید.
همه با هم اکنون در قطعه کد زیر:
مثال بالا تابع ()checkCookie را هنگام بارگیری صفحه اجرا می کند.