إدارة الجلسات (Sessions) ورسائل التنبيه (Flash Messages)
تطبيقات الويب بطبيعتها "عديمة الحالة" (Stateless)، أي أنها لا تتذكر المستخدم بين كل نقرة وأخرى. هنا تأتي أهمية الجلسات (Sessions)، وهي الطريقة التي يستخدمها Laravel لتخزين المعلومات عن المستخدم عبر عدة طلبات. ومن أهم تطبيقات الجلسات هي رسائل الفلاش، وهي رسائل تظهر لمرة واحدة فقط (مثل "تم الحفظ بنجاح") ثم تختفي تلقائياً بمجرد تحديث الصفحة.
1. تخزين واسترجاع البيانات من الجلسة
يوفر لارافيل طرقاً سهلة للتعامل مع الجلسات إما عبر المساعد session() أو عبر كلاس Request:
// تخزين قيمة في الجلسة
session(['theme' => 'dark']);
// استرجاع قيمة وقيمة افتراضية إذا لم توجد
$theme = session('theme', 'light');
// مسح قيمة معينة
session()->forget('theme');
2. استخدام رسائل الفلاش (Flash Data)
رسائل الفلاش هي بيانات تُخزن للجلسة التالية فقط. هي مثالية لإخار المستخدم بنجاح عملية الإضافة أو الحذف:
PostController.php
public function store(Request $request)
{
// ... منطق الحفظ ...
return redirect()->route('posts.index')
->with('success', 'تم نشر المقال بنجاح!');
}
3. عرض الرسائل في Blade
يمكنك التاكد من وجود رسالة فلاش في الجلسة وعرضها للمستخدم باستخدام session()->has():
index.blade.php
@if(session('success'))
{{ session('success') }}
@endif
أسئلة شائعة حول الجلسات
افتراضياً، يقوم لارافيل بتخزينها في مجلد
storage/framework/sessions كملفات نصية. ولكن في المشاريع الكبيرة، يفضل تخزينها في قاعدة البيانات أو في Redis لسرعة أفضل.
الـ
session العادي يبقى مخزناً حتى يقوم المستخدم بإغلاق الموقع أو انتهاء وقت الجلسة. أما الـ flash فيختفي تلقائياً بعد أول طلب (Request) تالٍ مباشرة.
الدرس القادم
نظام المصادقة (Authentication)
تعلمنا كيف نتذكر المستخدم، الآن حان الوقت لنتعلم كيف نسمح له بإنشاء حساب وتسجيل الدخول وتأمين صفحات معينة للأعضاء فقط.
تعلم نظام تسجيل الدخول