السلام عليكم
الكوكيز عبارة عن ملفات صغيرة من المعلومات يقوم السيرفر بتخزينها على جهاز المستخدم ( العميل )
الكوكيز بعضها يكون مؤقت وبعضها يكون دائم ...الكوكيز المؤقته تسمى session cookies موجودة
فقط في ذاكرة الخادم ( السيرفر )
الكوكيز الدائمة يعني بعبارة أخرى ...تبقى حية شهور أو سنوات...المتصفح الذي يدعم الكوكيز يحتفظ بملف أو أكثر وهذه الملفات تسمى cookies files في نظام التشغيل ويندوز وتسمى magic cookies في نظام التشغيل ماكنتوش وهي تحفظ بيانات من مواقع الويب
• عند استخدام الكوكيز يجب جلب فضاء الأسماء System.Net
• معظم الأوقات الكوكيز تستخدم لتخزين أسماء المستخدمين وكلمات المرور وآخر صفحة قام المستخدم بزيارتها وليس من الخطأ أن يتم حفظ اسم المستخدم ولكن غير المفضل الاحتفاظ بكلمة المرور لأنه يمكن لللمخترقين فكها
• يتم استرجاع الكوكيز من ال request object وكتابة قيمة الكوكيز باستخدام ال response object
• لتكوين session cookies يعني كوكيز مؤقته بالطريقة التالية :
فيجوال بيسك:
كود:
Dim objCookie as New HttpCookie(“myCookie”)
objCookie(“myCookie”)= “English”
Response.Cookies.Add(objCookies)
سي شارب :
كود:
HttpCookie cookie=new HttpCookie(“myCookie”);
objCookie[“myCookie”]= “English”;
Response.Cookies.Add(objCookies);
أول جملة هي انشاء كوكيز باسم myCookie ويحمل قيمة English
والجملة الثانية اضافة الكوكيز الى ال Response object
لقراءة قيمة كوكيز معين من خلال الجملة التالية :
فيجوال بيسك :
كود:
Dim objCookie as HttpCookie=Request.Cookies(“myCookie”)
سي شارب :
كود:
HttpCookie cookie= Request.Cookies[“myCookie”];
دائما الكوكيز تحتوي على قيمة string واذا أردت أن تخزن قيمة من نوع آخر يجب تحويل القيمة
ولعرض جميع الكوكيز الموجودة من خلال الكود التالي
فيجوال بيسك دوت نت:
كود:
Dim strKey As String
For each strKey in Request.Cookies
Response.Write( "<li>" & strKey & "=" & Request.Cookies( strKey ).Value )
Next
سي شارب :
كود:
Foreach( String strKey in Request.Cookies)
{
Response.Write( "<li>" + strKey + "=" + Request.Cookies( strKey ).Value );
}
والأن سأعطي مثال على انشاء session Cookies ( كوكيز مؤقتة )
1- انشاء صفحة جديدة واضافة الكونترول التالية كما هو موضح في الصور

2- النقر نقرة مزدوجة بالماوس على الزر وكتابة الكود التالي
فيجوال بيسك دوت نت :
كود:
Dim objCookie As HttpCookie
objCookie = New HttpCookie(txtCookieName.Text, txtCookieValue.Text)
Response.Cookies.Add(objCookie)
بلغة السي شارب :
كود:
HttpCookie objCookie = New HttpCookie(txtCookieName.Text, txtCookieValue.Text);
Response.Cookies.Add(objCookie);
والكود التالي معناه تعريف كائن من الكلاس HttpCookie
اسمه هو قيمة التيكست الأول وقيمته هو قيمة التكست الثاني
وبعد ذلك سيتم اضافة الكوكيز الذي تم انشاءه الى ال Response object
3- وفي نفس صفحة الكود يتم اختيار دالة ال Page_PreRender كما في الشكل التالي

وهذه الدالة يتم تنفيذها بعد رجوع الصفحة من السيرفر
ويتم كتابة الكود التالي
فيجوال بيسك دوت نت :
كود:
Dim strKey As String
For Each strKey In Request.Cookies
lblCookies.Text &= "<li>" & strKey & "=" & Request.Cookies(strKey).Value
Next
سي شارب :
كود:
foreach( String strKey In Request.Cookies)
{
lblCookies.Text += "<li>" + strKey + "=" + Request.Cookies(strKey).Value;
}
هذا الكود معناه عرض جميع الكوكيز الموجودة
ويتم التنفيذ وستكون النتيجة كالأتي

واذا تم اضافة كوكيز جديدة يتم عرضها أيضا في اسفل الصفحة
والكوكيز الدائمة يتم تعريفها بنفس الطريقة التي يتم فيها تعريف الكوكيز المؤقتة ولكن باضافة تاريخ بقاء الكوكيز وعندما المتصفح يطلب صفحة تحتوي على كوكيز دائمة يقوم بحفظها في القرص الصلب
فيجوال بيسك دوت نت :
كود:
Dim objCookie As New HttpCookie( "myPersistentCookie", "Hello!" )
objCookie.Expires = #12/25/2005#
Response.Cookies.Add( objCookie )
سي شارب :
كود:
HttpCookie objCookie = New HttpCookie( "myPersistentCookie", "Hello!”);
objCookie.Expires = #12/25/2005#;
Response.Cookies.Add( objCookie );
وهناك بعض الحدودية في الكوكيز وهي :
1- حجم ملف الكوكي محدود فهو لا يكون أكثر من KB 4 يعني لا تحاول أن تخزن بطاقات الشراء الكبيرة جدا جدا الخاصة بالمستخدم مباشرة في الكوكيز .
2- أنت لا تستطيع أن تخزن أي شيء في الكوكي ولكن يتم تخزين فقط ال string وهذا معناه أنه لا يمكن تخزين كائنات معقدة في الكوكي مثل ال HashTables وال DataSets
هنالك أيضا السيشن الموجود على ذاكرة الخادم ومدته الافتراضية 20 دقيقة ويمكن تعريفه بسهولة كالتالي
VB.NET
session("name")="Value"
C#
Session["Name"]="Value";
وعند الاسترجاع نعكس اليمن شمال والشمال يمن
أختكم إيناس
شكرا جزيلا يا أستاذي الفاضل