الكوكيز 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() كما سيتم حذف جميع معلومات المستخدمين المخزنة فيها .