لماذا نحتاجها؟
HTTP بلا ذاكرة — كل طلب مستقلّ. الكوكيز والجلسات تتيح "تذكّر" المستخدم بين الصفحات (تسجيل دخول، سلّة تسوّق، تفضيلات).
الكوكيز (Cookies)
تُخزَّن في متصفّح المستخدم وتُرسَل مع كل طلب:
<?php
// تعيين كوكي (يُكتب قبل أي مخرجات)
setcookie("user", "براء", time() + 3600); // ساعة
// قراءته (في طلب لاحق)
echo $_COOKIE["user"] ?? "زائر";
// حذفه (وقت انتهاء في الماضي)
setcookie("user", "", time() - 3600);
?>
⚠️ الكوكيز مخزّنة عند المستخدم ويمكن العبث بها — لا تضع فيها بيانات حسّاسة. واستدعِ
setcookieقبل أيechoأو HTML.
الجلسات (Sessions)
تُخزَّن في الخادم (أأمن)، ويُربَط المستخدم بها عبر معرّف جلسة:
<?php
session_start(); // في أعلى كل صفحة تستخدم الجلسة
// تخزين بيانات
$_SESSION["user_id"] = 42;
$_SESSION["name"] = "سارة";
?>
قراءتها في أي صفحة أخرى:
<?php
session_start();
echo $_SESSION["name"] ?? "غير مسجّل";
?>
مثال: تسجيل دخول مبسّط
<?php
session_start();
// عند نجاح التحقّق من البيانات
$_SESSION["logged_in"] = true;
$_SESSION["user_id"] = $user["id"];
// حماية صفحة
if (empty($_SESSION["logged_in"])) {
header("Location: login.php");
exit;
}
?>
تسجيل الخروج
<?php
session_start();
session_unset(); // مسح بيانات الجلسة
session_destroy(); // إنهاء الجلسة
?>
كوكيز مقابل جلسات
| كوكيز | جلسات | |
|---|---|---|
| التخزين | المتصفّح | الخادم |
| الأمان | أقل | أعلى |
| الحجم | محدود (~4KB) | كبير |
| الأنسب لـ | تفضيلات بسيطة | تسجيل دخول، بيانات حسّاسة |
أخطاء شائعة
- استدعاء
setcookieأوsession_startبعد إخراج HTML (خطأ headers). - تخزين بيانات حسّاسة في الكوكيز بدل الجلسة.
🎯 التالي: JSON والمرشّحات والدوال الراجعة.