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

ما هو ملف تعريف الارتباط؟
ملف تعريف الارتباط هو ملف صغير بحجم أقصى يبلغ 4 كيلوبايت يقوم خادم الويب بتخزينه على جهاز الكمبيوتر الخاص بالعميل.
بمجرد تعيين ملف تعريف الارتباط، تقوم جميع طلبات الصفحة التالية بإرجاع اسم ملف تعريف الارتباط وقيمته.
لا يمكن قراءة ملف تعريف الارتباط إلا من النطاق الذي تم إصداره منه. على سبيل المثال، لا يمكن قراءة ملف تعريف الارتباط الذي تم تعيينه باستخدام النطاق www.guru99.com من النطاق Care.guru99.com.
تعرض معظم مواقع الويب على الإنترنت عناصر من مجالات أخرى مثل الإعلانات. يمكن للنطاقات التي تخدم هذه العناصر أيضًا تعيين ملفات تعريف الارتباط الخاصة بها. تُعرف هذه باسم ملفات تعريف الارتباط الخاصة بالطرف الثالث.
يمكن أن يكون ملف تعريف الارتباط الذي أنشأه المستخدم مرئيًا له فقط. لا يمكن للمستخدمين الآخرين رؤية قيمته.
تحتوي معظم متصفحات الويب على خيارات لتعطيل ملفات تعريف الارتباط، أو ملفات تعريف الارتباط الخاصة بأطراف ثالثة، أو كليهما.
إذا كان الأمر كذلك، فإن PHP يستجيب بتمرير رمز تعريف الارتباط في URL.
يوضح الرسم البياني أدناه كيفية عمل ملفات تعريف الارتباط.
هنا،
1) يطلب المستخدم صفحة تقوم بتخزين ملفات تعريف الارتباط
2) يقوم الخادم بتعيين ملف تعريف الارتباط على جهاز الكمبيوتر الخاص بالمستخدم
3) ستعيد طلبات الصفحة الأخرى من المستخدم اسم ملف تعريف الارتباط وقيمته
لماذا ومتى تستخدم ملفات تعريف الارتباط؟
- بروتوكول HTTP هو بروتوكول عديم الحالة؛ تسمح لنا ملفات تعريف الارتباط بـ tracتُستخدم ملفات تعريف الارتباط (الكوكيز) لمعرفة حالة التطبيق، وهي ملفات صغيرة تُخزّن على جهاز المستخدم. يختلف مسار تخزين هذه الملفات باختلاف المتصفح، حيث يخزّنها متصفح إنترنت إكسبلورر عادةً في مجلد "ملفات الإنترنت المؤقتة".
- تخصيص تجربة المستخدم – يتحقق ذلك من خلال السماح للمستخدمين بتحديد تفضيلاتهم. وتُخصَّص طلبات الصفحات اللاحقة بناءً على التفضيلات المُحدَّدة في ملفات تعريف الارتباط.
- Tracking الصفحات التي يزورها المستخدم
إنشاء ملفات تعريف الارتباط
لنلقِ نظرة الآن على الصيغة الأساسية المستخدمة لإنشاء ملف تعريف الارتباط.
<?php setcookie(cookie_name, cookie_value, [expiry_time], [cookie_path], [domain], [secure], [httponly]); ?>
هنا،
- "setcookie" هو وظيفة PHP تستخدم لإنشاء ملف تعريف الارتباط.
- "cookie_name" هو اسم ملف تعريف الارتباط الذي سيستخدمه الخادم عند استرداد قيمته من متغير المصفوفة $_COOKIE. وهو إلزامي.
- "cookie_value" هي قيمة ملف تعريف الارتباط وهي إلزامية.
- يُعدّ "[expiry_time]" اختياريًا؛ ويمكن استخدامه لتحديد مدة صلاحية ملف تعريف الارتباط، مثل ساعة واحدة. يتم تحديد الوقت باستخدام دالة time() في PHP، مع إضافة أو طرح عدد من الثواني أكبر من صفر، أي time() + 3600 لساعة واحدة.
- "[cookie_path]" اختياري؛ يمكن استخدامه لتعيين مسار ملف تعريف الارتباط على الخادم. تعني الشرطة المائلة للأمام "/" أن ملف تعريف الارتباط سيكون متاحًا على النطاق بأكمله. الدلائل الفرعية تحد من وصول ملفات تعريف الارتباط إلى المجال الفرعي.
- يُعدّ "[domain]" اختياريًا؛ ويمكن استخدامه لتحديد التسلسل الهرمي للوصول إلى ملفات تعريف الارتباط، أي
www.cookiedomain.comيعني المجال بأكمله بينماwww.sub.cookiedomain.comيحد من وصول ملفات تعريف الارتباط إلىwww.sub.cookiedomain.comومجالاتها الفرعية. - يُعدّ خيار "[secure]" اختياريًا؛ وقيمته الافتراضية هي "خطأ". ويُستخدم لتحديد ما إذا كان سيتم إرسال ملف تعريف الارتباط عبر بروتوكول HTTPS إذا تم ضبطه على "صحيح"، أو عبر بروتوكول HTTP إذا تم ضبطه على "خطأ".
- يُعدّ خيار "[httponly]" اختياريًا. إذا تم ضبطه على "صحيح"، فسيتم استخدام لغات البرمجة النصية من جانب العميل مثل Javaسيناريو لا يمكن الوصول إلى ملف تعريف الارتباط.
ملاحظة: يجب تنفيذ دالة setcookie في PHP قبل علامة فتح HTML.
لنلقِ نظرة الآن على مثال يستخدم ملفات تعريف الارتباط.
سنقوم بإنشاء برنامج أساسي يسمح لنا بتخزين اسم المستخدم في ملف تعريف ارتباط تنتهي صلاحيته بعد ستين ثانية.
يوضح الكود أدناه تنفيذ المثال أعلاه "cookies.php".
<?php setcookie("user_name", "Guru99", time()+ 60,'/'); // expires after 60 seconds echo 'the cookie has been set for 60 seconds'; ?>
الإخراج:
the cookie has been set for 60 seconds
استرداد قيمة ملف تعريف الارتباط
قم بإنشاء ملف آخر باسم "cookies_read.php" بالكود التالي.
<?php
print_r($_COOKIE); // output the contents of the cookie array variable
?>
الإخراج:
Array ( [PHPSESSID] => h5onbf7pctbr0t68adugdp2611 [user_name] => Guru99 )
ملاحظة: $_COOKIE هو متغير عام مدمج في لغة PHP. يحتوي على أسماء وقيم جميع ملفات تعريف الارتباط المُعيّنة.
يتم تحديد عدد ملفات تعريف الارتباط وحجمها بواسطة المتصفح، وعادة ما يكون حوالي 50 ملف تعريف ارتباط لكل نطاق و4 كيلوبايت لكل ملف تعريف ارتباط.
اختبار تطبيقنا. لنفترض أنك قمت بحفظ ملفات PHP الخاصة بك في مجلد phptuts.
- الخطوة 1 - افتح متصفح الويب الخاص بك وأدخل URL http://localhost/phptuts/cookies_read.php
ملاحظة: تم عرض مجموعة فارغة فقط
- الخطوة الثانية - تصفح إلى URL http://localhost/phptuts/cookies.php
- الخطوة 3 - ارجع إلى علامة التبويب الأولى، ثم انقر فوق زر التحديث
انتظر دقيقة، ثم انقر على زر التحديث مرة أخرى. ما النتائج التي حصلت عليها؟
حذف ملفات تعريف الارتباط
- إذا كنت تريد تدمير ملف تعريف الارتباط قبل وقت انتهاء صلاحيته، فعليك ضبط وقت انتهاء الصلاحية على وقت مضى بالفعل.
- أنشئ ملفًا جديدًا باسم cookie_destroy.php يحتوي على الكود التالي
<?php setcookie("user_name", "Guru99", time() - 360,'/'); ?>
- كرر الخطوات من 1 إلى 3 من القسم أعلاه حول استرداد قيم ملفات تعريف الارتباط.
- فتح URL http://localhost/phptuts/cookie_destroy.php
- قم بالتبديل إلى URL http://localhost/phptuts/cookies_read.phpما النتائج التي يعرضها؟
ما هي الجلسة؟
- الجلسة هي متغير عام يتم تخزينه على الخادم.
- يتم تعيين معرف فريد لكل جلسة يتم استخدامه لاسترداد القيم المخزنة.
- عند إنشاء جلسة، يتم تخزين ملف تعريف ارتباط يحتوي على معرّف الجلسة الفريد على جهاز المستخدم، ويتم إرجاعه مع كل طلب إلى الخادم. إذا كان متصفح العميل لا يدعم ملفات تعريف الارتباط، فسيتم عرض معرّف جلسة PHP الفريد في URL.
- تتمتع الجلسات بالقدرة على تخزين بيانات كبيرة نسبيًا مقارنة بملفات تعريف الارتباط.
- يتم حذف قيم الجلسة تلقائيًا عند إغلاق المتصفح. إذا كنت تريد تخزين القيم بشكل دائم، فيجب عليك تخزينها في قاعدة البيانات.
- تمامًا مثل متغير المصفوفة $_COOKIE، يتم تخزين متغيرات الجلسة في متغير المصفوفة $_SESSION. تمامًا مثل ملفات تعريف الارتباط، يجب أن تبدأ الجلسة قبل أي علامات HTML.
لماذا ومتى نستخدم الجلسات؟
- تريد تخزين المعلومات المهمة مثل معرف المستخدم بشكل أكثر أمانًا على الخادم حيث لا يستطيع المستخدمون الضارون التلاعب بها.
- تريد تمرير القيم من صفحة إلى أخرى.
- تريد بديلاً لملفات تعريف الارتباط على المتصفحات التي لا تدعمها.
- تريد تخزين المتغيرات العامة بطريقة أكثر كفاءة وأمانًا مقارنةً بتمريرها في... URL.
- أنت تتطورping تطبيق مثل متجرping عربة يجب أن تخزن المعلومات مؤقتًا بسعة أكبر من 4 كيلوبايت.
إنشاء جلسة
لإنشاء جلسة، يجب عليك أولاً استدعاء دالة PHP session_start ثم تخزين قيمك في متغير المصفوفة $_SESSION.
لنفترض أننا نريد معرفة عدد مرات تحميل صفحة ما. يمكننا استخدام جلسة للقيام بذلك.
يوضح الكود أدناه كيفية إنشاء واسترجاع القيم من الجلسات.
<?php session_start(); // start the session if(isset($_SESSION['page_count'])) { $_SESSION['page_count'] += 1; } else { $_SESSION['page_count'] = 1; } echo 'You are visitor number ' . $_SESSION['page_count']; ?>
الإخراج:
You are visitor number 1
تدمير متغيرات الجلسة
تُستخدم الدالة session_destroy() لتدمير جلسة PHP بأكملها.
إذا كنت ترغب في حذف عنصر جلسة واحد فقط، يمكنك استخدام الدالة unset().
يوضح الكود أدناه كيفية استخدام كلتا الطريقتين.
<?php
session_destroy(); // destroy entire session
?>
<?php unset($_SESSION['product']); // destroy product session item ?>
تقوم الدالة session_destroy بإزالة جميع بيانات الجلسة، بما في ذلك ملفات تعريف الارتباط المرتبطة بالجلسة.
يؤدي إلغاء التعيين إلى تحرير متغيرات الجلسة الفردية فقط. أما البيانات الأخرى فتبقى سليمة.




