انتقل إلى محتوى الدرس
الدرس 23
دورة إطار العمل Laravel

إدارة الجلسات وبيانات الوميض المؤقتة في LaravelManaging HTTP Sessions and Flash Data in Laravel

تخزين واسترجاع وحذف بيانات جلسة المستخدم عبر الطلبات وعرض إشعارات الحالة المؤقتة عبر Flash Data وفق أحدث معايير إطار العمل Laravel 12 مع أمثلة وتطبيقات عملية متدرجة.
أقسام الدرس
6
الأمثلة
6
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
0
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

بما أن بروتوكول HTTP لا يحتفظ بالحالة بطبيعته، تعتمد تطبيقات الويب على الجلسات لحفظ حالة المستخدم وسلة مشترياته عبر الصفحات المتتالية. يدير إطار Laravel إعدادات الجلسات داخل ملف config/session.php عبر متغير البيئة SESSION_DRIVER الذي يعتمد مشغل قاعدة البيانات افتراضياً.

  • المشغل الافتراضي (database Driver): يحفظ Laravel 12 الجلسات افتراضياً داخل جدول sessions في قاعدة البيانات.
  • تعدد مشغلات التخزين (Storage Drivers): يدعم التشغيل عبر ملفات القرص file أو الذاكرة السريعة redis أو مصفوفة الاختبار array.
  • معرف جلسة مشفر (Session Cookie): يحتفظ المتصفح بمعرف جلسة مشفر فقط بينما تبقى البيانات الفعلية محمية في الخادم.
مخطط معماري يوضح إدارة الجلسات وبيانات الوميض المؤقتة في Laravel في إطار العمل Laravel 12
PHP
# In .env configuration:
SESSION_DRIVER=database
SESSION_LIFETIME=120
SESSION_ENCRYPT=false

يمكنك قراءة وتخزين بيانات الجلسة إما عبر كائن الطلب $request->session أو باستخدام الدالة المساعدة العالمية session. فتمرير اسم المفتاح النصي يسترجع القيمة مع دعم القيمة الافتراضية، بينما يقوم تمرير مصفوفة ترابطية بحفظ المفاتيح وقيمها داخل الجلسة.

  • القراءة مع قيمة افتراضية (get / session): تسترجع القيمة المخزنة أو تعيد القيمة البديلة عند عدم وجود المفتاح.
  • تخزين البيانات (put / Array): تحفظ القيم داخل الجلسة مع دعم الصيغة النقطية للمصفوفات المتداخلة.
  • الوصول المزدوج السهل (Request or Helper): تعمل الدالة المساعدة session بنفس كفاءة كائن الجلسة داخل المتحكمات والقوالب.
PHP
<?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
<?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
<?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
<?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
<?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

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 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

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 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.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. اكتب ونفّذ المثال البرمجي المشروح في قسم «إعداد مشغلات الجلسات في Laravel» داخل مشروع Laravel 12 المحلي وتحقق من النتيجة.

  2. بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم «قراءة وتخزين البيانات في الجلسة» وقارن مخرجات التنفيذ.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

8أسئلة 3أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي8 أسئلة تنتظرك
01

ما الهدف الهندسي الأساسي من إعداد مشغلات الجلسات في Laravel في إطار العمل Laravel 12؟

يسهم إعداد مشغلات الجلسات في Laravel في تنظيم منطق التطبيق بأسلوب معياري آمن وقابل للصيانة في Laravel 12.

02

يساعد الالتزام باصطلاحات Laravel 12 الرسمية في قسم «قراءة وتخزين البيانات في الجلسة» على رفع جودة الكود وسهولة اختباره آلياً.

صواب؛ الالتزام بالمعايير القياسية في Laravel 12 يجعل الكود واضحاً وسهل الفحص والصيانة.

03

أي آلية في Laravel 12 تتولى إدارة فحص وحذف بيانات الجلسة المخزنة بشكل مباشر ومنظم؟

توفر طبقة إطار العمل وحاوية الخدمات في Laravel 12 الأدوات القياسية لإدارة فحص وحذف بيانات الجلسة المخزنة.

04

لماذا يُعد تطبيق الإشعارات المؤقتة عبر بيانات الوميض مهماً عند بناء تطبيقات Laravel 12 جاهزة للإنتاج؟

لأنه يمنع الأخطاء البرمجية الخفية ويوحد سلوك التطبيق بين بيئتي التطوير والإنتاج.

05

في Laravel 12، يُنصح بكتابة مفاتيح الإنتاج السرية مباشرة داخل ملفات الكود المصدري المرفوعة إلى Git بدلاً من ملفات البيئة.

خطأ؛ يجب حفظ المفاتيح والبيانات السرية في متغيرات البيئة وعدم رفعها أبداً إلى مستودع Git.

06

ما المزايا الهندسية التي يحققها تطبيق تجديد معرف الجلسة وحماية الأمان في Laravel 12؟ (اختر كل ما ينطبق)

يوفر فصلاً واضحاً للمسؤوليات، وأماناً أعلى أثناء التنفيذ، وتعاوناً أسهل بين أفراد الفريق.

07

يوظف إطار العمل Laravel 12 ميزات PHP 8 الحديثة مثل تحديد أنواع القيم المرجعة لجعل الكود أكثر وضوحاً وأماناً.

صواب؛ يعتمد Laravel 12 بشكل كامل على الصياغة الحديثة للغة PHP 8.2+ وسلامة الأنواع.

08

ما الفرق الجوهري بين معيار Laravel 12 الحديث والملفات اليدوية التقليدية في مرجع دوال إدارة الجلسات والوميض؟

يوفر Laravel 12 واجهات قياسية موحدة وحماية مدمجة تغني عن الكود اليدوي المعرض للأخطاء.