ماهو session و تطبيق عملي مع تسجيل الدخول والخروج

الكاتب: Mr.Aziz

تاريخ النشر: 2022-10-19 07:23:02

صباح الخير.

 

 

Session: عباره عن جلسة يتم حفظ جميع العمليات الحساسه مثل كلمة المرور و تنحذف بعد فتره زمنية. هذي المعلومات تكون محفوظة داخل السيرفر و لايمكن ان يتم تعديلها نهائيآ عكس كوكيز التي يمكنك تعديل عليها بسهوله..

 

المشكلة في web sever مايعرف منهو المستخدم و ايش قاعد يسوي بضبط؟ عشان كذا اخترعو شي اسمه Session ليتم تسجيل معلومات خاصة بالمستخدم.

 

هل ينتهي session من تلقاء نفسه؟ نعم بعد فتره مثلآ 10 دقائق يتم أنهاء الجلسة و يتم تسجيلك الخروج لو انت مسجل الدخول.

 

هنا راح اعمل تطبيق عملي على تسجيل الدخول و الخروج لانه هذا أقرب شي أستطيع أوصل له كيفية عمل session.

ملاحظة مهمة: هذي تجربة فقط لايوجد له حماية او حماية باسورد. انا وضعت بهذي طريقة ليسهل الفهم session فقط.

 

 

أولآ أنا قمت بعمل جدول قواعد البيانات للمستخدم كاتجربة بحيث session تحفظ جميع معلومات تسجيل الدخول..

 

 

عملت ثلاث row كاتجربة بحيث اذا دخلت بأسم ثاني يبقي على نفس الاسم و لايتعارض مع اي اسم اخر.

 

مع الملاحظة: session مفيده جدآ في حال تريد المستخدم اذا كان اداري بشكل تلقائي يظهر له صلاحيات والعكس الصحيح.

 

 

الان عملت صفحة login.php 

 

 

النسبه session ماراح يشتغل معاك الا في حال وضعت Session_start() قبل html 

 

راح تلاحظ اني وضعته في header.php بحيث يكون session شغال على طول بجمي الصفحات الموجوده..

 

 

الان نفتح صفحة تسجيل الدخول  وراح يكون بهذي الصوره.

 

الان تابع معاي خطوه خطوه عشان نعمل جلسة تبع تسجيل الدخول.

 

 

أول شي نكتب Server method الى راح يكون POST فقط. لاني انا راح اعمل form و بيكون يستقبل البيانات تسجيل الدخول عن طريق POST فقط.

 

اي شي بداخل الدالة هذي هنا يتم أرسال البيانات عن طريق post فقط..

 

ألان يوجد متغيرتين تم أنشائها هم email و Pass 

لما تلاحظ $_POST['email '] يتم استقبالها عن طريق form

يعني يصير اي مستخدم يدخل الايميل مثلآ [email protected] يتم حفظه في المتغير $email و هكذا.

 

نفس الشئ مع الباسورد..

 

 

هنا عملت query من قواعد البيانات و اسم الجدول users 

لو تلاحظ في where email = $email 

تعني email  هو الايميل الموجود في قواعد البيانات 

$email هو ايميل التي تم أدخاله من قبل المستخدم 

مثلآ المستخدم ادخل [email protected]  و لكن في قواعد البيانات موجود [email protected] يعني تم التطابق مع بعض

 

لو في حال لم يتطابق راح يطبع الكلمة المرور او المستخدم خاطئ.

لو تطابق 

راح يروح على خطوه الى بعده.

 

و يتم عمل متغير جديد تعني UserFound يعني المستخدم موجود 

 

والان يتم عمل مقارنه بالكلمة المرور UserFound['password'] التي موجوده في قاعده البيانات 

مع كلمة المرور التي تم ادخاله من قبل المستخدم $Pass 

 

تحذير هام: هذي فقط تجربة و تعتبر ثغره. يوجد شي اسمه hash password ولكن بالمستقبل سوف اتكلم عنه.

في حال تريد تعمل موقع يجب ان تنتبه من ناحية الباسورد...

 

في حال تطابق الباسورد مع الباسورد التي تم ادخاله من قبل المستخدم

 

هنا نستخدم session ليتم حفظ المعلومات خاصة بالمستخدم 

 

لاتقلق سوف اشرح كل منها

ولكن معلومة بسيطة $userfound هذا جاي من قواعد البيانات على حسب colmn 

 

$_SESSION['logged_in '] : هذي الجلسة تصبح True دائمآ في حال المستخدم سجل دخول

يعني لنفرض بعد تسجيل الدخول مفترض يختفى كلمة تسجيل الدخول و تسجيل. راح اشرح لكم بعد قليل.

$_SESSION['user_ID '] : الجلسة يتم تسجيل ID المستخدم << نادر يستخدم ولكن هذي تجربة فقط...

$_SESSION['username '] : أسم المستخدم يتم حفظ الجلسة..

$_SESSION['email '] : ايميل المستخدم يتم حفظ الجلسة..

 

$_SESSION['success_message '] : يتم تخزين الرسالة في الجلسة

مثلآ بالصفحة الرئيسية تظهر مرحبا بك عبدالعزيز و ايميلك ... وهكذا.

header هذا الدالة يتم نقل المستخدم بشكل تلقائي الى صفحة الرئيسية بعد التسجيل الدخول.

 

 

 

ألان نذهب نفتح الملف header.php

 

تتذكرون Session التي تم عملها في صفحة تسجيل الدخول ليتم تخزين جميع المعلومات مثل logged_in 

الان نستخدمها بكل سهوله :)

أول خطوه

عملت الشرط !isset($_SESSION['logged_in']  هذا في حال المستخدم لم يعمل تسجيل الدخول يعني  logged_in is false راح تظهر له home و رابط تسجيل الدخول. راح اوضح لكم بطريقة عملية بأخر شي.

 

في حال المستخدم سجل دخول و الجلسة اصبح True هنا راح تظهر قوائم اخرى مثل تسجيل الخروج و لوحة تحكم و غيره...

 

 

الان نرجع الصفحة login.php 

 

لمسة الاخيره له نضع form 

 

بتلاحظ مكتوب  name="email" و نفس الشئ مع password  لانه بعد مايدخل القيمة راح يكون في $_POST الى فوق 

التي شرحته لكم تبع $Pass و $email 

 

 

الان نعمل صفحة بسيطة عباره عن تسجيل الخروج

في حال المستخدم سجل دخول يعني logged_in is True 

راح ينسمح الجلسة و يتم كتابة رسالة نراك مره ثانيه ..

 

بكذا أنتهينا من بناء تسجيل الدخول و تسجيل الخروج تمام!

 

ملاحظة: الموقع لايوجد فيه اي تصميم.  تم عمل هذا الموقع من أجل درس  session فقط..

 

ألان نعمل تطبيق عملي على ثلاث مستخدمين و بالصوره متحركة.

1

 

2

 

3

 

 

ألان راح تتلاحظ بالبداية في صفحة رئيسية راح تظهر لكم معلومات بسيطة 

 

ولكن عند تسجيل الدخول راح تظهر جميع معلومات التي تم تخزينها في الجلسه

مثل اسم المستخدم و ايميل و الرسائل التي تظهر.

 

بكل بساطة هذا  هو session يتم حفظ جميع معلومات المستخدم بعد التسجيل الدخول

 

ولكن بعد تسجيل الخروج راح ينمسح جميع الجلسات التي تم حفظها من قبل...

 

أشوفكم على خير..