كيفية التعامل مع الجلسات (Sessions) في PHP
تمت الكتابة بواسطة: عبد الحكيم
تارخ آخر تحديث: 09 سبتمبر 2024محتوى المقال
- ما هي الجلسات في PHP؟
- كيفية بدء جلسة في PHP
- إدارة بيانات الجلسة
- إدارة وقت انتهاء الجلسة
- أفضل الممارسات عند استخدام الجلسات في PHP
- خاتمة
الجلسات (Sessions) هي آلية مهمة في PHP تُستخدم لتخزين معلومات حول المستخدمين عبر صفحات متعددة على موقع الويب. على عكس ملفات تعريف الارتباط (Cookies)، يتم تخزين بيانات الجلسة على الخادم، مما يجعلها أكثر أمانًا لحفظ المعلومات الحساسة. في هذا المقال، سنتعرف على كيفية إنشاء الجلسات، تخزين البيانات فيها، إدارة وقت انتهاء الجلسة، وإنهاء الجلسات بشكل آمن.
ما هي الجلسات في PHP؟
الجلسة (Session) في PHP هي طريقة لتخزين المعلومات عن المستخدم أثناء تنقله بين صفحات الويب. يتم تخصيص معرف فريد لكل جلسة، ويتم استخدام هذا المعرف لتتبع المستخدم وربطه ببياناته المخزنة على الخادم. يُعتبر هذا مفيدًا بشكل خاص لتطبيقات الويب التي تتطلب الاحتفاظ بحالة المستخدم، مثل مواقع التجارة الإلكترونية أو أنظمة تسجيل الدخول.
لماذا نستخدم الجلسات؟
تُستخدم الجلسات لأنها توفر طريقة آمنة وفعالة لتخزين المعلومات الحساسة مؤقتًا. من بين الاستخدامات الشائعة للجلسات:
- تتبع حالة تسجيل الدخول للمستخدمين.
- إدارة عربات التسوق في مواقع التجارة الإلكترونية.
- تخزين تفضيلات المستخدم عبر زيارات متعددة.
كيفية بدء جلسة في PHP
لبدء جلسة جديدة في PHP، يجب استخدام الدالة session_start()
. من المهم جدًا أن يتم استدعاء هذه الدالة في بداية الملف، قبل إرسال أي بيانات إلى المتصفح (مثل الوسوم HTML).
مثال على بدء جلسة
لنبدأ بجلسة جديدة ونخزن فيها بعض المعلومات:
<?php
// بدء جلسة جديدة أو استئناف الجلسة الحالية
session_start();
// تخزين بيانات في الجلسة
$_SESSION['username'] = 'Ahmed';
$_SESSION['role'] = 'admin';
// عرض البيانات المخزنة في الجلسة
echo 'مرحبًا، ' . $_SESSION['username'] . '. دورك هو ' . $_SESSION['role'] . '!';
?>
في هذا المثال:
- نبدأ الجلسة باستخدام
session_start()
. - نخزن بيانات المستخدم مثل
username
وrole
في الجلسة باستخدام المصفوفة$_SESSION
. - نعرض البيانات المخزنة في الجلسة على المستخدم.
إدارة بيانات الجلسة
بمجرد بدء الجلسة، يمكن إضافة، تعديل، أو حذف البيانات المخزنة فيها بسهولة باستخدام المصفوفة الفائقة $_SESSION
. لنلقِ نظرة على كيفية القيام بذلك.
تحديث بيانات الجلسة
لتحديث قيمة موجودة في الجلسة، يمكنك ببساطة إعادة تعيينها:
<?php
session_start();
// تحديث قيمة الدور في الجلسة
$_SESSION['role'] = 'editor';
// عرض القيمة الجديدة
echo 'دورك الجديد هو ' . $_SESSION['role'] . '!';
?>
حذف بيانات من الجلسة
لحذف قيمة معينة من الجلسة، يمكنك استخدام الدالة unset()
:
<?php
session_start();
// حذف قيمة معينة من الجلسة
unset($_SESSION['role']);
// التحقق من حذف القيمة
if (isset($_SESSION['role'])) {
echo 'القيمة لا تزال موجودة.';
} else {
echo 'تم حذف القيمة بنجاح.';
}
?>
في هذا المثال، نقوم بحذف قيمة 'role'
من الجلسة باستخدام unset()
، ثم نتحقق مما إذا كانت القيمة قد حُذفت بنجاح.
إدارة وقت انتهاء الجلسة
تقوم الجلسات في PHP بشكل افتراضي بانتهاء صلاحيتها بعد فترة زمنية معينة من عدم النشاط. يمكن تعديل هذه الفترة الزمنية عن طريق إعدادات PHP أو برمجيًا. كما يمكن إنهاء الجلسة يدويًا عند الحاجة.
تعديل مدة الجلسة الافتراضية
يمكن تعديل مدة الجلسة الافتراضية عبر إعدادات php.ini
أو باستخدام دالة ini_set
داخل الكود.
مثال: تعديل مدة الجلسة برمجيًا
<?php
// تعيين مدة انتهاء الجلسة إلى 30 دقيقة (1800 ثانية)
ini_set('session.gc_maxlifetime', 1800);
session_start();
// متابعة باقي كود الجلسة هنا
?>
في هذا المثال، نستخدم ini_set
لتغيير مدة الجلسة إلى 30 دقيقة.
إنهاء الجلسة
عندما يريد المستخدم تسجيل الخروج، من الجيد إنهاء الجلسة بالكامل لضمان عدم بقاء أي بيانات في الجلسة.
مثال: إنهاء الجلسة
<?php
session_start();
// إلغاء جميع متغيرات الجلسة
$_SESSION = [];
// حذف كعكة الجلسة إذا كانت موجودة
if (ini_get('session.use_cookies')) {
$params = session_get_cookie_params();
setcookie(session_name(), '', time() 42000,
$params['path'], $params['domain'],
$params['secure'], $params['httponly']);
}
// تدمير الجلسة
session_destroy();
// إعادة التوجيه إلى صفحة تسجيل الدخول
header('Location: login.php');
exit();
?>
في هذا المثال، نقوم بإنهاء الجلسة بالكامل عن طريق إلغاء جميع المتغيرات، حذف كعكة الجلسة (Session Cookie)، ثم تدمير الجلسة باستخدام session_destroy()
. أخيرًا، نعيد توجيه المستخدم إلى صفحة تسجيل الدخول.
أفضل الممارسات عند استخدام الجلسات في PHP
للحفاظ على أمان وكفاءة جلسات PHP، هناك بعض أفضل الممارسات التي يجب اتباعها:
1. بدء الجلسة في بداية الملف
تأكد دائمًا من استدعاء session_start()
في بداية الملف، قبل إرسال أي بيانات إلى المتصفح، لتجنب أي مشاكل في إدارة الجلسات.
2. تأمين بيانات الجلسة
تأكد من تخزين البيانات الحساسة في الجلسات بحذر. يمكنك استخدام تقنيات التشفير لحماية البيانات الهامة.
3. تقليل وقت انتهاء الجلسة
حدد مدة زمنية قصيرة لانتهاء الجلسة لضمان عدم بقاء الجلسات غير المستخدمة نشطة لفترات طويلة، مما قد يشكل خطرًا أمنيًا.
4. استخدام HTTPS
عند استخدام الجلسات في بيئة إنتاج، تأكد من أن الموقع يعمل عبر HTTPS لضمان أن بيانات الجلسة تُرسل بشكل آمن عبر الشبكة.
5. تجنب استخدام المتغيرات العامة غير الآمنة
احرص على عدم تخزين البيانات الحساسة مباشرة في متغيرات الجلسة دون الحاجة إلى ذلك. استخدم آليات التحقق والتصفية المناسبة.
خاتمة
الجلسات في PHP توفر وسيلة فعالة وآمنة لتخزين البيانات عبر صفحات الويب خلال فترة زيارة المستخدم. من خلال فهم كيفية إنشاء الجلسات وإدارتها بشكل صحيح، يمكنك بناء تطبيقات ويب قوية وآمنة. باتباع أفضل الممارسات المذكورة، يمكنك ضمان أن تكون بيانات المستخدم آمنة ومحمية أثناء تفاعله مع موقعك.
طور مهاراتك: مقالات يجب قراءتها في البرمجة
- كيفية إنشاء جداول في HTML
- استخدام CSS لتصميم صفحات HTML
- كيفية كتابة دوال (Functions) في PHP
- كيفية تحسين أداء صفحات الويب باستخدام PHP
- كيفية إضافة صور وفيديوهات إلى صفحات HTML
- كيفية حماية نماذج HTML من الهجمات الشائعة باستخدام PHP
- كيفية إرسال رسائل بريد إلكتروني باستخدام PHP
- كيفية رفع الملفات من خلال نماذج HTML باستخدام PHP
- كيفية إنشاء نظام تسجيل دخول بسيط باستخدام PHP و HTML
- كيفية تصحيح الأخطاء (Debugging) في PHP