🐘 شرح PHP

الكوكيز والجلسات

لماذا نحتاجها؟

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 والمرشّحات والدوال الراجعة.