دوشنبه, ۱۰ اردیبهشت, ۱۴۰۳ / 29 April, 2024
مجله ویستا

Cookies


Cookies
در مباحث وب, Cookie شامل یکسری اطلاعات بوده که Server, مربوطه برای اولین بار با browser کاربر ارتباط برقرار کرده و سپس برای هربار اتصال مجدد, اطلاعات آن استفاده میکند. این اطلاعات به اصطلاح Cookie هم در Server و هم در browser به صورت فایل Plain text ذخیره میشوند.
بعنوان مسئول سایت IranJavaScript بر این عقیده هستم که میتوان کارهای مفیدی را با Cookie ها انجام داد. مثلا در صورتیکه سایت نیازمند, ثبت نام اشخاص باشد, میتوان از Cookie ها در نگهداری name user و Password بر روی درایوهایشان استفاده نمود تا از وارد کردن مجدد آنها در هربار اتصال خودداری شود. همچنین بدین صورت میتوان, تعداد دفعات استفاده از سایتها را در Cookie ها ذخیره نمود.
● اما مشخصات خاص Cookieها:
۱) از آنها نمیتوان برای بررسی محتویات هارد کاربر استفاده نمود.
۲) توسط Cookieها ویروسها, انتقال نمی یابند. بطور خلاصه, یک Cookie تنها یک فایل ساده متنی بر روی هارد دیسک کاربر بوده که برنامه نویس JavaScript بعضی از اطلاعات را در آن نگهداری میسازد.
در Cookie همچنین آدرس مربوط به Server نیز نگهداری میشود. بطور کلی میتوان اساس پیدایش آن را "Identification" نامید. بخاطر داشته باشید که بدین صورت تنها کامپیوتر متصل شده, تعیین هویت میگردد, یعنی مشخصات کاربرها و یا سایتهای مورد استفاده, مشخص نخواهد شد.
● به منظور نمایش Cookieها
if(document.cookie == "") {
document.write("There are no cookies here")
۱) در صورتیکه محتوی Cookieها خالی باشد, پیغام "There are no cookies here" نشان داده میشود. else {thisCookie = document.cookie.split("; ")
۲) ولی در صورتیکه محتوای آن خالی نباشد, مقدار تمامی Cookieهای موجود توسط document.cookie.split("; ")s گرفته شده و در متغییری بنام thisCookie قرار داده میشود. به یاد داشته باشید که توسط دستورsplit("; ")s آرایه ای از تمام Cookieها بوجود آمده تا درنهایت بتوان به مقدار هر Cookie ارجاعی داده شود. for (i=۰; i<thisCookie.length; i++) {
۳) در حلقه فوق, که شمارنده آن از صفر شروع میشود, در صورتیکه i کمتر از تعداد Cookieها در آرایه thisCookie باشد به مقدار i, یک واحد می افزاید. document.write("Cookie name is"+thisCookie[i].split("=")[۰])
document.write(",and the value is"+thisCookie[i].split("=")[۱]+"<br>")
۴) و درصورت وجود Cookie در پنجره browser ابتدا عبارت "Cookie name is" و بعد نام Cookie و به دنبال آن, عبارت and the value is به همراه مقدار Cookie نوشته میگردد.
● برای خواندن Cookie
if(document.cookie !="") {
۱) درصورت خالی نبودن محتویات Cookie به مرحله بعد میرود.
document.write("Hello, "+ document.cookie.split("=")[۱])
۲) در صورتی که Cookie خالی نباشد, رشته حرفی "Hello" به همراه مقدار موجود در Cookie در صورت نمایش, ظاهر میگردد.
ـ نکته
در صورتی که دقت کرده باشید, به این نکته پی خواهید برد که Cookie خاصی انتخاب نشده است! زیرا هر Cookie تنها توسط Server, مخصوص که برای اولین بار درون آن نوشته شده, خوانده میشود. یعنی فقط میتوانید به Cookie های مربوط به خود دسترسی پیدا نمایید.
● برای ایجاد Cookie
expireDate = new Date
۱) ابتدا تاریخ فعلی گرفته شده و در متغییر expireDate نهاده میشود.
expireDate.setMonth(expireDate.getMonth()+۶)
۲) بدین صورت مقدار تاریخ اعتبار Cookie مورد نظر, ۶ ماه تعیین میگردد.
userName = ""
۳) سپس متغییر userName با مقدار خالی تعریف میگردد.userName = document.cookie.split("=")[۱]
۴) ابتدا خالی نبودن محتوی Cookie بررسی میشود. سپس توسط متد ("=")split, هر record مربوط به Cookie به فیلدهای مختلف تقسیم میشود بطوریکه مثلاCookieField[۰]s نام وCookieField[۱]s مقدار Cookie میباشد. function setCookie() { userName = document.myForm.nameField.value
۵) در این مرحله یک تابع جدید با نامsetCookie()s ایجاد شده, سپس در خط بعد مقدار UserName توسط اطلاعات وارد شده کاربر درون فیلد فرم, مجددا نوشته میشود.
document.cookie = "username=" + username + ";expires=" + expireDate.toGMTString()
۶) همانطور که در مطالب قبل ذکر شد, Cookie ها شامل رشته های حرفی ساده میباشد, در نتیجه توسط document.cookie, نام کاربر و تاریخ انقضاء نوشته شده زیرا توسط متد toGMTString, تاریخ expireDate به رشته حرفی تبدیل شده, که نتیجتا میتوان آن را درون Cookie قرار داد.
onLoad="document.myForm.nameField.value=userName"
۷) دستور onLoad در تگ body, نام کاربر را در صورت وجود در فایل Cookie درون فیلد name مینویسد.
<input readonly type="text" name="nameField" onBlur="setCookie()" size="۴۰">
۸) نهایتا هنگام رهایی کاربر از فیلد متن, توسط کنترل کننده onBlur, تابع setCookie فرا خوانده میشود.
ـ نکته
در این اسکریپت فرض میشود User name در Cookie وجود داشته است. در مباحث بعدی, نحوه کنترل چندین Cookie نیز توضیح داده میشود.
منبع : سایر منابع


همچنین مشاهده کنید