Glimmer of hope Admin
عدد المساهمات : 1453 تاريخ التسجيل : 23/03/2010 العمر : 29 الموقع : الجزائر المزاج : so sad
| موضوع: ماهي ملفات الارتباط cookies الأربعاء 25 أغسطس 2010, 12:49 | |
| ماهى ملفات الإرتباط او مايسمى cookies ؟ تعامل مع الـ cookies على انها هوية الزائر الذى يدخل موقعك
عن طريقها تستطيع تحديد من هذا الشخص.
والـ cookies هى عبارة عن ملفات يتم تخزينها بجهاز الزائر ويحفظ بداخلها البيانات التى تقوم انت (كا صاحب الموقع او مبرمج الإسكريبت) بإرسالها لهذا الزائر.
عندما تقوم انت بإرسال كوكييز للزائر, يتم ارسال بيانات هذه الكوكييز لصفحتك عندما يعاود هذا الزائر زيارتها.
بإختصار, هى هويته او هى العلامة التى تميز بها زائر عن الأخر.
كامثال على استخدام الكوكييز مثلا.
عندما تدخل الى منتدى ما (مثلا) وتقوم بتسجيل الدخول, هناك مربع صغير يوضع بجانبه عبارة "تذكر بيانات دخولى" او شئ من هذا القبيل, عندما تقوم بالتعليم على هذا المربع, يتم حفظ هوية دخولك بملف كوكيز على جهازك. ثم بعد ذلك عندما تعاود زيارة هذا الموقع, يقوم متصفحك بإرسال هذه الكوكييز للموقع, وعليه يستطيع هذا الموقع ان يتعرف عليك ولا يطالبك بإعادة تسجيل الدخول مرة اخرى.
كيف انشئ كوكييز؟
يتم ذلك اما بإستخدام الدالة setcookie() او دالة header()
لنستكشف الأولى سويا. كود:
setcookie(name, value, expire, path, domain, secure, httponly)
القائمة التالية لشرح كل معطى بالتفصيل
* name وهنا يوضع اسم الكوكييز (اسم الكوكييز نستخدمه بعد ذلك لمعرفة القيمة الموجودة به) ويفضل ان يكون الإسم شئ ذو معنى حتى تستطيع تذكره فيما بعد بسهولة. * value وهو قيمة هذه الكوكى. ويجب عند ارساله ان تتأكد من وضعه داخل دالة urlencode() وعندما نبدأ بالتطبيقات العملية سوف نرى كيف تتم هذه الأمور, ويوضع داخل هذه الدالة حتى يصبح قابل للإستخدام بشكل امن ويمكن للمتصفح فهمه. * expire وهو الوقت الذى تكون خلاله هذه الكوكييز يمكن استخدامها ويتم وضع الوقت بها بإستخدام الـ unix epoch يعنى اذا اردنا ان نجعل هذه الكوكييز صالحة لمدة 24 ساعة نقوم بجعل قيمة هذا المعطى كالتالى time()+(60*60*24) يعنى الوقت الحالى + 60 ثانية مضروبة فى 60 دقيقة مضروبة فى 24 * path وهو المسار, اذا كان الإسكريبت الخاص بك سيعمل داخل مجلد فرعى لنفترض اسم المجلد هو script نقوم بجعل قيمة هذا المعطى هى /script/ * domain اى النطاق, على سبيل المثال اذا كان الموقع هو site.com يتم وضع قيمة هذا المعطى بهذا الشكل كود:
.site.com
حيث سيمكنك هذا من قراءة هذه الكوكييز عبر الموقع site.com وكل المجلدات والنطاقات المتفرعة منه. * secure وهو اختيارى تضع به القيمة true او 1 اذا كان الإسكريبت يعمل داخل موقع محمى ببروتكول https, والإفتراضى لهذا المعطى هو false * httponly هذا المعطى ايضا اختيارى, والإفتراضى له false, ويمكن ان تدخل به القيمة true او 1 لجعل هذه الكوكييز لا يمكن قراءتها الا بواسطة بروتكول الـ http يعنى لا يمكن لأى لغة برمجة مثل الجافا ان تستطيع قرائتها, وهذا جيد للحفاظ على امان المعلومات التى داخل هذه الكوكيي, لكن خاصية الـ httponly ليست مدعومة بكل المتصفحات.
كما اود الملاحظة, ان دالة setcookie يجب عند استخدامها ان يتم استخدامها قبل طباعة اى محتوى للمتصفح فهى مثلها مثل دالة الـ header لا يمكن ان تستخدم بعد ان يتم ارسال اى شئ للمتصفح.
كامثال بسيط على انشاء الكوكييز فى الـ php كود PHP:
setcookie("php_Cookie", "am learning php", time()+(60*60), '/myScriptFolder/', '.mySite.com');
فى الكود اعلاه اصبح اسم الكوكي هو php_Cookie وقيمتها هى am learning php وسوف تظل صالحة لمدة ساعة (60 ثانية فى 60 ثانية = 60 دقيقة) وسوف يمكن قرائتها فقط بمجلد myScriptFolder داخل الموقع mySite.com
اذن كيف تصل لقيمة هذه الكوكييز فى الـ php؟
عن طريق المصفوفة العامة $_COOKIE
حيث ان هذه المصفوفة تكون مصفوفة حرفية, عناصرها هى اسماء الكوكييز التى قمت بإرسالها.
على سبيل المثال, ضع الكود الخاص بإرسال الكوكييز الموجود بالمثال التالى بملف (مع مراعاة تعديل اسم المجلد والنطاق ليتناسبوا مع موقعك)
كود PHP:
//اذا كان تم ارسال هذه الكوكييز مسبقا if(isset($_COOKIE['php_Cookie'])){ //نقوم بإستخدام دالة //urldecode //حتى نقوم بتحويل قيمة الكوكييز //الى نص عادى يمكن طباعته echo urldecode($_COOKIE['php_Cookie']); } //اذا لم تكن تم ارسالها مسبقا نقوم بإرسالها else{ //ولاحظ اننا قمنا بجعل قيمة الكوكيي داخل دالة //urlencode setcookie('php_Cookie', urlencode('am learninhg php'), time()+(60*60), '/myScriptFolder', '.mySite.com'); echo 'cookie sent'; }
لاحظ عند فتحك للملف للمرة الأولى سيتم طباعة cookie sent المرة الثانية سيتم طباعة am learning php
ماذا عن حذف الكوكييز من جهاز المستخدم؟ حذف الكوكييز له نفس طريقة اضافتها. كل ماسيتغير انك ستجعل الوقت بدلا من + تجعله - بمعنى ان نجعل المعطى الثالث بهذا الشكل time()-60*60
هذا سيبلغ المتصفح ان صلاحية هذه الكوكييز منتهية, وعليه سيقوم المتصفح بحذفها. اتمنى يكون الدرس واضح وبسيط بإذن الله.
وان يكون واضح بكل جوانبه, ولا تقلق اذا كنت لا تجد استخدام جيد للكوكييز حاليا, فـ كما ذكرت لك بإنتهاء هذه الدورة سيكون هناك تطبيق او اكثر (حسب ماسيسمح به الوقت) وخلال هذه الدروس سيكون هناك محاكاة اكثر للبرمجة الواقعية بإذن الله.
عدل سابقا من قبل imene في السبت 26 فبراير 2011, 19:26 عدل 1 مرات | |
|
sarah المشرفة العامة
عدد المساهمات : 327 تاريخ التسجيل : 06/06/2010 العمر : 34 الموقع : elimene.mam9.com
| موضوع: رد: ماهي ملفات الارتباط cookies السبت 26 فبراير 2011, 12:21 | |
| مشكورة على المعلومة دائما متالقة | |
|