English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في هذا الدليل، ستتعلم كيفية استخدام PHP session لتخزين بعض البيانات مؤقتًا على الخادم.
على الرغم من أنك يمكنك استخدام الكوكي لتخزين البيانات، إلا أن لديه بعض المخاطر الأمنية. لأن الكوكي يتم تخزينه على جهاز الكمبيوتر الخاص بالمستخدم، يمكن للمهاجمين تعديل محتوى الكوكي بسهولة، مما يمكن أن يؤدي إلى إدراج بيانات مضرة في تطبيقك، مما قد يدمره.
بالإضافة إلى ذلك، يتم إرسال جميع بيانات الكوكي الخاصة بالموقع في كل طلب URL يقدمه متصفح إلى الخادم. هذا يعني أن إذا كنت قد تخزنت 5 كوكي على نظام المستخدم الخاص بك، وكل كوكي حجمه 4 كيلوبايت، فإن المتصفح يجب أن يرسل 20 كيلوبايت من البيانات في كل مرة يستعرض فيها المستخدم الصفحة، مما قد يؤثر على أداء موقعك.
يمكنك استخدام PHP session لحل هذين المشكلتين. تخزن PHP session البيانات على الخادم بدلاً من جهاز الكمبيوتر الخاص بالمستخدم. في بيئة قائمة على الجلسة، يتم تحديد كل مستخدم من خلال رقم فريد يُدعى معرف الجلسة أو SID. يستخدم هذا المعرف الفريد لربط كل مستخدم بمعلوماته الخاصة على الخادم (مثل البريد الإلكتروني، المقالات، وما إلى ذلك).
إشارة:يُنتج ID الجلسة بشكل عشوائي بواسطة محرك PHP، مما يجعله من الصعب التنبؤ به. بالإضافة إلى ذلك، لأن بيانات الجلسة تُخزن على الخادم، لا تحتاج إلى إرسالها مع كل طلب متصفح.
قبل تخزين أي معلومات في متغيرات الجلسة، يجب بدء الجلسة أولاً. لبدء جلسة جديدة، يكفيك طلب function session_start() في PHP. سينشئ هذا function جلسة جديدة ويقوم بإنشاء ID جلسة فريد.
أعلاه مثال PHP فقط لبدء جلسة جديدة.
<?php //بدء الجلسة session_start(); ?>
يبدأ function session_start() في التحقق من وجود ID الجلسة لتحديد ما إذا كانت الجلسة موجودة أم لا. إذا وجدت جلسة، فإنها تعين متغيرات الجلسة. وإذا لم تجد جلسة، فإنها تبدأ جلسة جديدة عن طريق إنشاء ID جلسة جديد.
ملاحظة:عليك بتشغيل function session_start() في بداية الصفحة (قبل أي إخراج يتم من قبل السكربت في المتصفح)، تمامًا مثل عند استخدام function setcookie() لتعيين الكوكي.
يمكنك تخزين جميع بيانات الجلسة كقيم مرتبطة بمفاتيح في مصفوفة $_SESSION[] العالمية. يمكنك الوصول إلى البيانات المخزنة خلال فترة حياة الجلسة. انظر إلى النص التالي، حيث يتم إنشاء جلسة جديدة وتسجيل اثنين من متغيرات الجلسة.
<?php //إطلاق الجلسة session_start(); //تخزين بيانات الجلسة $_SESSION["firstname"] = "Peter"; $_SESSION["lastname"] = "Parker"; ?>
للوصول إلى بيانات الجلسة التي تم إعدادها في صفحة أخرى من نفس نطاق الويب، يمكنك ببساطة طلب دالة session_start() لإعادة إنشاء الجلسة، ثم نقل المفتاح المناسب إلى مصفوفة $_SESSION.
<?php //إطلاق الجلسة session_start(); //وصول إلى بيانات الجلسة echo 'مرحبًا،' . $_SESSION["firstname"] . ' ' . $_SESSION["lastname"]; ?>
يظهر الكود PHP في المثال أعلاه النتيجة التالية.
مرحبًا، بيتير باركر
ملاحظة:للوصول إلى بيانات الجلسة في نفس الصفحة، لا تحتاج إلى إنشاء جلسة جديدة، لأنها قد تم إطلاقها في أعلى الصفحة.
إذا كنت ترغب في حذف بيانات بعض الجلسات، يمكنك ببساطة إلغاء إعداد المفتاح المطلوب في مصفوفة $_SESSION، مثل المثال التالي:
<?php //إطلاق الجلسة session_start(); //حذف بيانات الجلسة if(isset($_SESSION["lastname"])){ unset($_SESSION["lastname"]); } ?>
لكن، لتدمير الجلسة بشكل كامل، يكفي طلب دالة session_destroy(). لا تحتاج هذه الدالة إلى أي معاملات، حيث سيتم تدمير جميع بيانات الجلسة في مرة واحدة.
<?php //إطلاق الجلسة session_start(); //تدمير الجلسة session_destroy(); ?>
ملاحظة:قبل تدمير الجلسة باستخدام دالة session_destroy()، إذا لم تكن بيئة الجلسة موجودة بعد، فإنه يجب أولاً إعادة إنشاء بيئة الجلسة باستخدام دالة session_start() لتمكين التدمير.
كل جلسة PHP تحتوي على قيمة انتهاء الصلاحية (مدة، بالثواني)، التي تحدد وقت الحفاظ على حالة الجلسة نشطة في غياب أي نشاط مستخدم. يمكنك تعديل وقت انتهاء الصلاحية هذا عن طريق تغيير قيمة متغير session.gc_maxlifetime في ملف إعدادات PHP (php.ini).