ماهو 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
يعني يصير اي مستخدم يدخل الايميل مثلآ S@hotmail.com يتم حفظه في المتغير $email و هكذا.
نفس الشئ مع الباسورد..
هنا عملت query من قواعد البيانات و اسم الجدول users
لو تلاحظ في where email = $email
تعني email هو الايميل الموجود في قواعد البيانات
$email هو ايميل التي تم أدخاله من قبل المستخدم
مثلآ المستخدم ادخل Aziz@gmail.com و لكن في قواعد البيانات موجود Aziz@gmail.com يعني تم التطابق مع بعض
لو في حال لم يتطابق راح يطبع الكلمة المرور او المستخدم خاطئ.
لو تطابق
راح يروح على خطوه الى بعده.
و يتم عمل متغير جديد تعني 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 يتم حفظ جميع معلومات المستخدم بعد التسجيل الدخول
ولكن بعد تسجيل الخروج راح ينمسح جميع الجلسات التي تم حفظها من قبل...
أشوفكم على خير..