السلام عليكم
الكوكيز عبارة عن ملفات صغيرة من المعلومات يقوم السيرفر بتخزينها على جهاز المستخدم ( العميل )
الكوكيز بعضها يكون مؤقت وبعضها يكون دائم ...الكوكيز المؤقته تسمى 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)
أول جملة هي انشاء كوكيز باسم myCookie ويحمل قيمة Englishكود:HttpCookie cookie=new HttpCookie(“myCookie”); objCookie[“myCookie”]= “English”; Response.Cookies.Add(objCookies);
والجملة الثانية اضافة الكوكيز الى ال 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
والأن سأعطي مثال على انشاء session Cookies ( كوكيز مؤقتة )كود:Foreach( String strKey in Request.Cookies) { Response.Write( "<li>" + strKey + "=" + Request.Cookies( strKey ).Value ); }
1- انشاء صفحة جديدة واضافة الكونترول التالية كما هو موضح في الصور
2- النقر نقرة مزدوجة بالماوس على الزر وكتابة الكود التالي
فيجوال بيسك دوت نت :
بلغة السي شارب :كود:Dim objCookie As HttpCookie objCookie = New HttpCookie(txtCookieName.Text, txtCookieValue.Text) Response.Cookies.Add(objCookie)
والكود التالي معناه تعريف كائن من الكلاس HttpCookieكود:HttpCookie objCookie = New HttpCookie(txtCookieName.Text, txtCookieValue.Text); Response.Cookies.Add(objCookie);
اسمه هو قيمة التيكست الأول وقيمته هو قيمة التكست الثاني
وبعد ذلك سيتم اضافة الكوكيز الذي تم انشاءه الى ال 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";
وعند الاسترجاع نعكس اليمن شمال والشمال يمن
أختكم إيناس
شكرا جزيلا يا أستاذي الفاضل





رد مع اقتباس

