كيفية التعامل مع ملفات الكوكيز (Cookies) في PHP

تمت الكتابة بواسطة: عبد الحكيم

تارخ آخر تحديث: 09 سبتمبر 2024

محتوى المقال

كيفية التعامل مع ملفات الكوكيز (Cookies) في PHP

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

1. ما هي ملفات الكوكيز؟

ملفات الكوكيز هي بيانات صغيرة يتم تخزينها على جهاز المستخدم عند زيارة موقع ويب. يمكن أن تحتوي هذه البيانات على معلومات مثل تفضيلات المستخدم، محتويات سلة التسوق، أو جلسات تسجيل الدخول. يتم إرسال ملفات الكوكيز مع كل طلب HTTP إلى الخادم، مما يسمح للموقع بتذكر المستخدمين وإدارة جلستهم.

1.1 أنواع ملفات الكوكيز

  • كوكيز الجلسة (Session Cookies): يتم تخزينها مؤقتًا في ذاكرة المتصفح وتُحذف عند إغلاق المتصفح.
  • كوكيز دائمة (Persistent Cookies): تبقى مخزنة على جهاز المستخدم لفترة زمنية محددة حتى بعد إغلاق المتصفح.
  • كوكيز الطرف الثالث (Third-Party Cookies): يتم إنشاؤها بواسطة نطاقات مختلفة عن النطاق الذي يزوره المستخدم. تُستخدم غالبًا لتتبع سلوك المستخدم عبر مواقع مختلفة.

2. إنشاء ملفات الكوكيز في PHP

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

2.1 مثال على إنشاء كوكي

فيما يلي مثال بسيط لإنشاء كوكي يسمى "user" يحتوي على اسم المستخدم:

<?php
// تعيين كوكي باسم "user" صالح لمدة 30 يومًا
setcookie('user', 'Ali', time() + (86400 * 30), '/'); // 86400 ثانية = 1 يوم
?>

في هذا المثال:

  • user: اسم الكوكي.
  • Ali: القيمة التي سيتم تخزينها في الكوكي.
  • time() + (86400 * 30): مدة صلاحية الكوكي (30 يومًا).
  • '/': المسار الذي يكون فيه الكوكي صالحًا (أي أنه صالح عبر الموقع بالكامل).

2.2 أهمية تعيين الكوكي قبل إرسال أي مخرجات

يجب تعيين ملفات الكوكيز قبل إرسال أي مخرجات من السيرفر إلى المتصفح. إذا حاولت تعيين كوكي بعد إرسال HTML أو أي محتوى آخر، فسيتم عرض خطأ لأن ترويسة HTTP (HTTP headers) تكون قد تم إرسالها بالفعل.

3. قراءة ملفات الكوكيز في PHP

يمكنك قراءة قيمة ملف كوكي باستخدام المتغير الفائق $_COOKIE. يحتوي هذا المتغير على مصفوفة تضم جميع ملفات الكوكيز المتاحة.

3.1 مثال على قراءة كوكي

إليك كيفية قراءة الكوكي الذي أنشأناه في القسم السابق:

<?php
// التحقق مما إذا كانت الكوكي موجودة
if (isset($_COOKIE['user'])) {
    $user = $_COOKIE['user'];
    echo 'مرحبًا، ' . $user . '!';
} else {
    echo 'لم يتم تعيين الكوكي.';
}
?>

في هذا الكود، نتحقق أولاً مما إذا كانت الكوكي "user" موجودة باستخدام isset(). إذا كانت موجودة، نقوم بعرض قيمة الكوكي، وإلا نعرض رسالة تشير إلى عدم وجود الكوكي.

4. تعديل ملفات الكوكيز في PHP

لتعديل كوكي موجود، يمكنك ببساطة إعادة تعيينه باستخدام setcookie() مع نفس الاسم. سيتم استبدال الكوكي الحالي بالقيمة الجديدة.

4.1 مثال على تعديل كوكي

إليك كيفية تعديل الكوكي "user" لتحتوي على قيمة جديدة:

<?php
// تعديل الكوكي "user" لتحتوي على اسم جديد
setcookie('user', 'Ahmed', time() + (86400 * 30), '/');
echo 'تم تعديل الكوكي.';
?>

في هذا المثال، نقوم بتعديل قيمة الكوكي "user" لتكون "Ahmed". إذا كان الكوكي موجودًا مسبقًا، فسيتم استبداله بالقيمة الجديدة.

5. حذف ملفات الكوكيز في PHP

لحذف كوكي، يمكنك استخدام setcookie() مع تحديد وقت انتهاء صلاحية في الماضي. هذا سيؤدي إلى حذف الكوكي من جهاز المستخدم.

5.1 مثال على حذف كوكي

إليك كيفية حذف الكوكي "user":

<?php
// حذف الكوكي "user" بتعيين وقت انتهاء صلاحية في الماضي
setcookie('user', '', time() 3600, '/');
echo 'تم حذف الكوكي.';
?>

في هذا المثال، نحدد وقت انتهاء صلاحية في الماضي (ساعة واحدة في الماضي) لحذف الكوكي "user".

6. الاعتبارات الأمنية عند التعامل مع ملفات الكوكيز

عند استخدام الكوكيز، يجب أن تكون حذرًا من المخاطر الأمنية المحتملة. يمكن أن تتعرض الكوكيز لهجمات مثل XSS (هجمات البرمجة عبر المواقع) أو هجمات انتحال الجلسات.

6.1 استخدام HttpOnly

لتقليل مخاطر XSS، يمكنك تعيين خيار HttpOnly للكوكي، مما يمنع الوصول إلى الكوكي عبر JavaScript:

<?php
// تعيين كوكي مع HttpOnly
setcookie('user', 'Ali', time() + (86400 * 30), '/', '', false, true);
?>

المعلمة الأخيرة في setcookie() تمثل HttpOnly. عند تعيينها إلى true، فإن الكوكي يصبح غير متاح للسكربتات على الجانب العميل.

6.2 استخدام Secure للاتصالات المشفرة

إذا كان موقعك يستخدم HTTPS، يمكنك تعيين الكوكي ليكون متاحًا فقط عبر اتصالات مشفرة باستخدام خيار Secure:

<?php
// تعيين كوكي مع HttpOnly و Secure
setcookie('user', 'Ali', time() + (86400 * 30), '/', '', true, true);
?>

في هذا المثال، يتم تعيين الكوكي ليكون متاحًا فقط عبر اتصالات HTTPS باستخدام الخيار Secure.

خاتمة

ملفات الكوكيز هي أداة قوية لتخصيص تجربة المستخدم وإدارة الجلسات في تطبيقات الويب. من خلال استخدام PHP، يمكنك بسهولة إنشاء، قراءة، تعديل، وحذف الكوكيز. ومع ذلك، يجب أن تكون حذرًا عند التعامل مع الكوكيز لضمان أمان تطبيقاتك وحماية بيانات المستخدمين. تأكد من استخدام خيارات HttpOnly و Secure عند الحاجة لتقليل المخاطر الأمنية.

طور مهاراتك: مقالات يجب قراءتها في البرمجة