زراعة الكعكات على جهاز العميل أولا : كيف تزرع ملفات الكعكات :
يتم ذلك باستخدام الدالة setcookie و تعريفها بالشكل التالي :
كود PHP:
boolean setcookie ( string name [, string value [, int expire
[, string path [, string domain [, int secure]]]]])
تهمنا المدخلات الثلاث الاولى و هي :
name : اي اسم الكعكة ... فبامكانك ارسال اكثر من كعكة الى متصفح واحد و عندها يصبح الاسم هو الطريقة الوحيدة للتمييز .
value : القيمة ... فقط قيم نصية ... لا يمكنك وضع مصفوفة كقيمة و هذا أامر مهم ... لكن انتبه بامكانك وضع مصفوفة لكن بطريقة اخرى ... ؟ كيف ؟ : استخدم الدالة
serialize لتحويل اي متغير في بي اتش بي الى شكل نصي و من ثم استخدم
unserialize لاعادته الى الشكل الطبيعي .
expire : اي عدد الثواني من بدية عصر اليونكس ( 1 يناير 1970 ) و التي بعدها سيقوم المتصفح على جهاز المستخدم بحذف الكعكة ... و هنا ثلاث حالات :
--> أولاً : أن يكون الوقت المعطى كمدخل اكثر من الوقت الحالي على جهاز العميل و عندها تخزن الكعكة على جهاز العميل و تحذف عند انقضاء المدة .
--> ثانياً : أن يكون الوقت المعطى كمدخل اقل من الوقت على جهاز العميل و عندها لا يقوم المتصفح على جهاز العميل بتخزينها
و اذا وجدت كعكة بنفس الاسم فانه يحذفها حتى لو لم تنتهي المدة .
--> ثالثاً : إذا لم تحدد وقتا فان الكعكة تخزن في ذاكرة المتصفح و تفقد حالما يغلق المستخدم الموقع .
مثال :
كود PHP:
<?
setcookie('site','http://www.albrhan.com/',time()+3600);
?>
من الدوال المفيدة دالة
time و التي ترجع الوقت الحالي على شكل عدد الثواني من بداية عصر اليونكس (1 يناير 1970) .
ثانيا كيف تحذف او تعدل كعكة:
لكي تحذف كعكة عليك أن ترسل كعكة بنفس الاسم و خالية القيمة و ذات وقت اقل من الوقت على جهاز المستخدم
مثال :
كود PHP:
<?
setcookie('site','',time()-360000);
?>
ملاحظات :
1- عندما تحدد زمنا ماضياً اجعله قيمة كبيرة لكي تتفادى فارق التوقيت بين الخادم و العميل .
2- لكي تعدل أي كعكة عليك حذفها و إرسالها من جديد .
ملاحظة مهمة :
يجب ان تستدعي الدالة
setcookie قبل أن ترسل اي شيء الى المتصفح .. فمثلا الكود التالي لن ينجح :
كود PHP:
<html>
<body>
<?
setcookie('site','islamway.net',time()+20000);
echo " Alfjr.com : the best islamic forum";
?>
</body>
</html>
بل لو كان هنالك مجرد سطر فارغ قبل علامة البداية ?> فلن تعمل الدالة
setcookie ...
المثال السابق كان من الممكن ان يكون :
كود PHP:
<? setcookie('site','islamway.net',time()+20000);
?>
<html>
<body>
<? echo " Alfjr.com : the best islamic forum"; ?>
</body>
</html>