كيف تتعامل مع الـ Sessions و الـ Cookies في الـ Php

كيف تتعامل مع الـ Sessions و الـ Cookies في الـ Php

موقع Myshopitems هو موقع ( وهمي ) خاص بالتسوق عبر الانترنت مبني بلغة البرمجة Php بشكل أساسي، يأتي زائر بسيط لا يملك حساباً في الموقع من خلال محرك البحث جوجل فيُعجب ببعض المنتجات، ثم يقوم بإضافتها الى السلة، حين ينتهي سيود المستخدم إقتناء تلك المنتجات التي أضافها الى سلته لكنه غير مسجل بعد، حين يقوم بالتسجيل و الدخول سيحدث أحد الأمرين التاليين : إما ان كل المنتجات التي تم إضافتها في السلة ستذهب الى حساب المستخدم، او ان السلة ستصير فارغة و سيتوجب على المستخدم إعادة البحث عن المنتجات، إن كنت تريد تحقيق النتيجة الأولى، فعليك العمل بالـ Sessions او الـ Cookies. 

ما هو الـ Cookies و الـ Sessions و ما الفرق بينهما؟

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

كيف تتعامل مع الـ Sessions و الـ Cookies في الـ Php

تحديد الـ Cookies  الـ Php : 

^

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



يمكنك الإطلاع على الكوكيز التي تم إنشائها في موقع معين عبر الذهاب الى Inspect Elements، ثم تبويب Application، ثم خيار Cookies لتجد الكوكيز التي أنشأتها.
من أجل جلب قيمة كوكيز معين نستخدم كود ('COOKIE('name_$ ، يمكنك طباعته عبر كود print / echo للحصول على القيمة المخزنة، او يمكننا جلبه للتأكد من قيمته او التحقق من وجوده كما فعلنا في الكود الخاص بالـ isset() بحيث نتحقق من وجوده ( لأن إسم كل كوكيز يجب ان يكون فريداً )، اما لحذف الكوكيز فلا يوجد طريقة لفعل ذلك تقنياً، لذلك الطريقة الأمثل لفعل ذلك هو تغيير مدة صلاحيته الى وقت سابق ليندثر الكوكيز، في الكود الأخير يمكنك ان تلاحظ اننا جلبنا التوقيت الحالي و قمنا بنقص بعض الوقت منه الى الماضي لينتهي صلاحية الكوكيز.

- تحديد الـ Sessions في الـ Php :


بالنسبة للـ Session فكما أشرنا تقوم بتسجيل البيانات على مستوى الخادم، أي معلومات مثل البريد الإلكتروني او كلمة السر و غيرها لا يجوز تخزينها في الـ Sessions بل في الـ Cookies لأنها تتعلق بالمستخدم، اما ما يتعلق بالموقع و لنقل مثلا خيار اللغة في الموقع، فيمكن تخزينه في الـ Session، تبدأ أولا بفتح الـ Sessions ( الجلسات ) بكود ()session_start، ثم بعده يمكنك تخزين المعلومات في الجلسة عن طريق (SESSION('name_$ ثم إعطائها القيمة التي يجب ان يحملها هذا الـ Session. 

يمكنك جلب الـ Sessions او التأكد من وجودها عن طريق كود الشرط او isset() مع إضافة SESSION_$ و تمرير الإسم الخاص بها، بالنسبة لحذف الـ Sessions فيوجد حلين : إما إخلائها في حالة معينة و إعادة ملأها في شرط معين و لتحقيق ذلك إستعن بالكود ()session_unset، اما ان اردت حذف الجلسة بالكامل فيمكنك إستخدام كود ()session_destroy.

كان هذا درساً بسيطا في الـ Cookies و الـ Sessions في لغة البرمجة الـ Php، شكراً للمتابعة. 

شاركه على :