این آموزش در تاریخ ۱۴۰۱/۰۴/۰۴ آپدیت شده است.

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

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

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

Free-Learn

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

اولین سوالی که اینجا پیش میاد اینه که کوکی یا Cookie چیست؟ اصلا یعنی چی؟ و به چه درد میخوره؟ چرا باید از کوکی ها استفاده کنیم؟؟

کوکی یا Cookie : خب در لغت یه معنیش یعنی شیرینی ولی خب حالا این ربطی نداره و یه معنی دیگش یعنی نگهداری اطلاعات ( داده های کوچک ) از جمله مشخصات کاربر ( نام ، ایمیل و.. ) در یک فایل متنی کوچک در سیستم شخصی خوده کاربر.

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

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

نگهداری داده های بزرگ و درکل نگهداری مطمعن داده ها ( برای همیشه ) فقط از طریق پایگاه داده ها ( مثه MySQL ) امکان پذیره، و نباید از کوکی ها برای اینکار استفاده کرد، چون کوکی ها معمولا برای نگهداری داده های کوچک و بصورت موقت استفاده میشه.

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

Free-Learn

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

برای تعریف یا ایجاد کوکی در زبان جاوا اسکریپت باید از ویژگی document.cookie استفاده کرد.

شکل کلی استفاده از این ویژگی بصورت زیر می باشد :

  • Cookie_Name : نام کوکی
  • Cookie_Value : مقدار کوکی

مثال شماره ۱ : ست کردن کوکی با نام MySite و مقدار Free-Learn

امتحان کنید

Free-Learn

نحوه فراخوانی کردن کوکی از حافظه

خب ما در مثال قبلی داده مون رو در درون کوکی ( یا در واقع در درون حافظه مرورگر یا سیستم شخصی کاربر ) قرار دادیم ( یا ست کردیم ) حالا میخوایم همون داده هارو از حافظه فراخوانی کنیم.

شکل کلی برای فراخوانی کوکی از حافظه بصورت زیر می باشد :

  • توجه : در این حالت کل داده هایی که درون کوکی قرار دارند رو نمایش میده، یعنی هرچی داخل کوکی سیستم تون باشه

مثال شماره ۱ : فراخوانی کل داده های موجود در کوکی ( که در مثال قبلی ستش کردیم )

امتحان کنید

Free-Learn

صفت های قابل استفاده در کوکی ها

چنتا صفت وجود داره که میتونیم درون کوکی ها استفاده نماییم، مثلا اینکه طول عمر کوکی چقدر باشه یا مثلا میتونیم مشخص کنیم که کوکی ها در چه صفحاتی از وبسایت فعال باشند ( این یعنی دامنه دسترسی )

نام صفت توضیح
expires برای مشخص کردن طول عمر کوکی
( استفاده از تاریخ و ساعت انقضاء )
max-age برای مشخص کردن طول عمر کوکی
( استفاده از زمان بصورت ثانیه )
path دامنه دسترسی به کوکی رو در صفحات سایت مشخص میکنه

Free-Learn

صفت expires در کوکی ها

در ادامه ی آموزش کار با کوکی ها یا Cookies در جاوا اسکریپت میخوایم با صفت expires آشنا بشیم و ببینیم این صفت چه کاری میتونه برای ما انجام بده.

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

مثال : در مثال زیر با کلیک بروی یه دکمه، کوکی تا سال ۲۰۲۵ سِت و فعال میشه و عملا تا ۲۰۲۵ در دسترس می باشد.

امتحان کنید

Free-Learn

صفت max-age در کوکی ها

این صفت هم دقیقا شبیه همون صفت expires می باشد فقط با این تفاوت که طول عمر کوکی رو با استفاده از زمان ( بصورت ثانیه ) مشخص میکنه.

مثال : در مثال زیر عمر کوکی ۱۰ ثانیه می باشد.

امتحان کنید

Free-Learn

صفت path در کوکی ها

با استفاده از صفت path در کوکی ها میتوان دامنه ی دسترسی به کوکی هارو مشخص کرد، مثلا میتونیم مشخص کنیم که یه کوکی در کل صفحات سایت در دسترس باشه یا نه مثلا مشخص کنیم فقط برای یه صفحه خاصی باشه.

مثال شماره ۱ : دامنه ی دسترسی به کوکی در تمامی صفحات سایت فعال می باشد ( بصورت پیش فرض هم همین گزینه می باشد، این یعنی کوکی در تمامی صفحاتی که با آدرس دامنه سایت شروع میشه در دسترس و فعال باشه )

مثال شماره ۲ : دامنه ی دسترسی به کوکی در صفحه خاصی می باشد ( مثلا آدرس دادیم بهش گفتیم در این صفحه خاص فقط در دسترس باشه )

Free-Learn

نحوه حذف کردن کوکی ها

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

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

خب چندین روش وجود داره برای حذف کوکی ها :

  • استفاده از تاریخ گذشته در صفت expires
  • استفاده از مقدار ۰ در صفت max-age
  • پاک کردن کوکی ها در درون خوده مرورگر

مثال شماره ۱ : استفاده از تاریخ گذشته ( هر تاریخی که قبل از تاریخ طول عمر کوکی باشه )

امتحان کنید

مثال شماره ۲ : استفاده از مقدار ۰ در صفت max-age

امتحان کنید

  • پاک کردن کوکی ها در مرورگر موزیلا فایرفاکس و گوگل کروم

در هر ۲مرورگر با استفاده از کلیدهای ترکیبی Ctrl + Shift + Del میتونید به پنجره حذف کوکی دسترسی پیدا نمایید.

Free-Learn

تنظیم و گرفتن یک کوکی خاص با یک نام خاص

اگه در مثال های بالا توجه کرده باشید، گفتم ویژگی document.cookie میاد و کل داده های درون کوکی رو برمیگردونه، یعنی اگه ۱۰ تا داده داخلش قرار داشته باشه، اون همه رو باهم برمیگردونه.

ولی خب شاید آقا من نخوام همه ی داده هارو برگردونه ، من میخوام مثلا از بین چندین داده موجود در کوکی فقط یک داده خاصی که مدنظر خودمه برش گردونم.

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

پس عملا ۳ تا تابع میخوایم :

  • برای ست / تنظیم کردن کوکی
  • برای گرفتن / دریافت کوکی
  • برای چک کردن کوکی ( برای نمایش کوکی )

تابع برای ست / تنظیم کردن کوکی

یک تابع بانام setCookie تعریف کردیم با ۳ پارامتر :

  • پارامتر cookie_name : برای دریافت یک نام برای کوکی
  • پارامتر cookie_value : برای دریافت مقدار برای کوکی
  • پارامتر exdays : برای مشخص کردن مدت زمان ( تاریخ انقضای کوکی ) ( به تعداد روز )

در خط ۴ و ۵ و ۶ اومدیم و یه تابع زمانی تعریف کردیم، در واقع برای تنظیم مدت زمان یا تاریخ انقضای کوکی، که طبق اون فرمول مدت زمان به ( روز ) محاسبه میشه. مثلا اگه بهش ۵ بدید این یعنی ۵ روز ، یعنی کوکی تا ۵ روز عمر داره

و در نهایت در خط ۷ اومدیم و کوکی رو ست کردیم ( از طریق همون پارامترهای بالا که تعریف کردیم )

و در خط ۸ یک شرط با استفاده از دستور if ایجاد کردیم، گفتیم اگه کاربر چیزی وارد نکرده بود خب بهش پیغام بده که یه چیزی وارد کن و در نهایت اگه کاربر یه چیزی وارد کرده بود، کوکی رو ( با نام و مقدار و مدت زمان انقضا ) ست میکنه.

 

تابع برای گرفتن / دریافت کوکی

با استفاده از این تابع میایم و نام کوکی رو در بین تمامی داده های موجود در کوکی یجورایی سرچ میزنیم و پیدا میکنه و در نهایت مقدار همون نام رو به ما نشون میده.

یعنی مثلا اگه ۱۰تا داده درون کوکی باشه ، این میره و اون کوکی رو سرچ میزنه که نام کوکیش برابر باشه با اون نامی که در مرحله قبلی براش تنظیم کردیم.

 

تابع برای چک کردن کوکی ( برای نمایش کوکی )

با استفاده از این تابع اومدیم و مقدار کوکی رو از حافظه گرفتیم و در نهایت در صفحه نمایش دادیم.

 

کد کامل

امتحان کنید

Free-Learn

نکات و توضیحات

  • با وجود فناوری ذخیره سازی localStorage و با توجه به ساده و راحت و پرسرعت بودنش پیشنهاد میشه از localStorage استفاده نمایید. یعنی عملا نیاز نیست از کوکی ها استفاده کنید.

Free-Learn

مثال های بیشتر

مثال شماره ۱ : تغییر رنگ زمینه صفحه توسط کاربر و ذخیره در کوکی ( در دفعات بعدی رنگ زمینه همونی خواهد بود که کاربر انتخاب کرده )

امتحان کنید

Free-Learn

دریافت PDF یا پرینت این مطلب