🍪 دليلك الشامل لفهم واستخدام الـ Cookies في لغة PHP

في هذا الدرس، سنتحدث عن مفهوم تقني مهم جداً في تطوير المواقع، وهو ملفات تعريف الارتباط أو ما نعرفه جميعاً باسم Cookies.

هل تساءلت يوماً كيف يتذكر الموقع اسمك عند العودة إليه؟ أو كيف يظل حسابك مفتوحاً حتى بعد إغلاق المتصفح؟ السر يكمن في الـ Cookies! 🌟

ما هي الـ Cookies؟ 🤔

ببساطة، الـ Cookie هي عبارة عن ملف نصي صغير جداً يتم إرساله من الخادم (Server) وتخزينه على جهاز المستخدم (المتصفح). في المرة القادمة التي يزور فيها المستخدم الموقع، يقوم المتصفح بإرسال هذا الملف مرة أخرى إلى الخادم، مما يسمح للموقع "بتذكر" معلومات معينة عن هذا المستخدم.

ملاحظة هامة: الـ Cookies تُخزن على جهاز المستخدم وليس على السيرفر.


🛠️ كيف نقوم بإنشاء Cookie في PHP؟

لإنشاء Cookie، نستخدم دالة مدمجة في PHP تسمى setcookie(). هذه الدالة تخبر المتصفح بأن يحفظ قيمة معينة لفترة زمنية محددة.

الصيغة الأساسية للدالة: setcookie(name, value, expire);

  1. Name: اسم الكوكيز (مثل "user_name").
  2. Value: القيمة التي نريد تخزينها (مثل "Ahmed").
  3. Expire: وقت انتهاء صلاحية الكوكيز (يُحسب بالثواني). إذا لم نحدد هذا الوقت، ستنتهي الكوكيز بمجرد إغلاق المتصفح.

💻 مثال عملي بسيط:

لنفرض أننا نريد تخزين اسم المستخدم لترحيب به في المرة القادمة.

<?php
// Set a cookie named "username" with the value "Ali"
// The cookie will expire in 1 hour (3600 seconds)
setcookie("username", "Ali", 3600); 

echo "Cookie has been set successfully!"; // رسالة تأكيد للمستخدم
?>

🔍 كيف نقرأ قيمة الـ Cookie؟

بعد أن قمنا بتخزين المعلومة في جهاز المستخدم، كيف نسترجعها ونعرضها؟ نستخدم مصفوفة عالمية في PHP تسمى $_COOKIE.

تذكر أننا نستخدم اسم الكوكيز الذي حددناه عند الإنشاء كمفتاح (Key) للوصول إلى القيمة.

💻 مثال عملي على القراءة:

<?php
// Check if the cookie "username" exists
if(isset($_COOKIE["username"])) {
    echo "Welcome back, " . $_COOKIE["username"] . "!"; // عرض اسم المستخدم المخزن
} else {
    echo "Welcome, guest! Please log in."; // رسالة في حال عدم وجود كوكيز
}
?>

⏳ التحكم في مدة صلاحية الـ Cookie

كما ذكرنا، الوقت يُحسب بالثواني. إذا أردت أن تدوم الكوكيز ليوم كامل، يجب أن تضرب: (24 ساعة × 60 دقيقة × 60 ثانية) = 86400 ثانية.

مثال لكوكيز تدوم لمدة يوم:

<?php
// Set cookie to expire in 24 hours
setcookie("user_theme", "dark_mode", time() + 86400); 
?>

استخدام time() هنا يضيف الثواني إلى الوقت الحالي.


🗑️ كيف نقوم بحذف الـ Cookie؟

لا توجد دالة تسمى deletecookie! لحذف كوكيز، نقوم ببساطة باستخدام دالة setcookie() مرة أخرى ولكن مع جعل وقت الانتهاء في الماضي (أي تاريخ قديم)، مما يجعل المتصفح يمسحها فوراً.

💻 مثال على الحذف:

<?php
// Set the expiration date to one hour ago
setcookie("username", "", time() - 3600); 

echo "The cookie has been deleted!"; // إشعار بحذف الكوكيز
?>

⚠️ ملاحظات ذهبية للمبتدئين:

  1. المكان الصحيح: يجب استدعاء دالة setcookie() قبل كتابة أي كود HTML أو إرسال أي مخرج (Output) للمتصفح، لأن الكوكيز تُرسل في "رأس الصفحة" (HTTP Header).
  2. الأمان: لا تخزن أبداً كلمات مرور أو بيانات حساسة جداً في الـ Cookies لأنها تُخزن بصيغة نصية بسيطة على جهاز المستخدم ويمكن رؤيتها. 🛡️

🚀 ماذا سنتعلم في الدرس القادم؟

الآن بعد أن تعلمنا كيف نخزن البيانات على جهاز المستخدم باستخدام الـ Cookies، قد تتساءل: "ماذا لو أردت تخزين بيانات أكثر أماناً وبشكل مباشر على السيرفر بدلاً من جهاز المستخدم؟"

هذا هو بالضبط ما سنعرفه في الدرس القادم، حيث سنشرح بالتفصيل الجلسات (Sessions) والفرق الجوهري بينها وبين الـ Cookies! انتظرونا. 🎓