🥇 1. ما هي الكوكيز Cookies؟
🔹 التعريف:
الكوكيز هي ملفات صغيرة يتم تخزينها في جهاز المستخدم (المتصفح) تحتوي على بيانات تُستخدم لتذكُّر المستخدم أو تتبع نشاطه بين الصفحات.
✅ الفائدة:
- تذكُّر المستخدم بعد زيارته للموقع.
- حفظ تفضيلات المستخدم مثل اللغة.
- تسجيل الدخول التلقائي.
- متابعة المستخدم لأغراض الإعلانات أو التحليل.
⚠️ المحاذير:
- يمكن قراءتها من أي شخص لديه صلاحية الوصول للمتصفح.
- لا تُستخدم لتخزين بيانات حساسة (كلمات المرور، بيانات بنكية).
- تتأثر بحظر الكوكيز في المتصفح.
🥈 2. إنشاء Cookie باستخدام setcookie()
🔸 الصيغة الأساسية:
setcookie(name, value, expire, path, domain, secure, httponly);
PHP🔹 أهم المعاملات:
المعامل | الشرح |
---|---|
name | اسم الكوكي |
value | القيمة التي سيتم تخزينها |
expire | وقت الانتهاء بتنسيق timestamp (مثل: time() + 3600 ) |
path | المسار الذي تظهر فيه الكوكيز (مثلاً / ) |
domain | النطاق المسموح له باستخدام الكوكيز |
secure | تُرسل فقط في الاتصال المشفّر (HTTPS) |
httponly | لا يمكن الوصول إليها من JavaScript |
✅ مثال بسيط:
setcookie("username", "yasin", time() + 3600); // تدوم ساعة
PHP🥉 3. قراءة Cookie باستخدام $_COOKIE
if (isset($_COOKIE['username'])) {
echo "مرحبا " . $_COOKIE['username'];
} else {
echo "لا توجد كوكي محفوظة باسم username";
}
PHP✅ $_COOKIE
هو مصفوفة تحتوي على جميع الكوكيز الموجودة حاليًا.
🏅 4. تعديل Cookie موجودة
لا يمكن تعديل الكوكي مباشرة، لكن:
✅ يتم تعديلها بإعادة إنشائها بنفس الاسم:
setcookie("username", "newValue", time() + 3600);
PHP🎯 5. حذف Cookie
نُعطيها وقتًا منتهيًا بالماضي:
setcookie("username", "", time() - 3600);
PHP🔎 6. التحقق من وجود Cookie
if (isset($_COOKIE['username'])) {
// موجودة
}
PHP⏳ 7. مدة حياة Cookie
- مؤقتة: بدون
expire
، تنتهي عند إغلاق المتصفح. - دائمة: مع
expire
، وتبقى حتى تنتهي أو يحذفها المستخدم.
📁 8. مكان تخزين الكوكيز
- يتم تخزينها في المتصفح (ليس على السيرفر).
- يمكن عرضها عبر أدوات التطوير في المتصفح (DevTools > Application > Cookies).
🔐 9. كوكيز آمنة – Secure / HttpOnly / SameSite
الخيار | الفائدة |
---|---|
Secure | تمنع إرسال الكوكيز في HTTP العادي، فقط HTTPS |
HttpOnly | تمنع JavaScript من الوصول إلى الكوكي |
SameSite | تمنع هجمات CSRF |
setcookie("auth", "abc123", time()+3600, "/", "", true, true);
PHP⚙️ 10. قيود على الكوكيز
- الحجم الأقصى 4096 بايت (4 KB)
- العدد الأقصى 20–50 كوكيز لكل نطاق
- لا يُخزَّن فيها بيانات كثيرة أو سرية
🔁 11. الفرق بين setcookie()
و setrawcookie()
الوظيفة | الفرق |
---|---|
setcookie() | تُشفّر القيمة تلقائيًا (URL-encoded) |
setrawcookie() | لا تقوم بالتشفير |
مثال:
setcookie("test", "a+b"); // تُصبح a%2Bb
setrawcookie("test", "a+b"); // تبقى a+b
PHP💡 12. تطبيق عملي على Cookies
✅ مثال: تذكُّر اسم المستخدم
// عند تسجيل الدخول
setcookie("username", "Yasin", time() + (86400 * 30)); // 30 يوم
// في الصفحة الرئيسية
if (isset($_COOKIE['username'])) {
echo "أهلاً بعودتك، " . $_COOKIE['username'];
}
PHP🆚 13. مقارنة بين Cookie و Session
المعيار | Cookie | Session |
---|---|---|
التخزين | في المتصفح | في الخادم |
الأمان | أقل أمانًا | أكثر أمانًا |
الصلاحية | حسب الزمن | حسب الجلسة |
الحجم | صغير | يمكن أن يكون أكبر |
📌 14. نصائح وتوصيات
✅ ما يجب فعله:
- استخدم
HttpOnly
لحماية الكوكيز. - استخدم
Secure
إذا كنت على HTTPS. - شفر المعلومات إن كانت خاصة.
- نظّف الكوكيز عند تسجيل الخروج.
❌ ما يجب تجنّبه:
- لا تخزن كلمات مرور أو بيانات بطاقة ائتمان.
- لا تعتمد على الكوكيز فقط في التحقق من الهوية.