في هذا الدرس 6تصفّح المواضيع
بما أن بروتوكول HTTP لا يحتفظ بالحالة بطبيعته، تعتمد تطبيقات الويب على الجلسات لحفظ حالة المستخدم وسلة مشترياته عبر الصفحات المتتالية. يدير إطار Laravel إعدادات الجلسات داخل ملف config/session.php عبر متغير البيئة SESSION_DRIVER الذي يعتمد مشغل قاعدة البيانات افتراضياً.
- المشغل الافتراضي (database Driver): يحفظ Laravel 12 الجلسات افتراضياً داخل جدول sessions في قاعدة البيانات.
- تعدد مشغلات التخزين (Storage Drivers): يدعم التشغيل عبر ملفات القرص file أو الذاكرة السريعة redis أو مصفوفة الاختبار array.
- معرف جلسة مشفر (Session Cookie): يحتفظ المتصفح بمعرف جلسة مشفر فقط بينما تبقى البيانات الفعلية محمية في الخادم.
# In .env configuration:
SESSION_DRIVER=database
SESSION_LIFETIME=120
SESSION_ENCRYPT=false
يمكنك قراءة وتخزين بيانات الجلسة إما عبر كائن الطلب $request->session أو باستخدام الدالة المساعدة العالمية session. فتمرير اسم المفتاح النصي يسترجع القيمة مع دعم القيمة الافتراضية، بينما يقوم تمرير مصفوفة ترابطية بحفظ المفاتيح وقيمها داخل الجلسة.
- القراءة مع قيمة افتراضية (get / session): تسترجع القيمة المخزنة أو تعيد القيمة البديلة عند عدم وجود المفتاح.
- تخزين البيانات (put / Array): تحفظ القيم داخل الجلسة مع دعم الصيغة النقطية للمصفوفات المتداخلة.
- الوصول المزدوج السهل (Request or Helper): تعمل الدالة المساعدة session بنفس كفاءة كائن الجلسة داخل المتحكمات والقوالب.
<?php
public function switchCurrency(Request $request)
{
$request->session()->put('currency', 'USD');
$current = session('currency', 'SAR');
return back();
}
لفحص مفاتيح الجلسة بدقة، تتحقق دالة has من وجود المفتاح وعدم كونه null، بينما تُرجع دالة exists القيمة true حتى لو كانت قيمة المفتاح null. كما يمكنك الإضافة لمصفوفة عبر push، أو سحب القيمة وحذفها معاً عبر pull، أو مسح المفاتيح عبر forget وflush.
- فحص الوجود والقيمة (has vs exists): تشترط has ألا تكون القيمة null بينما تكتفي exists بوجود المفتاح في الجلسة.
- الإضافة والسحب الذري (push & pull): تضيف push عنصراً لمصفوفة بالجلسة، بينما تقرأ pull القيمة وتحذفها فوراً.
- الحذف الجزئي أو الكلي (forget & flush): تحذف forget مفتاحاً محدداً بينما تمسح flush كافة بيانات الجلسة.
<?php
use Illuminate\Http\Request;
$request->session()->push('visited_lessons', 23);
$code = $request->session()->pull('otp_code');
$request->session()->forget('temp_draft');
بعد إرسال نموذج وإعادة توجيه المستخدم، نحتاج غالباً لعرض إشعار نجاح يظهر في الصفحة التالية لمرة واحدة فقط ثم يختفي. توفر بيانات الوميض Flash Data عبر دالة flash أو تسلسل دالة with مع التحويل حفظ الرسالة للطلب التالي فقط ثم حذفها تلقائياً.
- بقاء لطلب واحد فقط (Flash Lifespan): تتوفر البيانات للطلب القادم مباشرة بعد التحويل ثم تُمسح تلقائياً عند تحديث الصفحة.
- الاختصار مع التحويل (redirect->with): يدمج إعادة التوجيه مع تخزين رسالة الوميض في خطوة برمجية واحدة.
- العرض في القالب (Blade Alert): افحص وجود المفتاح عبر session('status') في القالب لإظهار رسالة النجاح.
<?php
// In Controller:
return to_route('settings')->with('status', 'Saved!');
// In Blade View:
@if (session('status'))
<div class="alert">{{ session('status') }}</div>
@endif
لحماية التطبيق من هجمات تثبيت الجلسة Session Fixation عند تغير صلاحيات المستخدم، يجب توليد معرف جلسة جديد عبر دالة regenerate. وعند إنهاء الجلسة بالكامل، تُستدعى دالة invalidate التي تمسح كافة البيانات وتولد معرفاً جديداً في خطوة واحدة.
- تجديد المعرف مع بقاء البيانات (regenerate): يولد معرفاً عشوائياً جديداً للجلسة مع الاحتفاظ بالبيانات الحالية.
- إبطال الجلسة بالكامل (invalidate): يفرغ جميع بيانات الجلسة ويغير معرفها في عملية واحدة آمنة.
- صد هجمات تثبيت الجلسة (Fixation Defense): يمنع المهاجم من استغلال معرف جلسة قديم بعد تغير حالة المستخدم.
<?php
use Illuminate\Http\Request;
public function resetSession(Request $request)
{
$request->session()->invalidate();
return to_route('home');
}
يمنحك الجمع السليم بين التخزين المستمر بالجلسة ورسائل الوميض المؤقتة وتجديد المعرفات إدارة حالة قوية وآمنة لتطبيقك. راجع الدليل المرجعي التالي لاختيار دالة الجلسة المناسبة لكل سيناريو.
| وجه المقارنة الهندسي | الأسلوب اليدوي أو غير المحمي | معيار Laravel 12 الحديث |
|---|---|---|
| إدارة مخزن الجلسة | استخدام session_start ومصفوفة $_SESSION الخام مباشرة | محرك جلسات مدار يدعم قواعد البيانات وRedis عبر دالة session |
| رسائل التنبيه المؤقتة | تمرير الرسالة في رابط الصفحة ?msg=Saved فتبقى عند كل تحديث | بيانات وميض Flash Data تظهر لطلب واحد فقط عبر دالة with |
| القراءة مع الحذف الفوري | قراءة المفتاح ثم كتابة سطر منفصل لحذفه بـ unset | سحب القيمة وحذفها ذرياً في خطوة واحدة عبر دالة pull |
| حماية معرف الجلسة | بقاء نفس معرف الجلسة الثابت طوال فترة استخدام الموقع | تدوير المعرف بسهولة عبر دالتي regenerate وinvalidate |
<?php
// Read persistent state vs one-time flash message:
$cartCount = session('cart_count', 0);
$flashMsg = session('status');
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
أتقنت في هذا الدرس حول «إدارة الجلسات وبيانات الوميض المؤقتة في Laravel» مفاهيم إعداد مشغلات الجلسات في Laravel، وقراءة وتخزين البيانات في الجلسة، وفحص وحذف بيانات الجلسة المخزنة وفق معايير Laravel 12 الحديثة.
الخطوة التالية والدرس القادم
انتقل الآن إلى الدرس التالي «معالجة نماذج HTML والحماية من CSRF ومحاكاة الطرق في Laravel» للبناء التراكمي على ما تعلمته.
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.
المصطلحات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 HTTP Sessions إدارة الجلسات
- تخزين واسترجاع وحذف بيانات جلسة المستخدم عبر الطلبات وعرض إشعارات الحالة المؤقتة عبر Flash Data وفق أحدث معايير إطار العمل Laravel 12 مع أمثلة وتطبيقات عملية متدرجة.
- للمراجعة
- 02 Configuring Session Drivers in Laravel إعداد مشغلات الجلسات في Laravel
- المفهوم الهندسي والتطبيق العملي المباشر لقسم إعداد مشغلات الجلسات في Laravel في إطار العمل Laravel 12.
- للمراجعة
- 03 Reading and Storing Session Values قراءة وتخزين البيانات في الجلسة
- المفهوم الهندسي والتطبيق العملي المباشر لقسم قراءة وتخزين البيانات في الجلسة في إطار العمل Laravel 12.
- للمراجعة
- 04 Inspecting and Removing Session Data فحص وحذف بيانات الجلسة المخزنة
- المفهوم الهندسي والتطبيق العملي المباشر لقسم فحص وحذف بيانات الجلسة المخزنة في إطار العمل Laravel 12.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
الاختصارات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 MVC MVC
- Model View Controller
- النمط المعماري الذي يفصل بين نماذج البيانات Models، وطبقات العرض Views، والمتحكمات Controllers في Laravel.
- للمراجعة
- 02 CLI CLI
- Command Line Interface
- واجهة سطر الأوامر التي تعمل عبر أداة php artisan لتوليد الملفات وإدارة التطبيق.
- للمراجعة
- 03 HTTP HTTP
- Hypertext Transfer Protocol
- بروتوكول نقل النص الفائق الذي ينظم طلبات المتصفح واستجابات خادم Laravel.
- للمراجعة
- 04 PSR PSR
- PHP Standards Recommendations
- المعايير القياسية للغة PHP مثل التحميل التلقائي PSR-4 التي يلتزم بها إطار العمل Laravel.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
اكتب ونفّذ المثال البرمجي المشروح في قسم «إعداد مشغلات الجلسات في Laravel» داخل مشروع Laravel 12 المحلي وتحقق من النتيجة.
-
بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم «قراءة وتخزين البيانات في الجلسة» وقارن مخرجات التنفيذ.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.
لمحة عن التحدي8 أسئلة تنتظرك +
ما الهدف الهندسي الأساسي من إعداد مشغلات الجلسات في Laravel في إطار العمل Laravel 12؟
يسهم إعداد مشغلات الجلسات في Laravel في تنظيم منطق التطبيق بأسلوب معياري آمن وقابل للصيانة في Laravel 12.
يساعد الالتزام باصطلاحات Laravel 12 الرسمية في قسم «قراءة وتخزين البيانات في الجلسة» على رفع جودة الكود وسهولة اختباره آلياً.
صواب؛ الالتزام بالمعايير القياسية في Laravel 12 يجعل الكود واضحاً وسهل الفحص والصيانة.
أي آلية في Laravel 12 تتولى إدارة فحص وحذف بيانات الجلسة المخزنة بشكل مباشر ومنظم؟
توفر طبقة إطار العمل وحاوية الخدمات في Laravel 12 الأدوات القياسية لإدارة فحص وحذف بيانات الجلسة المخزنة.
لماذا يُعد تطبيق الإشعارات المؤقتة عبر بيانات الوميض مهماً عند بناء تطبيقات Laravel 12 جاهزة للإنتاج؟
لأنه يمنع الأخطاء البرمجية الخفية ويوحد سلوك التطبيق بين بيئتي التطوير والإنتاج.
في Laravel 12، يُنصح بكتابة مفاتيح الإنتاج السرية مباشرة داخل ملفات الكود المصدري المرفوعة إلى Git بدلاً من ملفات البيئة.
خطأ؛ يجب حفظ المفاتيح والبيانات السرية في متغيرات البيئة وعدم رفعها أبداً إلى مستودع Git.
ما المزايا الهندسية التي يحققها تطبيق تجديد معرف الجلسة وحماية الأمان في Laravel 12؟ (اختر كل ما ينطبق)
يوفر فصلاً واضحاً للمسؤوليات، وأماناً أعلى أثناء التنفيذ، وتعاوناً أسهل بين أفراد الفريق.
يوظف إطار العمل Laravel 12 ميزات PHP 8 الحديثة مثل تحديد أنواع القيم المرجعة لجعل الكود أكثر وضوحاً وأماناً.
صواب؛ يعتمد Laravel 12 بشكل كامل على الصياغة الحديثة للغة PHP 8.2+ وسلامة الأنواع.
ما الفرق الجوهري بين معيار Laravel 12 الحديث والملفات اليدوية التقليدية في مرجع دوال إدارة الجلسات والوميض؟
يوفر Laravel 12 واجهات قياسية موحدة وحماية مدمجة تغني عن الكود اليدوي المعرض للأخطاء.