ماهو مصطلح session الذي نسمعة بأستمار في عالم الويب
💡 الـ Session في PHP:
هي آلية تُستخدم لتخزين بيانات المستخدم بين الصفحات أثناء تصفحه للتطبيق. على عكس الكوكيز (Cookies)، يتم تخزين بيانات الـ Session على الخادم (Server) وليس في جهاز العميل (Client) الذي هو المتصفح.
تُعتبر الـ Sessions حلاً مثاليًا لتتبع المستخدمين وضمان أمان أكبر مقارنة بالكوكيز.
---
🔑 خصائص الـ Session في PHP:1.
التخزين على الخادم: - يتم تخزين البيانات على الخادم، مما يعني أن البيانات أكثر أمانًا وأقل عرضة للتلاعب.
2.
معرّف الجلسة (Session ID): - يتم تخصيص معرف فريد لكل جلسة، يتم إرساله للعميل عبر الكوكيز أو الرابط.
3.
المدة المؤقتة: - الجلسات تنتهي بشكل افتراضي عند إغلاق المتصفح، إلا إذا تم تحديد مدة صلاحية مخصصة.
4.
سهولة الاستخدام: - لا تحتاج إلى إعدادات معقدة لتبدأ باستخدامها.
5.
تخزين البيانات الديناميكية: - تُستخدم لتخزين بيانات مثل اسم المستخدم، أدواره، والمعلومات الأخرى المؤقتة.
---
🎯 أهداف واستخدامات الـ Session: 1. المصادقة (Authentication): - تُستخدم لتتبع حالة تسجيل دخول المستخدم.
- تخزين بيانات مثل:
$_SESSION['user_id'] = 123;
$_SESSION['username'] = 'tammah';
2. إدارة الحالة (State Management): - تسمح بتخزين البيانات عبر عدة صفحات، مثل:
- عربة التسوق.
- إدخال بيانات النماذج متعددة الخطوات.
3. تخصيص تجربة المستخدم: - مثل عرض رسائل شخصية:
"مرحبًا أحمد!".
4. التحكم في الصلاحيات (Access Control): - السماح أو منع الوصول إلى صفحات معينة بناءً على دور المستخدم:
if ($_SESSION['role'] !== 'admin') {
echo 'Access Denied';
}
---
🛠 الوظائف الأساسية لإدارة الـ Session: 1. بدء الجلسة: قبل استخدام أي متغير Session، يجب بدء الجلسة باستخدام:
session_start();
2. تخزين بيانات في الـ Session: $_SESSION['key'] = 'value';
مثال:
$_SESSION['user_id'] = 1;
$_SESSION['username'] = 'tammah';
3. استرجاع بيانات من الـ Session: echo $_SESSION['key'];
مثال:
echo "User ID: " . $_SESSION['user_id'];
4. حذف بيانات معينة من الـ Session: unset($_SESSION['key']);
5. إنهاء الجلسة بالكامل: session_destroy();
- تُستخدم لتسجيل خروج المستخدم وحذف جميع البيانات المرتبطة بالجلسة.
6. تجديد معرف الجلسة (Session ID): لتأمين الجلسة بعد تسجيل الدخول:
session_regenerate_id(true);
✨ فوائد الـ Session:1. أمان عالٍ: - تخزين البيانات على الخادم يجعلها أقل عرضة للاختراق مقارنة بالكوكيز.
2. تتبع حالة المستخدم: - إمكانية تتبع حالة المستخدم بسهولة خلال تصفحه التطبيق.
3. مرونة وسهولة الاستخدام: - يمكن استخدامها لتطبيقات بسيطة ومعقدة دون الحاجة لأدوات إضافية.
4. دعم أنواع تخزين مختلفة: - يمكن استخدام قواعد بيانات أو تقنيات أخرى لتخزين الجلسات بدلاً من الملفات الافتراضية.
---
⚠️ نصائح أمان عند استخدام الجلسات:1. استخدم session_regenerate_id()
بعد تسجيل الدخول.
- هذا يمنع هجمات تثبيت الجلسات (Session Fixation).
2. تأمين الكوكيز باستخدام HTTPS. - تأكد من أن الجلسات تُنقل عبر اتصال آمن فقط.
3. تعيين وقت انتهاء للجلسة. - قم بتحديد فترة زمنية للجلسة لتقليل المخاطر:
if (time() - $_SESSION['last_activity'] > 1800) {
session_unset();
session_destroy();
}
$_SESSION['last_activity'] = time();
4. لا تخزن بيانات حساسة في الجلسة. - تجنب تخزين كلمات المرور أو البيانات السرية.