أساسيات البرمجة برمجة المواقع بي اتش بي الجلسات PHP Sessions

الجلسات
 PHP Sessions

ماهي الجلسات PHP Sessions

الجلسات PHP Sessions هي عبارة  عن طريق تجعل البيانات قابلة للوصول اليها من خلال عدة صفحات على مستوى الموقع بالكامل.بمعنى تمنحك الصلاحية للدخول الى  المعلومات على صفحات الويب.
الجلسات PHP Sessions تقوم بانشاء ملف في المجلد - المسار المؤقت على السيرفر حيث يتم تسجيل متغيرات الجلسة فيها وقيمها.وسوف تكون البيانات متوفر لكل الصفحات التي على موقع عند زيارة الصفحات.
مكان ملف الجلسات PHP Sessions المؤقت يتم تحديده من خلال ملف الاعدادات php.ini  في السطر session.save_path
وقبل تحديد المسار يجب التاكد من وجود الملف وصحة مساره.

عند بدء الجلسات PHP Sessions تحدث الخطوات التالية

  • تقوم لغة البي اتش بي بانشاء معرف نصي مميز طوله 32 من سداسي عشر  مثل 3c7foj34c3jj973hjkop2fc937e3443
  • تقوم الكوكيز باستدعاء PHPSESSID  التى ارسلت الى جهاز المستخدم  ليحفظ معرف الجلسة المميز كما في الخطوة السابقة.
  • يتم انشاء ملف في مجلد الجلسات المؤقت يحمل نفس القيمة التي ارسلت للجهاز المستخدم.
عندما يريد سكريبت PHP استرداد القيمة من متغير الجلسة ال معرPHP تلقائيا تحصل على قيمة معرف الجلسة المميز من الكوكيز PHPSESSID ثم تبحث في الدليل الخاص ب مجلد الجلسات المؤقت عن الملف الذي يحمل نفس القيمة  والتحقق من صحة القيم من خلال مقارنة القيمتين.
الجلسة تنتهي عندما يفقد المستخدم المتصفح أو بعد مغادرة الموقع، سيقوم السيرفر بإنهاء الجلسة بعد مرور فترة محددة من الزمن، عادة 30 دقيقة .


أساسيات البرمجة  برمجة المواقع بي اتش بي الجلسات PHP Sessions


بدء الجلسة في البي اتش بي Starting a PHP Session:

ِالجلسة تبدء عن طريق استدعاء الدالة session_start()  تقوم هذه الدالة بفحص هل الجلسة بدات ام لا في حال لم تبداء تقوم ببدء جلسة جديدة. يفضل استخدام هذه الدالة في بداية ملف  البي اتش بي.
يتم حفظ المتغيرات وقيمها في المصفوفة المساعدة $_SESSION[] ويمكن الوصول الهذه المتغيرات خلال فترة حياة الجلسة.

مثال على الجلسات في البي اتش بي 

في المثال التالي سيتم حفظ المتغيرات الجلسة في counter سنتخدم الدالة  isset()  لفحص هل تم حفظ المتغيرات في المصفوفة المساعدة ام لا.


<?php
   session_start();
   if( isset( $_SESSION['counter'] ) )
   {
      $_SESSION['counter'] += 1;
   }
   else
   {
      $_SESSION['counter'] = 1;
   }
   $msg = "You have visited this page ".  $_SESSION['counter'];
   $msg .= "in this session.";
?>
<html>
<head>
<title>بدء الجلسة</title>
</head>
<body>
<?php  echo ( $msg ); ?>
</body>
</html>

إنهاء أو تدمير الجلسة Destroying a PHP Session:

  كما توجد دالة لبدء الجلسة ايضا توجد دالة لانهاء او ازالة او تدمير الجلسة session_destroy() وكذلك توجد دالة لازالة القيمة من المصفوفة المساعدة وهي unset().


<?php
   unset($_SESSION['counter']);
?>


تشغيل بدء الجلسة تلقائيا Turning on Auto Session:

ليس بالضرورة بدء الجلسة عندما ياتي الزائر لموقعك فيمكنك بدء الجلسلة تلقائية بتشغيل بدء الجلسة تلقائيا من خلال ملف الاعدادات php.ini وذلك من خلال تغير القيمة الى واحد في السطرsession.auto_start .

الجلسات بدون كوكيزSessions without cookies:

  يمكن بدء الجلسات بدون كوكيز عندما يكون متصفح المستخدم لا يسمح بحفظ الكوكيز على الجهاز. فالطريقة هنا ارسال معرف الجلسة الى المتصقح باستخدام SID.نستخدم الدالة htmlspecialchars  وهي تستخدم لمنع الهجوم على الموقع باستخدام  xss. 

مثال


<?php
   session_start();

   if (isset($_SESSION['counter'])) {
      $_SESSION['counter'] = 1;
   } else {
      $_SESSION['counter']++;
   }

   $msg = "You have visited this page ".  $_SESSION['counter'];
   $msg .= "in this session.";
   echo ( $msg );?>
<p>
To continue  click following link <br />
<a  href="test.php?<?php echo htmlspecialchars(SID); ?>">aaa</a>
</p>








إذا أعجبك المقال فتابعني وشكرا
تويتر aalmahallawi@