تعرف على الجلسات (Sessions) في Laravel، كيف تعمل، طرق تخزينها، وأفضل الممارسات لحمايتها. سنشرح بالتفصيل كيفية استخدام الملفات، قاعدة البيانات، و Redis لتخزين الجلسات، مع نصائح للأمان مثل التشفير، حماية الجلسات من الاختراق، ومنع JavaScript من الوصول إ...

كل حاجة عن الجلسات (Sessions) في Laravel للمبتدئين
Table of contents [Show]
🤔 يعني إيه جلسات (Sessions)؟
لو دخلت على موقع وسجلت دخول، الموقع إزاي بيعرف إنك لسه مسجل دخول لما تروح لصفحة تانية؟ 🤔
هنا بييجي دور الجلسات (Sessions)! الجلسة هي معلومات مؤقتة بيخزنها السيرفر عنك عشان تفضل متصل بالموقع بدون ما تعيد تسجيل الدخول في كل صفحة.
🎯 مثال عملي على الجلسات
لما تسجل دخول في موقع، Laravel بيحفظ بياناتك في جلسة.
كل مرة تزور صفحة جديدة، السيرفر بيشوف الجلسة ويتأكد إنك نفس المستخدم.
لما تسجل خروج، Laravel يمسح الجلسة وتحتاج تسجل دخول من جديد.
🛠️ إزاي Laravel بيتعامل مع الجلسات؟
Laravel بيوفر كذا طريقة لتخزين الجلسات، منها:
الملفات (`file`) → Laravel بيخزن الجلسة في ملف محلي.
قاعدة البيانات (`database`) → Laravel بيحفظ الجلسة جوه MySQL أو PostgreSQL.
Redis (`redis`) → Laravel بيستخدم قاعدة بيانات في الرام للتخزين السريع.
الكاش (`memcached`) → الجلسات بتتخزن في الذاكرة بدل الهارد ديسك.
🛠️ إزاي نستخدم الجلسات في Laravel؟
1️⃣ حفظ بيانات في الجلسة
session(['user_name' => 'Ibrahim']);
2️⃣ قراءة بيانات الجلسة
$name = session('user_name');
echo $name; // Ibrahim
3️⃣ حذف بيانات الجلسة
session()->forget('user_name');
4️⃣ حذف كل الجلسة (تسجيل خروج)
session()->flush();
🔥 إزاي تخزن الجلسات بطريقة آمنة؟
1- استخدام HTTPS للجلسات
SESSION_SECURE_COOKIE=true
2- منع JavaScript من الوصول للجلسات
'http_only' => true,
3- تشفير بيانات الجلسة
'encrypt' => true,
🚀 إزاي نختار طريقة تخزين الجلسات؟
1- تخزين الجلسات في الملفات (File Sessions)
SESSION_DRIVER=file
2- تخزين الجلسات في قاعدة البيانات (Database Sessions)
SESSION_DRIVER=database
php artisan session:table
php artisan migrate
3- تخزين الجلسات في Redis (الأفضل للأمان والسرعة)
SESSION_DRIVER=redis
redis-cli ping
🔍 الخلاصة
✅ الأفضل للأمان والسرعة؟ → Redis (SESSION_DRIVER=redis)
✅ لو مش عندك Redis؟ → قاعدة البيانات (SESSION_DRIVER=database)
❌ للاختبار أو المشاريع الصغيرة فقط؟ → الملفات (SESSION_DRIVER=file)
💡 نصيحة أخيرة: مهما كانت الطريقة اللي هتستخدمها، لازم تفعل HTTPS، تمنع JavaScript من الوصول للجلسة، وتشفر البيانات عشان تضمن أعلى مستوى أمان. 🔥🚀