الأربعاء، 12 فبراير 2014

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

 الكوكيز او الكعكات PHP Cookies

 الكوكيز او الكعكات PHP Cookies

ماهي الكوكيز أو الكعكات  PHP Cookies ؟

الكوكيز أو الكعكات هي عبارة عن ملف نصي يخزن على حهاز المستخدم تستخدم لحفظ بعض المعلومات التي يمكنها تتبع المستخدم  لتعريفه وحفظ بعض المعلومات.

الخطوات التالية التي تتم لحفظ المعلومات عن طريق الكوكيز

  1. سكريبت السيرفر يرسل مجموعة من الكوكيز الى متصفح المستخدم .مثلا اسم المستخدم او العمر او رقم المستخدم الى اخره.
  2. يقوم المتصفح بحفظ المعلومات على جهاز المستخدم في صورة  كوكيز.
  3. في المرة التالية عندما يقوم المستخدم بتطلب الصفحة للموقع يقوم المتصفح بارسال الكوكيز الي السيرفر فيقوم السيرفر بتعريف المستخدم مثل الدخول التلقائي للموقع.

بنية الكوكيز

يتم ارسال الكوكيز عبر برتوكول http header ويمكن ايضا ارسال البيانات عبر ملفات الجافا سكريبت للمتصفح.

HTTP/1.1 200 OK
Date: Fri, 04 Feb 2000 21:03:38 GMT
Server: Apache/1.3.9 (UNIX) PHP/4.0b3
Set-Cookie: name=xyz; expires=Friday, 04-Feb-07 22:03:38 GMT; 
                 path=/; domain=tutorialspoint.com
Connection: close
Content-Type: text/htm

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

GET / HTTP/1.0
Connection: Keep-Alive
User-Agent: Mozilla/4.6 (X11; I; Linux 2.2.6-15apmac ppc)
Host: zink.demon.co.uk:1126
Accept: image/gif, */*
Accept-Encoding: gzip
Accept-Language: en
Accept-Charset: iso-8859-1,*,utf-8
Cookie: name=xyz

البي اتش بي PHP تقوم بالوصول الى الكوكيز عن طريق متغيرات البيئة عن طريق $_COOKIE أو عن طريق $HTTP_COOKIE_VARS[]  الذي يحمل اسم الكوكيز الاسم والقيمة $HTTP_COOKIE_VARS["name"].

إعدادات الكوكيز في البي اتش بي

لاعداد الكوكيز نستخدم الدالة  setcookie()  وهي دالة تحتاج الي 6 باراميتر ويجب استخدام الدالة قبل وسم   

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


تفاصيل الباراميترات للدالة setcookie

  • Name - يتم حفظ اسم الكوكيز ويخزن في المتغيرات البيئية Environment Variable ويتم استدعاءه بالدالة HTTP_COOKIE_VARS وغالبا ما يسخدم هذا المتغير للوصول الى الكوكيز.
  • Value يستخدم لحفظ القيم والمحتويات التي تريد انت تخزينها.
  • Expiry  يستخدم لتحديد صلاحية الكوكيز وفي حال لم يتم تحديد التاريخ فان صلاحيته تنتهي وقت اغلاق المتصفح.
  • Path تحدد المسار للكوكيز الذي يكون لديه صلاحية.بحيث ان الشرطة المائلة تعني بان الكوكيز صالح لكافة المسارات.
  • Domain يستخدم هذا لتحديد اسم النطاق الذي سيتخدم هذا الكوكيز ويجب ان يحتوي على اسم مفصول على الاقل بنقطتين وكل الكوكيز صالح فقط للمستضيف والنطاق التي أنشأت لها.
  • Security يمكن وضع قيمة تحمل 1 وتعني يجب ارسال الكوكيز عبر اتصال أمن HTTPS اما صفر فعن طريق البرتوكول العادي.

مثال على الكوكيز 


<?php
   setcookie("name", "John Watkin", time()+3600, "/","", 0);
   setcookie("age", "36", time()+3600, "/", "",  0);
?>
<html>
<head>
<title>Setting Cookies with PHP</title>
</head>
<body>
<?php echo "Set Cookies"?>
</body>
</html>


الوصول للكوكيز


<html>
<head>
<title>Accessing Cookies with PHP</title>
</head>
<body>
<?php
echo $_COOKIE["name"]. "<br />";
/* is equivalent to */
echo $HTTP_COOKIE_VARS["name"]. "<br />";

echo $_COOKIE["age"] . "<br />";
/* is equivalent to */
echo $HTTP_COOKIE_VARS["name"] . "<br />";
?>
</body>
</html>

الدالة isset تستخدم لفحص الكوكيز هل موجود ام لا

<html>
<head>
<title>Accessing Cookies with PHP</title>
</head>
<body>
<?php
  if( isset($_COOKIE["name"]))
    echo "Welcome " . $_COOKIE["name"] . "<br />";
  else
    echo "Sorry... Not recognized" . "<br />";
?>
</body>
</html>

حذف الكوكيز


<?php
  setcookie( "name", "", time()- 60, "/","", 0);
  setcookie( "age", "", time()- 60, "/","", 0);
?>
<html>
<head>
<title>Deleting Cookies with PHP</title>
</head>
<body>
<?php echo "Deleted Cookies" ?>
</body>
</html>

Ahmed Ata Almahallawi
Freelancer
IT Help Desk,
SEO experience,PHP,C#,ASPX
Al alami st
gaza -jabaliaGaza Strip
Palestine
ahmed.almahallawi@gmail.com
DOB: 05/10/1984
by +Ahmed Almahallawi 
13/2/2014

التسميات: