15-11-13, 06:47 PM
Session
تستخدم السيشن ( الجلسة ) لتخزين بيانات المستخدم على السيرفر لفترة زمنية محددة ( افتراضيا 20 دقيقة ) , لكل سيشن ID فريد يميزها عن غيرها حتى لو كان لهم نفس الاسم فلا مشكلة , يقوم السيرفر بربط طلبات مستعرض معين مع السيشن الخاص به عن طريق هذا الـ ID حيث يتم أرساله واستقباله عبر cookie , أو عبر الـ URL إذا كانت الخاصية cookieless تساوي true كما سنرى لاحقا.
والسيشن تنشأ لكل مستخدم في بداية تصفحه للموقع ويتم إطلاق الحدث Session_OnStart , وعند انتهاء زمن السيشن يتم إطلاق الحدث Session_OnEnd
من أهم خصائص الـ session :
Timeout : تحديد الفترة الزمنية للإحتفاظ بالسيشن مقدرة بالدقائق ( افتراضيا 20 دقيقة ) ويتم إعادة البدء بحساب الزمن من الصفر عند كل عملية وصول للسيشن ( قراءة أو كتابة ) , أكبر قيمة يمكن أن تأخذها هذه الخاصية هي 525600 وهي تعادل سنة واحدة .
Mode : وهي تحدد طريقة تخزين السيشن على السيرفر وتأخذ أحد القيم التالية :
1- InProc : وهو الخيار الافتراضي , حيث يتم تخزين السيشن في ذاكرة السيرفر ( رام ) وهو نمط التخزين الوحيد الذي يدعم الحدث Session_OnEnd
2- StateServer : يتم تخزين السيشن في بروسيس ( process ) مستقلة عن بروسيس التطبيق , وبالتالي تضمن الاحتفاظ بقيمها في حالة إعادة تشغيل التطبيق ( restart ) كما تسمح بالوصول للقيم من أكثر من web service واحدة
3- SQLServer : يتم تخزين السيشن في قاعدة بيانات SQL Server , وبالتالي تضمن الاحتفاظ بقيمها في حالة إعادة تشغيل التطبيق ( restart ) كما تسمح بالوصول للقيم من أكثر من web service واحدة
4- Custom : حيث نحدد أسلوب خاص بنا لتخزين السيشن , يتطلب تحضيرات عديدة كتعريف الاتصال وطريقة التخزين وغيره ...
5- Off : إلغاء تفعيل السيشن
Cookieless : تحدد أسلوب تبادل معلومات السيشن بين السيرفر والمتصفح وتأخذ أحد القيم التالية :
AutoDetect : يقوم بتحديد هل المتصفح يدعم استخدام الـ cookie فإن كان يدعمها فيتم استخدام الـ cookie وإلا فإنه يتم تمرير معلومات السيشن عبر الـ URL
UseCookies : الإصرار على استخدام الكوكيز بغض النظر إن كانت مدعومة من المتصفح أم لا , وهو الخيار الافتراضي
UseUri : استخدام الـ URL لتبادل معلومات السيشن حتى إن كان المتصفح يدم الكوكيز
True : منع استخدام الكوكيز الخاصين بالسيشن وبالتالي استخدام الـURL
False : السماح باستخدام الكوكيز الخاصين بالسيشن
IsCookieless : تعيد True إذا كانت معلومات السيشن مضمنة في الـ URL , وإلا فإنها تعيد
False
قسم عملي :
في البداية نقوم باستدعاء فضاء العناوين التالي
PHP كود :
using System.Web.SessionState;
إنشاء سيشن اسمها MySession وقيمتها Hello World
PHP كود :
Session["MySession"] = "Hello World";
الحصول على ID السيشن السابقة
PHP كود :
string id = Session.SessionID;
تحديد زمن بقاء السيشن بـ 30 دقيقة
PHP كود :
Session.Timeout = 30;
قراءة المعلومات المخزنة بالسيشن
PHP كود :
string value = Session["MySession"].ToString();
معرفة أسلوب تخزين السيشن على السيرفر
PHP كود :
string mode = Session.Mode.ToString();
معرفة قيمة الخاصية IsCookieless
PHP كود :
bool is_cookieless = Session.IsCookieless;
والله ولي التوفيق
عش كل لحظة وكأنها آخر لحظة في حياتك عش بحبك لله عز وجل عش بالتطبع بأخلاق الرسول عليه الصلاة والسلام عش بالأمل ، عش بالكفاح عش بالصبر عش بالحب ، وقدر قيمة الحياة