نحوه عملکرد کوکی های سفارشی Cookies ASP .NET
در این بخش با کوکی های سفارشی و نحوه عملکرد آنها برای ذخیره و بازیابی اطلاعات آشنا خواهیم شد .
مفاهیم و چالش ها
کوکی های سفارشی یکی دیگر از روش های موجود جهت ذخیره اطلاعات به منظور استفاده در سایر صفحات می باشند . کوکی ، فایل های کوچکی می باشند که بر روی هارد دیسک سرویس گیرنده ( و یا حافظه مرورگر وب در صورتی که قصد ذخیره موقت آنها وجود داشته باشد ) ایجاد می گردند .
یکی از مزایای کوکی ها عملکرد غیرمحسوس آنها و عدم آگاهی کاربر نسبت به ذخیره اطلاعات است . علاوه بر این که می توان از کوکی ها در هر یک از صفحات برنامه استفاده کرد ، امکان استفاده از اطلاعات ذخیره شده در آنها طی بازدیدهای آتی کاربر نیز وجود دارد ( مکانی برای ذخیره اطلاعات با طول عمر بیشتر) .
کوکی ها دارای محدودیت ها و یا چالش های مختص به خود نیز می باشند :
ذخیره حجم اندکی از اطلاعات : صرفا” امکان ذخیره حجم اندکی از اطلاعات به صورت متن در آنها وجود دارد .
عدم ایمن بودن : در صورتی که کاربر کوکی و فایل مربوط به آن را پیدا می کند ، می تواند به سادگی به آن دستیابی پیدا نماید ( خواندن ، حذف ) .
امکان حذف آنها توسط کاربران : همواره این احتمال وجود خواهد داشت که کاربران اقدام به حذف کوکی های موجود بر روی کامپیوتر خود نمایند .
وجود محدودیت در برخی مرورگرها با توجه به نوع دستگاه سرویس گیرنده : کوکی ها می توانند در تعداد مخاطبان با توجه به نوع دستگاه آنها محدودیت ایجاد نمایند . به عنوان نمونه ، بکارگیری کوکی به همراه مرورگرهای از قبل تعبیه شده در دستگاه های موبایل مناسب نمی باشد .
وابسته به تنظیمات کاربر : برخی از کاربران امکان ایجاد کوکی را از طریق مرورگر خود غیرفعال می نمایند . این کار می تواند مسائل متعددی را برای برنامه های وب به دنبال داشته باشد .
عوامل فوق باعث شده است که کوکی به عنوان یک گزینه ضعیف برای ذخیره اطلاعات مورد توجه قرار گیرد . در مواردی که اطلاعات پیچیده ، خصوصی و یا حجم آنها زیاد باشد ، استفاده از کوکی بسیار محدود می گردد .
نحوه ذخیره و بازیابی اطلاعات
فرآیند ذخیره و بازیابی اطلاعات در یک کوکی به سادگی انجام می شود . اشیاء Request و Response یک مجموعه Cookies را ارائه می نمایند . کوکی ها از طریق شی Request بازیابی و مقداردهی آنها از طریق شی Response انجام می شود . برای مقداردهی یک کوکی ، صرفا” می بایست یک شی جدید HttpCookie را ایجاد کرد . در ادامه می توان اطلاعات مورد نظر را در آن و از نوع رشته ذخیره و به پاسخ فعلی وب اضافه کرد .
‘ ایجاد شی کوکی
Dim cookie As New HttpCookie(“Preferences”)
‘ مقداردهی کوکی
cookie(“LanguagePref”) = “English”
‘ اضافه کردن کوکی به پاسخ جاری وب
Response.Cookies.Add(cookie)
کوکی فوق تا زمانی که کاربر مرورگر را close نکند ، وجود خواهد داشت و با هر درخواست ارسال می گردد . برای ایجاد یک کوکی با طول عمر بیشتر ، می توان برای آن یک تاریخ سررسید را تعریف کرد ( عمر مفید ) .
‘ مدت زمان حیات کوکی یک سال تعیین شده است
Cookie.Expires = DateTime.Now.AddYears(1)
برای بازیابی کوکی ، می توان از طریق نام استفاده شده در مجموعه Request.Cookies اقدام نمود.
‘ بررسی وجود کوکی قبل از دستیابی به آن
Dim language As String
If Cookie IsNot Nothing Then
language = Cookie(“LanguagePref”)
End If
تنها روش موجود برای حذف یک کوکی ، جایگزین کردن آن با یک کوکی است که تاریخ اعتبار آن به اتمام رسیده باشد . کد زیر نحوه انجام این کار را نشان می دهد .
Dim cookie As New HttpCookie(“LanguagePref”)
cookie.Expires = DateTime.Now.AddDays(-1)
Response.Cookies.Add(cookie)
مثال
در این مثال هدف آشنائی با نحوه ایجاد ، مقداردهی و بازیابی یک کوکی است .
در اولین مرتبه ای که صفحه درخواست می گردد به دلیل عدم وجود کوکی مورد نظر ، پیام “کاربر ناشناس ” نمایش داده شده و با ارائه یک text box این امکان در اختیار کاربر گذاشته می شود تا نام مورد نظر خود را جهت ذخیره در کوکی درج نماید . پس از این کار و همزمان با درخواست صفحه و با توجه به وجود کوکی مورد نظر ، یک پیام خوش آمدگوئی نمایش داده می شود . کوکی ایجاد شده در این مثال به مدت یک سال از تاریخ ایجاد ، اعتبار خواهد داشت .
عملیات تشخیص وجود کوکی و نمایش یک پیام خوش آمدگوئی از طریق روتین Page_Load انجام می شود . روتین cmdStoreCookiee_Click مسئولیت ایجاد کوکی و تعیین یک تاریخ اعتبار برای آن را برعهده دارد .
صفحه CookieExample.aspx
<%@ Page Language=”VB” Culture=”fa-IR” UICulture=”fa-IR” %>
<script runat=”server”>
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) _
Handles MyBase.Load
Dim Cookie As HttpCookie = Request.Cookies(“Preferences”)
If Cookie Is Nothing Then
lblWelcome.Text = “<b>کاربر ناشناس</b>”
Else
lblWelcome.Text = “<b>کوکی موجود است </b><br><br>”
lblWelcome.Text &= “خوش آمدید, “ & Cookie(“Name”)
End If
End Sub
Protected Sub cmdStoreCookiee_Click(ByVal sender As Object, ByVal e As EventArgs) _
Handles cmdStoreCookie.Click
Dim Cookie As HttpCookie = Request.Cookies(“Preferences”)
If Cookie Is Nothing Then
Cookie = New HttpCookie(“Preferences”)
End If
Cookie(“Name”) = txtName.Text
Cookie.Expires = DateTime.Now.AddYears(1)
Response.Cookies.Add(Cookie)
lblWelcome.Text = “<b>کوکی ایجاد گردید</b><br><br>”
lblWelcome.Text &= “کاربر جدید : “ & Cookie(“Name”)
End Sub</script>
<html xmlns=”http://www.w3.org/1999/xhtml” dir=”rtl” >
<head runat=”server”>
<title>تست کوکی</title>
</head>
<body style=”font-family: Tahoma”>
<form id=”form1″ runat=”server”>
<asp:Label ID=”lblWelcome” runat=”server” EnableViewState=”False” Font-Names=”Tahoma” >
</asp:Label><br /> <br />
نام:<asp:TextBox ID=”txtName” runat=”server” Width=”178px” Font-Names=”Tahoma”>
</asp:TextBox><br /><br />
<asp:Button ID=”cmdStoreCookie” runat=”server” Text=”ایجاد کوکی” Font-Names=”Tahoma” />
</form>
</body>
</html>
شکل ۱ ، نحوه عملکرد برنامه فوق را در اولین مرتبه دستیابی ( و با فرض عدم وجود کوکی ) نشان می دهد .
شکل ۱ : نحوه عملکرد کوکی های سفارشی
و اما آخرین نکته این که ، برخی از ویژگی های ارائه شده در ASP. NET با استفاده از کوکی خدمات خود را ارائه می نمایند . session state که به پیاده کنندگان اجازه می دهد بطور موقت اطلاعات مرتبط با کاربر را در حافظه سرویس دهنده ذخیره نمایند و امنیت فرم ها که این امکان را در اختیار پیاده کنندگان قرار می دهد تا بخش هائی از یک وب سایت را محدود به کاربران تائید شده نمایند ، دو نمونه متداول در این رابطه می باشند .