نویسنده : |
www.srco.ir |
|
86.10.09 |
|
761 بار مشاهده |
|
كوكی های سفارشی يكی ديگر از روش های موجود جهت ذخيره اطلاعات به منظور استفاده در ساير صفحات می باشند . كوكی ، فايل های كوچكی می باشند كه بر روی هارد ديسك سرويس گيرنده ( و يا حافظه مرورگر وب در صورتی كه قصد ذخيره موقت آنها وجود داشته باشد ) ايجاد می گردند .
يكی از مزايای كوكی ها عملكرد غيرمحسوس آنها و عدم آگاهی كاربر نسبت به ذخيره اطلاعات است . علاوه بر اين كه می توان از كوكی ها در هر يك از صفحات برنامه استفاده كرد ، امكان استفاده از اطلاعات ذخيره شده در آنها طی بازديدهای آتی كاربر نيز وجود دارد ( مكانی برای ذخيره اطلاعات با طول عمر بيشتر) .
كوكی ها دارای محدوديت ها و يا چالش های مختص به خود نيز می باشند :
•
ذخيره حجم اندكی از اطلاعات :
صرفا" امكان ذخيره حجم اندكی از اطلاعات به صورت متن در آنها وجود دارد .
•
عدم ايمن بودن :
در صورتی كه كاربر كوكی و فايل مربوط به آن را پيدا می كند ، می تواند به سادگی به آن دستيابی پيدا نمايد ( خواندن ، حذف ) .
•
امكان حذف آنها توسط كاربران :
همواره اين احتمال وجود خواهد داشت كه كاربران اقدام به حذف كوكی های موجود بر روی كامپيوتر خود نمايند .
•
وجود محدوديت در برخی مرورگرها با توجه به نوع دستگاه سرويس گيرنده :
كوكی ها می توانند در تعداد مخاطبان با توجه به نوع دستگاه آنها محدوديت ايجاد نمايند . به عنوان نمونه ، بكارگيری كوكی به همراه مرورگرهای از قبل تعبيه شده در دستگاه های موبايل مناسب نمی باشد .
•
وابسته به تنظيمات كاربر :
برخی از كاربران امكان ايجاد كوكی را از طريق مرورگر خود غيرفعال می نمايند . اين كار می تواند مسائل متعددی را برای برنامه های وب به دنبال داشته باشد .
عوامل فوق باعث شده است كه كوكی به عنوان يك گزينه ضعيف برای ذخيره اطلاعات مورد توجه قرار گيرد . در مواردی كه اطلاعات پيچيده ، خصوصی و يا حجم آنها زياد باشد ، استفاده از كوكی بسيار محدود می گردد .
نحوه ذخيره و بازيابی اطلاعات
فرآيند ذخيره و بازيابی اطلاعات در يك كوكی به سادگی انجام می شود . اشياء 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>
شكل 1 ، نحوه عملكرد برنامه فوق را در اولين مرتبه دستيابی ( و با فرض عدم وجود كوكی ) نشان می دهد .
شكل 1 : نحوه عملكرد كوكی های سفارشی
و اما آخرين نكته اين كه ، برخی از ويژگی های ارائه شده در ASP. NET با استفاده از كوكی خدمات خود را ارائه می نمايند . session state كه به پياده كنندگان اجازه می دهد بطور موقت اطلاعات مرتبط با كاربر را در حافظه سرويس دهنده ذخيره نمايند و امنيت فرم ها كه اين امكان را در اختيار پياده كنندگان قرار می دهد تا بخش هائی از يك وب سايت را محدود به كاربران تائيد شده نمايند ، دو نمونه متداول در اين رابطه می باشند .