شرح الكوكيز (Cookies) في PHP
أحياناً تحتاج أن يتذكر الموقع شيئاً عن المستخدم بين الزيارات، مثل اللغة المفضلة أو وضع الواجهة. هنا نستخدم Cookies.
الكوكيز تُخزن في متصفح المستخدم، وتُرسل مع كل طلب إلى الخادم ضمن نفس النطاق.
ما هي Cookies في PHP؟
الكوكيز هي بيانات نصية صغيرة يحفظها المتصفح. في PHP يمكنك إنشاءها عبر setcookie()
وقراءتها من $_COOKIE.
الخادم يرسل Cookie → المتصفح يحفظها → يرسلها تلقائياً في الطلبات القادمة
مثال 1: إنشاء Cookie باستخدام setcookie()
الكود:
<?php
$name = "user_lang";
$value = "ar";
setcookie($name, $value, time() + (86400 * 30), "/");
?>
شرح كود PHP:
86400عدد الثواني في اليوم.- القيمة
(86400 * 30)تعني انتهاء بعد 30 يوماً. "/"يجعل الكوكيز متاحة في كامل الموقع.
setcookie() قبل أي مخرجات HTML، وإلا ستظهر مشكلة headers already sent.
مثال 2: قراءة Cookie من $_COOKIE
الكود:
<?php
if (isset($_COOKIE["user_lang"])) {
echo "لغتك المفضلة: " . $_COOKIE["user_lang"];
} else {
echo "لم يتم ضبط اللغة بعد";
}
?>
نستخدم isset() لتجنب الوصول إلى مفتاح غير موجود داخل $_COOKIE.
مثال 3: حذف Cookie
الكود:
<?php
setcookie("user_lang", "", time() - 3600, "/");
?>
عند تعيين وقت انتهاء في الماضي، يتعامل المتصفح مع الكوكيز على أنها منتهية ويحذفها.
متى نستخدم Cookies؟
- تذكر اللغة المفضلة.
- تذكر الثيم (فاتح/داكن).
- تخزين معرف بسيط لتجربة المستخدم (غير حساس).
Cookies vs Sessions باختصار
| النقطة | Cookies | Sessions |
|---|---|---|
| مكان التخزين | جهاز المستخدم (المتصفح) | الخادم |
| الملاءمة للبيانات الحساسة | غير مناسبة | أفضل |
| مدة الاحتفاظ | حسب وقت الانتهاء | عادة حتى انتهاء الجلسة |
أفضل ممارسات الأمان للكوكيز
- لا تخزن كلمات مرور أو بيانات مالية في الكوكيز.
- استخدم
httponlyوsecureوsamesiteعندما يلزم. - تحقق دائماً من صحة أي قيمة قادمة من
$_COOKIE.
أخطاء شائعة للمبتدئين
- استدعاء
setcookie()بعد طباعة HTML. - قراءة
$_COOKIEبدونisset(). - تخزين بيانات حساسة مباشرة داخل الكوكيز.
- نسيان تحديد مسار مناسب عند إنشاء الكوكيز.
تمرين تطبيقي سريع
- أنشئ Cookie باسم
site_themeبقيمةdarkلمدة 7 أيام. - اعرض رسالة مختلفة حسب قيمة الكوكيز.
- أضف زر لحذف الكوكيز عبر تعيين وقت انتهاء في الماضي.
الأسئلة الشائعة — FAQ
ما هي Cookies في PHP؟
بيانات صغيرة يخزنها المتصفح لتذكر معلومات المستخدم بين الزيارات.
كيف أنشئ Cookie؟
عبر setcookie() قبل أي مخرجات HTML.
كيف أقرأ Cookie؟
باستخدام $_COOKIE بعد التحقق من وجود المفتاح.
هل الكوكيز مناسبة للبيانات الحساسة؟
لا، الأفضل استخدام Sessions للبيانات الحساسة.