دليلك لمفهوم الجلسة وملفات تعريف الارتباط في ووردبريس والفرق بينهما

يتم استخدام مجموعة من التقنيات في مواقع الويب عامة ومواقع الووردبريس بشكل خاص، لحفظ البيانات الخاصة بالمستخدمين سواء بشكل دائم أو مؤقت. ويرتبط تخزين المعلومات والبيانات في الويب بمفهومي ملفات تعريف الارتباط (Cookies)، والجلسات (Sessions). 

هناك فرق بين هذين المفهومين، فلكل واحد استخداماته المختلفة سواء من قبل مستخدمي مواقع ووردبريس، أو مطوري مواقع ووردبريس. سيساعدك هذا الدليل على فهم هذين المفهومين بشكل أفضل ويوضح لك أهم الفروقات بينهما واستخداماتها بالارتكاز على شرح النقاط التالية: 

  • ما هي ملفات تعريف الارتباط واستخداماتها في الووردبريس.
  • ما هي الجلسة واستخداماتها في الووردبريس.
  •  أبرز الفروقات والتباينات بين الجلسة وملفات تعريف الارتباط.
  • كيف يمكن استخدام ملفات تعريف الارتباط برمجيًا في الووردبريس.
  • كيفية تهيئة الجلسات برمجيًا على الووردبريس.

ملفات تعريف الارتباط واستخداماتها في الووردبريس

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

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

علمًا أنه يمكن تسجيل أي نوع تريده من المعلومات والبيانات تقريبًا في ملفات تعريف الارتباط. 

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

برمجيًا، تساعد ملفات تعريف الارتباط مطور الووردبريس، على تخزين بيانات التصفح الخاصة بالمستخدم لتساعده في تسهيل خدمات الولوج لباقي الصفحات في الموقع وتحسين تجربة استخدام الموقع على الويب. 

مثلًا، إن كانت هناك صفحة في الموقع تتطلب تسجيل الدخول قبل الوصول إليها، يمكن للمطور أن يتحقق من وجود معلومات الدخول في الـCookies والسماح للمستخدم بالولوج للصفحة من خلالها بدل إعادة الطلب للولوج بالحساب مجددًا. 

من بين المعلومات التي تقوم ملفات تعريف الارتباط بتسجيلها، هي إعدادات الموقع ( كاللغة المستخدمة والوضع المظلم وغيرها.. ) كذلك تقوم بحفظ المعلومات الشخصية (مثل البريد الإلكتروني وكلمات السر وحالة الدخول للمستخدم) 

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

أنواع ملفات تعريف الارتباط

  •  ملفات تعريف الارتباط الدائمة(Persistent Cookies)
    وهي الملفات التي تبقى في جهازك لفترة طويلة ما لم يتم حذفها بشكل يدوي أو حذفها باستخدام أحد برامج تنظيف الجهاز أو عند انتهاء صلاحيتها. ويتم استخدامها في الغالب من أجل تعقبك إذ تحمل أيضًا اسم Tracking Cookies وتهدف إلى تجميع أكبر قدر من البيانات حولك لمساعدة الشركات الإعلانية. 
  • ملفات تعريف الارتباط المؤقتة(Session Cookies)
    هذه الملفات تقوم بتكوين أو إنشاء معرف فريد من نوعه لكل مستخدم للمتصفح، وتقوم بحفظ معلومات مختلفة أثناء عملية تصفح الموقع. لكن هذه المعلومات تحذف في العادة فور مغادرة الموقع. 

لماذا نستخدم ملفات تعريف الارتباط في الووردبريس؟ 

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

وهي تستخدم كذلك لحفظ خيارات التعليقات (Comments) في الووردبريس، حيث يتم تلقائيًا تخزين معلومات التعليقات والتي تتضمن الإسم والبريد الإلكتروني والموقع الإلكتروني لمدة 347 يومًا بشكل ذاتي حتى يستطيع نفس الزائر كتابة تعليقه مجددًا دون الحاجة لإدخال باقي المعلومات الأخرى. 

يمكن أيضًا استخدام ملفات تعريف الارتباط لتخزين معلومات متعلقة بإضافات وقوالب ووردبريس. مثلاً، في إضافة WooCommerce يتم استخدام ملفات تعريف الارتباط بهدف حفظ المنتجات التي يتم إضافتها في قائمة الشراء للمستخدمين. 


مفهوم الجلسة واستخداماتها في الووردبريس

الجلسة او Session هي تقنية أخرى بديلة لتخزين المعلومات الخاصة بالمستخدم أثناء تصفح موقع ويب محدد. لا يختلف مفهوم الـ Session عن الـ Cookies كثيرًا، فالجلسة عبارة عن ملف أيضا يمكن من خلاله تسجيل مجموعة من المعلومات والبيانات الخاصة بالتصفح. 

لكن الفرق بين الجلسة وملفات تعريف الارتباط، أن الجلسة عبارة عن ملف يتم تخزينه في خادم موقع الووردبريس (يتم تخزينه عادةً في الدليل /tmp/ على خادم الويب نفسه)، بينما ملفات تعريف الارتباط هي ملفات يتم تخزينها محليًأ في حاسوب المستخدم عن طريق المتصفح. 

يمكن اعتبار الجلسة هي عبارة عن تواصل بين وسيطين وهما في معظم الأحيان الخادم والمستخدم الذي يتصفح موقع الويب.

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

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

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

برمجيًا، يتمحور مفهوم الـSession حول أي خدمة Back End من بينها الـPHP، والتي بني عليها نظام الووردبريس. حيث يستطيع المطور من خلال الجلسات تسجيل وحفظ مختلف أنواع البيانات والمعلومات أثناء فترة وجود مستخدم داخل موقع الويب.

الفرق بين الجلسة وملفات تعريف الإرتباط 

يوجد عدة نقاط اختلاف بين ملفات تعريف الارتباط والجلسات، بالرغم من تقاربهما بشكل كبير وأهم نقاط الاختلاف: 

  • مكان تخزين الملف:
    في حين أن ملفات تعريف الارتباط تقوم بتخزين المعلومات على شكل ملف في جهاز المستخدم، فإن الجلسات تقوم بتخزين المعلومات على شكل ملف في خادم الموقع. وهذا يعني أنه يمكن للمستخدم التحكم في ملفات تعريف الارتباط من حذفها وتعديلها والاطلاع على محتواها. بينما الجلسة لن يستطيع الوصول إليها إلا المطور ومن خلال التقنيات البرمجية. 
  • نوع المعلومات التي يمكن تخزينها في الملفين:
    تستطيع ملفات تعريف الارتباط تخزين معلومات على شكل ملف نصي txt في جهاز المستخدم، ويمكنها أن تكون على شكل أي نوع من البيانات ( بريد إلكتروني، كلمة سر، إعدادات..) أما الجلسة، فيتم تخزين بياناتها على شكل متغيرات (Variables) تحمل قيمة محددة. ولا يمكن فعليًا قرائتها على شكل نص، بل يجب استحضار المتغير والاطلاع على قيمته. 
  • تنتهي الجلسة حين يغلق المستخدم الصفحة:
    يمكن تخزين مختلف أنواع البيانات في الجلسة، لكن فور قفل صفحة الويب او المتصفح، فكل معلومات الجلسة يتم حذفها ( تفريغها بشكل أصح). أما ملفات تعريف الارتباط، فهي دائمة مادام لم يقم المستخدم بحذفها بشكل يدوي، ويمكن للموقع استرجاعها فور تصفحه مجدداً. 
  • مساحات التخزين :
    لكل من الجلسة وملفات تعريف الارتباط عدد محدود من المساحة والمعلومات التي يمكن تخزينها فيهما. بالنسبة للجلسة، يمكن تخزين ملفات في حدود 128Mb ويمكن تعديلها من إعدادات الخادم. بينما الجلسة لا يجب أن تتجاوز حجم 4KB. ولا تنسى أنها تسجل معلومات على شكل متغيرات مما يعني ان 4KB قادرة على تسجيل معلومات كثيرة نوعا ما. 
  • إجبارية الاستخدام:
    الجلسة ليست إجبارية، بل قد لا تكون في موقع الويب، إذ على المطور أن يقوم بتهيئتها من أجل العمل بها. بينما ملفات تعريف الارتباط أضحت إجبارية، وحتى لو لم ترد استخدامها، سيقوم الموقع تلقائيًا باستخدامها، وهو ما نجده في كل مواقع الويب اليوم. السبب في ذلك أن الـ Cookies لا يتحكم بها الموقع، بل المتصفح وجهاز المستخدم. 
  • اختلافات من حيث الأمان:
    بما أن ملفات تعريف الارتباط يمكن الوصول إليها يدويًا، وتخزن المعلومات على شكل txt، فإنها لا تعتبر طريقة آمنة لحفظ معلومات التصفح. بينما الجلسة تعتبر أكثر أمانًا لكونها تعتمد على تشفيرات محددة، ولا يمكن للجميع الوصول إليها. يجدر بالذكر أنه يوجد ميكانيكية في مجال الاختراق تسمى Cookies Poison تتيح اختراق حسابات المستخدمين عن طريق سرقة الـCookies وقرائتها. 

هذه أبرز أوجه التباين بين الـ Sessions والـ Cookies واستخدامات كل واحدة منها. 


استخدام ملفات تعريف الارتباط برمجيًا ووردبريس

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

تهيئة وإنشاء بيانات لتسجيلها في ملف تعريف الارتباط 

/* setcookie(name, value, expire, path, domain, secure, httponly); */
<?php
setcookie("WordpressAr", "Save this text for 30 days", time() + (86400 * 30), "/"); ; // 86400 = 1 day
?>

نستخدم دالة ()setcookie من أجل حفظ وتسجيل أي نوع من البيانات في ملفات تعريف الارتباط حين يزور المستخدم موقع الووردبريس. تأخذ الدالة مجموعة من الـ Parameters منها 3 مهمة وهي اسم المتغير ومحتواه وتاريخ صلاحيته. اسم المتغير هو الاسم الذي سنستطيع لاحقًا عرض به المحتوى الذي تم تخزينه في ملف Cookies، ثم المحتوى ( قد يكون نص، رابط، متغير آخر، قيمة، تاريخ … إلخ ). ثم أخيرًا مدة بقاء المعلومة في ملف تعريف الارتباط مقدرة بالثواني.

في المثال أعلاه، قمنا بحفظ نص " save this text for 30 days " في ملف تعريف الارتباط، مع اسم WordPressAr للوصول إليه لاحقًا، ولمدة 30 يومًا. بحيث تم تحويل اليوم إلى ثواني وقيمتها 86400 ثم ضربها في 30. 

البحث عن قيمة الـ Cookies وعرضها 

يمكنك استرجاع القيم التي تم تسجيلها مسبقًا في ملفات تعريف الارتباط، عن طريق الكود أعلاه. مع جعل اسم البرامتر المدخل في دالة $_Cookie هو نفسه الاسم الذي قمت بتسجيله عند إنشاء ملف تعريف الارتباط كما يلي

<?php
if(isset($_COOKIE["WordpressAr"])) {
    echo "Cookie named '" .$_COOKIE["WordpressAr"];//return text: Save this text for 30 days 
} 
?>

في المثال السابق، قمنا بتسجيل نص "Save this text for 30 days" في ملف تعريف الارتباط تحت اسم WordPressAR، ومن أجل استرجاعه نقوم البحث عنه بالاسم وهو WordPressAr. 

لاحظ في المثال أعلاه، أنه تم استخدام شرط if مع دالة ()isset للتأكد أولاً من وجود الـ Cookie في النظام، لأنه في حالة عدم وجوده لن تظهر أي نتيجة. 

طريقة حذف الـCookies بعد الانتهاء منها 

برمجيًا، لا يمكنك حذف قيمة من الـCookies من أجل إلغائها، ما تقوم به بالضبط هو تقريب تاريخ انتهاء صلاحية الـCookie، ثم تفريغ قيمتها كما يلي: 

<?php
setcookie("WordpressAr", "", time() - 3600); 
?>

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

تعتبر هذه أهم الأكواد البرمجية التي يمكنك استخدامها في الووردبريس من أجل التعامل مع ملفات تعريف الارتباط وتخزين البيانات داخلها.


تهيئة الجلسات برمجيًا على الووردبريس 

آن الأوان لاستكشاف الجلسات و الـSessions برمجيا على الووردبريس، استخداماتها لا تختلف كثيرا عن ملفات تعريف الارتباط، لكن من حيث كتابة الكود البرمجي، فالاختلافات كثيرة. 

كيفية إنشاء جلسة 

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

<?php
// Start the session
session_start();
// Set session variables
$_SESSION["name"] = "WordpressAr";//Save a session "name" with value WordPressAR
$_SESSION["link"] = "https://www.wpar.net/"; //Save a session "link" with value https://www.wpar.net/
echo "Session variables are set.";
?>

في هذا الكود نقوم بتحديد اسم الجلسة داخل الـ $_SESSION، بينما نوفر قيمتها في الجهة المقابلة. بهذه الطريقة، الجلسة ذات اسم name تحمل القيمة WordPressAR والأمر مشابه للجلسة الثانية باسم link. 

كيفية استرجاع القيم المسجلة في الجلسة 

استرجاع القيم المسجلة في الجلسة يتم فقط عن طريق طباعة قيمة المتغير  $_SESSION ويحمل داخله المتغير الذي يحمل قيمة الجلسة.
في الكود السابق سجلنا متغير جلسة باسم name يحمل قيمة WordPressAR، ومن أجل استدعاء هذه القيمة وكذلك القيمة المخزنة في المتغير link الذي يحمل قيمة الرابط  نستخدم الكود التالي:

<?php
session_start();
// Echo session variables that were set on previous page
echo "Name value is " . $_SESSION["name"] . ".<br>";
echo "Link value  is " . $_SESSION["link"] . ".";
?>

كيفية حذف الجلسات المسجلة 

على عكس ملفات تعريف الارتباط التي يتم حذفها عن طريق جعل تاريخ صلاحيتها منتهية، الجلسة يتم حذفها بطريقتين. حيث يوجد نوعان من وظائف PHP لحذف جميع المتغيرات المسجلة في الجلسة هما   session_destroy() & session_unset().

<?php
session_start();
session_unset();// remove all session variables
session_destroy();// destroy the session
?>

الطريقة الأولى session_unset، تقوم بإلغاء كل الـSessions او الجلسات الموجودة، ويمكن مباشرة بعد هذا الكود إضافة Session جديدة وتسجيلها. 

اما الطريقة الثانية، فهي عبر أمر session_destroy، هذا الأمر يقوم بتدمير وحذف الجلسات من النظام، لكن من أجل إنشاء جلسة جديدة، لا يمكنك فعلها مباشرة دون إعادة إشعار المتصفح، أنك ستقوم بإنشاء جلسة عن طريق أمر session_start، وهذا هو الفرق بين الأمرين. 

وبالتالي، ستكون قادرًا على التعامل مع الجلسات من خلال إنشائها واستدعائها ثم حذفها. 

خاتمة

بهذا نكون قد تعرفنا في مقال اليوم على مفهومي ملفات تعريف الارتباط  والجلسات المستخدمين لتخزين معلومات الزائر المهمة على موقع ويب، وتعلمنا الفرق بينهما وكيفية التعامل مع كليهما بالتعليمات البرمجية، إن اتباع التعليمات السابقة وتنفيذها والتمرن عليها، سيجعل من إمكانية التعامل مع ملفات تعريف الارتباط والجلسات سهل.

 وجب الذكر أنه يمكنك استخدام نفس الأكواد السابقة، في أي موقع ذو أساس PHP بغض النظر عن مواقع الووردبريس. وإن كانت لديك اي استفسارات فيما يتعلق بالجلسات أو ملفات تعريف الارتباط، أو واجهتك مشكلة في تشغيل أحد الأكواد أو استيعابها، فأبوابنا مفتوحة في التعليقات، تفضل بطرحها، وسنوفر لك الإجابة الكاملة.