شرح الجلسات (Sessions) في PHP
عندما يسجل المستخدم الدخول إلى موقعك، تحتاج طريقة لتذكره أثناء تنقله بين الصفحات. هنا تأتي أهمية Sessions في PHP.
على عكس Cookies، بيانات الجلسة تُخزن على الخادم، وهذا يجعلها أنسب للبيانات الحساسة نسبياً.
ما هي Sessions في PHP؟
الجلسة هي مساحة تخزين مرتبطة بالمستخدم الحالي، تمكنك من حفظ بيانات مثل اسم المستخدم أو الصلاحية أثناء التصفح.
المستخدم يفتح الموقع → PHP تنشئ Session ID → البيانات تُحفظ على الخادم → الصفحات تقرأها عبر $_SESSION
مثال 1: بدء الجلسة وتخزين البيانات
الكود:
<?php
session_start();
$_SESSION["username"] = "Rachid";
$_SESSION["role"] = "admin";
?>
شرح كود PHP:
session_start()تبدأ الجلسة أو تستأنف جلسة موجودة.$_SESSIONمصفوفة لتخزين بيانات الجلسة.
session_start() قبل أي مخرجات HTML لتجنب خطأ headers already sent.
مثال 2: قراءة بيانات الجلسة في صفحة أخرى
الكود:
<?php
session_start();
echo "مرحباً بك يا " . $_SESSION["username"];
?>
أي صفحة تستدعي session_start() تستطيع الوصول إلى القيم المحفوظة لنفس المستخدم.
مثال 3: تسجيل الخروج وإنهاء الجلسة
الكود:
<?php
session_start();
session_unset();
session_destroy();
?>
شرح كود PHP:
session_unset()تزيل متغيرات الجلسة.session_destroy()تنهي الجلسة نفسها.
متى نستخدم Sessions؟
- إدارة تسجيل الدخول والخروج.
- تخزين صلاحيات المستخدم (admin/user).
- إدارة سلة المشتريات.
- حفظ رسائل مؤقتة بين الصفحات (Flash Messages).
Sessions vs Cookies باختصار
| النقطة | Sessions | Cookies |
|---|---|---|
| مكان التخزين | الخادم | المتصفح |
| الأمان للبيانات الحساسة | أفضل | أقل |
| المدة | غالباً حتى نهاية الجلسة | حسب وقت الانتهاء |
أفضل ممارسات الأمان للجلسات
- استخدم HTTPS لحماية Session ID أثناء النقل.
- غيّر Session ID بعد تسجيل الدخول عبر
session_regenerate_id(true). - لا تخزن بيانات حساسة جداً كنص خام داخل الجلسة دون حاجة.
- أنهِ الجلسة بالكامل عند تسجيل الخروج.
أخطاء شائعة للمبتدئين
- نسيان
session_start()في صفحة القراءة. - استدعاء
session_start()بعد طباعة HTML. - الاعتماد على وجود
$_SESSION["username"]بدونisset(). - تسجيل خروج المستخدم بدون
session_destroy().
تمرين تطبيقي سريع
- في صفحة أولى، ابدأ جلسة وخزن
usernameوrole. - في صفحة ثانية، اعرض القيم المخزنة للمستخدم.
- أنشئ صفحة logout تنفذ
session_unset()وsession_destroy().
الأسئلة الشائعة — FAQ
ما هي Sessions في PHP؟
آلية تخزين بيانات المستخدم على الخادم أثناء الجلسة الحالية.
كيف أبدأ Session؟
عبر session_start() قبل أي مخرجات HTML.
كيف أحفظ بيانات الجلسة؟
باستخدام مصفوفة $_SESSION مثل $_SESSION["username"] = "Ali";.
كيف أسجل خروج المستخدم؟
احذف المتغيرات بـ session_unset() ثم أنهِ الجلسة بـ session_destroy().