Php

الكوكيز Cookies و الجلسات Sessions في php

الكوكيز Cookies  في php



يستخدم الكوكيز عادة لتحديد هوية المستخدم .




ماهو الكوكيز ؟


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




كيف يمكن إنشاء cookie ؟


يستخدم الكود الوظيفي setcookie() لإنشاء كوكي .

ملاحظة : يجب وضع كود setcookie() قبل وسم <html> .

التركيبة


setcookie(name, value, expire, path, domain);
	  

مثال 1

في المثال التالي سيتم إنشاء cookie اسمه user والقيمة هي Ahmad . كما سيتم تحديد انتهاء cookie بعد ساعة :
<?php
	  setcookie("user", "Ahmad", time()+3600);

	  ?>

	  <html>

	  .....



ملاحظة : يتم ترميز قيمة cookie تلقائياً عند ارسال cookie كما يتم ترميزه تلقائياً عند استرجاعه ولتجنب ترميز الروابط URL يمكنك استخدام setrawcookie() عوضاً عنها .

مثال 2

يمكنك تحديد وقت انتهاء cookie بطريقة أخرى أيضاً . كما يمكن أن تكون أسهل عند استخدام الثواني :
<?php
	  $expire=time()+60*60*24*30;
	  setcookie("user", "Ahmad", $expire);

	  ?>

	  <html>

	  .....



في المثال السابق تم تحديد انتهاء وقت الملف لشهر ( 60 ثا , 60 د , 24 سا , 30 يوم ) .




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


يمكن استخدام المتغير $_COOKIE لاسترجاع قيمة cookie .

في المثال التالي تم استرجاع قيمة cookie المسماة user وعرضها في الصفحة :
<?php
	  // اظهار الكوكي

	  echo $_COOKIE["user"];

	  // طريقة أخرى لعرض جميع الوكيز

	  print_r($_COOKIE);

	  ?>



تم استخدام isset() في المثال التالي لمعرفة فيما اذا تم ضبط cookie أم لا :
<html>
	  <body>
	  <?php
	  if (isset($_COOKIE["user"]))
	  echo "Welcome " . $_COOKIE["user"] . "!<br />";
	  else
	  echo "Welcome guest!<br />";
	  ?>

	  </body>
	  </html>






كيف تحذف Cookie ؟


عند حذف cookie ينبغي التأكد بأن تاريخ الانتهاء هو في الماضي .

مثال عن حذف كوكي cookie
<?php
	  // set the expiration date to one hour ago
	  setcookie("user", "", time()-3600);

	  ?>






ماذا لو كان المتصفح لا يدعم cookie ؟


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

يمرر النموذج مدخلات المستخدم إلى الصفحة "welcome.php" عند ضغط المستخدم على زر الارسال :
<html>
	  <body>
	  <form action="welcome.php" method="post">
	  Name: <input type="text" name="name" />
	  Age: <input type="text" name="age" />
	  <input type="submit" />
	  </form>

	  </body>
	  </html>



استرجاع القيم من المجلد welcome.php مثل :
<html>
	  <body>
	  Welcome <?php echo $_POST["name"]; ?>.<br />
	  You are <?php echo $_POST["age"]; ?> years old.

	  </body>
	  </html>






الجلسات Sessions في php



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



متغيرات Session


عندما تعمل على برنامج فإنك تفتحه ثم تقوم بالتعديل عليه ثم تقوم بإغلاقه . ذلك تماماً مانسميه جلسة أو session . يعلم الحاسوب من انت ويعلم متى تبدأ العمل على البرنامج ويعلم متى تنتهي من البرنامج و لكن على شبكة الانترنت هناك مشكلة صغيرة وهي أن السيرفر لايعلم من انت و لايعلم ماتفعل لأن عنوان HTTP لايحافظ على نفس الحالة .

ان PHP session تحل هذه المشكلة وذلك بالسماح لك بتخرين معلومات على السيرفر لآخر استخدام قمت به ( مثل اسم مستخدم أو عناصر التسوق ) . على أي حال تعتبر معلومات session دائمة التخزين أي يمكنك تخزين المعلومات في قاعدة البيانات .

تعمل session بإنشاء id مميز UID و ذلك لكل زائر وتخزن المتغيرات المتمركزة في هذا UID . يتم تخزين UID في cookie أو متوالد على الرابط التشعبي URL .




بدء جلسة PHP Session


قبل إمكانية تخزين معلومات المستخدم على في جلسة PHP session عندها يجب البدء أولاً بالجلسة session .

ملاحظة : يجب أن تظهر session_start() قبل وسم <html> :
<?php session_start(); ?>
	  <html>
	  <body>
	  ...........
	  </body>
	  </html>



سيتم تسجيل المتستخدم من خلال الكود السابق مع السيرفر كما سمح لك ببدء حفظ معلومات المستخدم وتثبيت الاي دي الفريد UID لتلك جلسة المستخدم .




تخزين متغيرات الجلسات Session


أفضل طريقة لتخزين المعلومات واستردادها هو المتغير المعرّف مسبقاً من PHP وهو $_SESSION :
<?php
	  session_start();
	  // store session data
	  $_SESSION['views']=1;
	  ?>
	  <html>
	  <body>

	  <?php
	  //retrieve session data
	  echo "Pageviews=". $_SESSION['views'];

	  ?>

	  </body>
	  </html>


ستظهر النتيجة على المتصفح


Pageviews=1
	  

في المثال التالي قمنا بإنشاء عدّاد بسيط لإحصاء عدد مشاهدة الصفحة . يقوم isset() بفحص فيما اذا كانت المشاهدات تم مشاهدتها بالفعل واذا تمت المشاهدة من قبل سيتم زيادة رقم عدد الزيارات . اذا لم يوجد سيتم إنشاء متغير و سيتم ضبطه الى 1 :
<?php
	  session_start();
	  if(isset($_SESSION['views']))
	  $_SESSION['views']=$_SESSION['views']+1;
	  else
	  $_SESSION['views']=1;
	  echo "Views=". $_SESSION['views'];
	  ?>
	  




حذف session


غن أردت حذف بعض البيانات في الجلسة session يمكنك استخدام unset() أو استخدام session_destroy() .

تستخدم unset() لتحرير جزء معين من متغير الجلسة :
<?php
	  unset($_SESSION['views']);

	  ?>



كما يمكنك أيضاً حذف الجلسة session بشكل كامل من خلال استدعاء session_destroy() :
<?php
	  session_destroy();

	  ?>



سيتم حذف جميع البيانات عند استخدام session_destroy() كما سيتم حذف جميع معلومات المستخدمين المخزنة فيها .




تعليقات