📁 آخر الأخبار

الدرس الثامن والعشرون: الجلسات في PHP

اهداف الدرس:
  • تعريف الجلسات
  • الكوكيز ( Cookies )
  • انشاء الجلسات بشكل مبسط
  • مثال مبسط على الجلسات

تعريف الجلسات :
هناك مشكلة كبيره في لغة HTML وذلك لانها لا تستطيع تحديد حالة المستخدم, ونعني بذلك انها لا تستطيع تتبع المستخدم من صفحه الى اخرى, هل تحتاج الى مثال ؟ فمثلا لو قام المستخدم بتنفيذ طلب اظهار صفحه ما, ثم طلب اظهار صفحه اخرى, فلا يمكن للغة HTML معرفة اذا كان الطلب تم من نفس المستخدم. وجدت الجلسات ليتم تتبع حالة المستخدم اثناء تصفحه لموقع معين. فإذا استطعنا ذلك, يمكننا عمل تسجيل دخول المستخدم واظهار بعض محتويات الصفحه على حسب درجته ومستوى تحكمه في الموقع. في لغة PHP الجلسه الواحده عباره عن رقم ( مشفر ) يتم انشاءه بطريقة عشوائيه, ويحفظ هذا الرقم عند المستخدم ( وليس السيرفر ) على طريقتين, اما في الجهاز على شكل كوكيز او على شكل رقم ينتقل من صفحه الى اخرى. هذا الرقم يقوم بالسماح لنا بتسجيل متغيرات اسمها متغيرات الجلسات ومحتويات هذه المتغيرات يتم تخزينها في جهة السيرفر ( وليس على جهاز المستخدم ) والذي يظهر للمستخدم فقط ويمكن رؤيته من قبله هو هذا الرقم العشوائي المستحيل ان يتم فهمه. هل فهمت الجلسات الى الان ؟ انا متأكد انك قمت بملاحظة هذا الرقم عند تصفحك لاحدى المواقع ويكون شكل هذا الرقم كالتالي :
الكوكيز (Cookies ) :
الكوكيز او ما يسمى باللغه العربيه ( الكعكات ) وهو اسم لا احب اطلاقه على الكويكز, عباره عن قطعه معلومات تحفظ في جهاز المستخدم ويستطيع الوصول لها فقط من قام بإنشائها ( الموقع ). دعني اختصر لك الامر لا تستخدم الكوكيز ! وهذا الذي سوف تتعلمه عند قرائة اي كتاب او اي درس عن الامان في الانترنت. حيث ان اكثر المتصفحات الجديده ومستويات الامان الموجوده بها تمنع الموقع من وضع اي معلومات في جهاز المستخدم, او على سبيل المثال المستخدم قد قام بإلغاء الكوكيز في جهازه, وحينها لن يستطيع الحصول على المراد وصاحب الموقع لن يحصل على مراده. اذن لنجلعها بكل بساطه ( لا تقم بإستخدام الكويكز في برامجك ) !
انشاء الجلسات بشكل مبسط :
سوف يكون محور درسنا عن الجلسات هو ارسال رقم الجلسه من صفحه الى اخرى وتتبع المستخدم بهذه الطريقه. رأينا في المثال بالاعلى ان رقم الجلسه موجود في المتصفح, فكر للحظات هل هذه طريقه جيده لارسال المعلومات ؟ بحيث انها ظاهره للمستخدم و ايشخص اخرى, طبعا لا ! اذن نحتاج ان نقوم بإرسال هذه المعلومات بطريقه مخفيه بحيث ان برنامج هو الوحيد الذي يستطيع استعمالها. هذه الطريقه تبدأ من لحظة دخول المستخدم الى الموقع وانشاء رقم الجلسه الخاص به, وينتهي بمجرد اغلاق المستخدم للصفحه, حيث يتم تدمير هذه الجلسه. لنقم بجعلها مبسطه وعلى شكل خطوات:
  1. بدأ الجلسه
  2. تسجيل متغير الجلسه
  3. استخدام متغير الجلسه
  4. الغاء متغير الجلسه وتدمير الجلسه
ليس بالضروره ان تكون جميع هذه الخطوات في صفحه برمجيه واحده, ويمكن ان تكون على عدة صفحات, لا تنسى ذلك !
بدأ الجلسه
يجب علينا ان نقوم بتفعيل ( بدأ ) الجلسات قبل عمل اي شي في الصفحه ويمكن فعل ذلك عن بالطريقه التاليه :
هذه الداله تقوم بالتحقق هل يوجد جلسه لهذا المستخدم ؟ اذا لا توجد جلسه تقوم بإنشاء جلسه خاصه بهذا المستخدم, فلو على سبيل المثال احمد قام بالدخول على الموقع فسوف يكون له جلسه خاصه به , ولو دخل خالد الموقع في نفس الوقت فسوف يكون له رقم اخر خاص به وهكذا. اما اذا كانت هناك جلسه خاصه بالمستخدم فسوف تقوم هذه الداله برفع المتغيرات التي تحويها هذه الجلسه لكي يتمكن لنا استعمالها في برنامجنا, ويجب عليك التذكر ان بدأ الجلسات في كل برامجك هو طريقه جيده بل ممتازه اذا كان برنامجك يعتمد على الجلسات.

تسجيل متغير الجلسه
هل تذكر المصفوفه $_GET والمصفوفه $_POST والمصفوفه $_SERVER سوف نتعلم الان مصفوفه جديده واسمها $_SESSION وهذه المصفوفه تقوم بتخزين كل المتغيرات بها. فلو اردنا ان نقوم بإنشاء متغير جلسه اسمه ( الاسم ) ونضع به القيمه 5 سوف نقوم بالتالي :

استخدام متغير الجلسه
لكي يمكنك استخدام متغير جلسه يجب علينا في البدايه بدأ الجلسه ثم استخدام المتغير عن طريق المصفوفه بالطريقه التاليه :
نفس الطرق التي تعلمناها في السابق, لا تخف من الجلسات فهي اسهل من السهوله. و اذا اردت التحقق من وجود متغير الجلسه ام لا , فسوف تعرف ذلك؟ ولتذكيرك تستخدم الطريقه isset او صديقتها empty كما تعلمنا مسبقا كالتالي:

الغاء متغير الجلسه و تدمير الجلسه
عند الانتهاء من استعمال متغير جلسه ما, يمكنك الغاء تسجيله بالطريقه التاليه :
والان بعد ان قمنا بإلغاء هذا المتغير نريد ان نقوم بتدمير الجلسه كامله لكي نقوم بالتنظيف, ويمكن عملها كالتالي:
مثال مبسط على الجلسات :
اعتقد انك تشعر بغرابه الان, هل هذه هي فقط الجلسات !! نعم عزيزي, هذه هي الجلسات ويمكن ان كلامي المبسط عنها لم يوضح الفكره, لنقم الان بعمل مثال يشرح لنا طريقة عمل الجلسات لكي توضح لك الصوره. سوف نقوم بإنشاء 3 صفحات وتتبع الجلسات بها. في الصفحه الاولى ( ses1.php ) سوف نقوم ببدأ الجلسه , وتسجيل متغير اسمه example لاحظ التالي :
و سوف يكون نتيجة الصفحه الاولى هو التالي :
لاحظ اننا بدأنا الجلسه ثم انشأنا المتغير , وعند انتهاء اسطرنا في البرنامج سوف تكون الجلسه في حالة تجميد الى ان نقوم ببدأ الجلسه في الصفحه التاليه. الان ننشئ صفحه جديده اسمها (ses2.php ) وسوف يكون محتواها هو التالي  :
لو تلاحظ اننا بدأنا الجلسه في بداية الصفحه لكي نقوم بتحميل جميع المتغيرات ثم طبعنا محتوى متغير الجلسه واخيرا قمنا بإلغاء متغير الجلسه. دقق في الصفحه وسوف ترى اننا لم ننشئ متغير جديد ولكن نفس المتغير الذي انشأناه في الصفحه الاولى انتقل الى الصفحه الثانيه. وسوف يكون ناتج هذه الصفحه هو التالي:
في الصفحه الاخير نقوم بنفس العمل ولكن عند طباعة المتغير لن نجد اي قيمه لأننا قمنا بإلغاء المتغير في الصفحه رقم ( 2 ) اليس كذلك ؟ اذن الصفحه ( ses3.php ) سوف تحوي الكود التالي:
عند عمل هذا الكود لن يقوم بطباعة محتوى المتغير لاننا الغيناه من قبل وسوف نقوم في الاخير بتدمير الجلسه كاملا, ولو حاولت ان تقوم بالدخول على الصفحه ( ses2.php ) من غير الدخول على الصفحه ( ses1.php ) فلن يوجد اي شيئ بالمتغير وهذا يؤكد لنا اننا نتابع المستخدم من صفحه الى اخرى.
ملاحظه (ضروري, ضروري, ضروري ان تقوم ببدأ الجلسه قبل ان تقوم بطباعة اي شيئ الى المتصفح والا لن يقوم برنامج بالعمل بشكل صحيح, دائما ابدأ الجلسه ثم اكتب الكود المتبقي )


سؤال على الدرس :

1 – حاول ان تقوم بعمل نظام تسجيل يعتمد على الجلسات, فقط قم بمحاولات لكي تستعد للدرس القادم

الـــدرس الــقادم :
سوف نقوم في الدرس القادم بعمل مثال تطبيقي ( نظام تسجيل ) بإستخدام الجلسات
dwefo
dwefo
تعليقات