چگونه میتوان با جاوا اسکریپت یک کوکی ایجاد کرد و آن را مورد استفاده قرار داد

از OCCC Wiki
پرش به ناوبری پرش به جستجو

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

name = value
expires = date
path = path
domain = domain name
secure

با استفاده از پارامتر خط اول، نام کوکی و مقدار آن را مشخص می کنیم. با پارامترExpires در واقع تاریخ انقضای کوکی را مشخص می کنیم، یعنی تعیین می کنیم که این کوکی تا چه زمانی داده ها را در خود نگهداری کند.

var year = 365*24*60;
;()var expDate = new Date
;(expDate.setTime = (expDate.getTime()+year
;()document.cookie = "expires="+expDate.toGMTString

در این کد، طول عمر یک کوکی، یک سال در نظر گرفته شده است. در خط اول در متغیر year مدت زمان را تعیین کردیم. در خط دوم متغیری با نام expDate ایجاد کردیم که تاریخ و زمان فعلی سیستم رو ذخیره می کند.

در خط سومsetTime یکی از متدهای شیء Date است که با این متد می توانیم بصورت دستی یک زمان را برای این شیء تعیین کنیم. در این خط ما با کمک این متد مدت یک سال را در متغیر expDate ذخیره کردیم، به صورت که در داخل پرانتز ابتدا با متد getDate تاریخی را که در متغیر expDate بود را بدست آوردیم(زمان فعلی) و بعد مقدار متغیر year را به آن اضافه کردیم.

در خط آخر با استفاده از متد toGMTString که یکی از متدهای شیء Date است، و تاریخ را به وقت گرینویچ تعیین می کند، تاریخ موجود در متغیر expDate را به این فرمت تبدیل کرده و آن را در پارامتر expires کوکی ریختیم.

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

;"document.cookie="mycookie=value; path=/javascript

طریقه مقدار دادن به کوکی به این صورت می باشد که ابتدا نام پارامتر و مقدار آن را نوشته و بعد از آن یک علامت ; و بعد از این علامت یک فاصله گذاشته و بعد پارامتر بعدی را می نویسیم.

پارامتر domain:وقتی یک کوکی برای یک صفحه ایجاد می کنیم، آن کوکی فقط توسط صفحات موجود در آن سرویس دهنده قابل دستیابی است. با این پارامتر می توان کوکی را در اختیار سرویس دهنده های دیگر قرار داد. secure:این پارامتر به مرورگر می گوید که این کوکی باید در اتصال امنی ارسال شود. یعنی مرورگر و سرویس دهنده باید از امنیت HTTP پشتیبانی کنند. اگر از این پارامتر استفاده نشود، کوکی بدون رمزگذاری در شبکه ارسال می شود.
بازیابی مقادیر کوکی ها:

(function getCookie(name
{
;";"+ Var myCookie= " " +document.cookie
;"=" + var searchName=" " + name
;(Var search = myCookie.indexOf (searchName
(if (Search != -1
{ ;search+=searchName.length }
}

برای بازیابی یک کوکی که از قبل ساخته شده،از یک تابع استفاده کردیم که پارامتر آن name یعنی نام کوکی است، متغیر searchName نام کوکی را نگهداری می کند. متغیر search کوکی را بررسی می کند و با دستور if تعیین کردیم که اگر search !=-1، یعنی کوکی دارای مقدار بود، طول مقدار آن کوکی را در متغیر search ذخیره کند.متد indexOf محل وقوع رشته ای را که در پرانتز قرار دارد را برمی گرداند در این قسمت برای کوکی نام انتخاب می کنیم:

(function getCookie(name
{
;("=" + var Search = thisCookie.indexOf(name
(if(Search == -1
{;("ثبت نام کنید")document.write}
;return null
}

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

;("var usernameCookie= getCookie("Username

در این صورت کلمه Username که در پرانتز قرار دارد برای تابع getCookie فرستاده شده و به عنوان نام کوکی در نظر گرفته می شود، و مقدار تابع یعنی کدهایی که برای کوکی در تابع نوشته ایم هم در متغیر usernameCookie ذخیره می شود و این متغیر می شود همان مقدار کوکی و در نهایت دستور زیر کوکی Username را می سازد و آن را مقداردهی میکند.

;document.cookie=" Username ="+ usernameCookie + "; expires="+ expDate

حذف کوکی:

برای حذف یک کوکی باید زمان انقضای آن را به زمانی قبل از زمان فعلی تغییر دهیم.

(Function clearCookie (name
{
;Var pastDate=2*24*60
;()Var expDate=newDate
;(expDate.setTime(expDate.getTime() – pastDate
;document.cookie =" name=" + value + "; expires=" + expDate
}

فاطمه صالحی