الأربعاء، 24 يوليو 2013

الدرس الثاني والثلاثون: معالجة الاخطاء ونهاية المطاف

متطلبات قبل البدء :
  • لا يوجد
اهداف الدرس:
  • الاخطاء البرمجيه
  • رسائل الاخطاء
  • مراحل الاخطاء
  • نهاية المطاف

الاخطاء البرمجيه :
اذا كنت تستخدم لغة PHP او اي لغة اخرى فهناك انواع اخطاء تنطبق عليهم جميعا. شي مريح اتوافقني الرأي ؟ الاخطاء هذه على 3 انواع وهي الاخطاء الكتابية ,, الاخطاء التشغيليه ,, الاخطاء المنطقيه وسوف نتكلم لكل واحده على حده لكي تفهم مضمونها وكيفية تجنبها.

الاخطاء الكتابية :
يوجد لكل لغة شروط كتابية وتسمى بال ( Syntax ) ونحن الان نريد ان نشرع هذه الاخطاء المسميه ب ( Syntax Error ) وهذا الخطاء اذا لم نتبع شروطه فسوف ينتهي بنا المجال الى برنامج لن يعمل بشكل صحيح ولن يتم تشغيله في الاساس , وتشمل الفاصلة المنقوطه في اخر السطر وان يكون النص بين علامتي تنصيص واذا قمنا بخرق هذه الشروط فلن يعمل معنا البرنامج بشكل صحيح. من اقوى الاشياء الموجوده في لغة PHP هي الرسال المفيده التي تظهر لنا عند وقوع الخطأ, ومثال هذه الرساله هو الشكل التالي :
وقد نتج هذا الخطأ عن الكود التالي :
لو تلاحظ ان خطأنا في الكود في الاعلى هو اننا عندما مررنا النص لدالة التاريخ لم نقم بإقفال علامتي التنصيص ,, لقد وضعنا علامه واحده ونسينا الاخرى وللك نتج هذا الخطأ اعزائي. خطأ مبتدئين او خطأ عجله ,, لكم القرار :) . لا تنسى ان الاخطاء الكتابيه من اسهل الاخطاء في لغات البرمجه ولذلك انها تعطيك الخطأ والسطر الذي يقع به الخطأ لكي يتم تعديله.

الاخطاء التشغيلية :
الاخطاء التشغيليه تعتبر اصعب في الايجاد والاصلاح فهذه الاخطاء لا تنتج عن خطأ في الكتابه يتم اكتشافه من قبل المترجم. هذه الاخطاء تحصل من طريقة عمل البرنامج مع ان جميع الاكواد مكتوبه بشكل صحيح ومثال على هذا الخطا هو عند استخدام العباره include( ‘filename.php ); فهذه العباره صحيحه ولا يوجد اي خطأ كتابي بها ولكن عند التشغيل سوف تجد ان هناك خطأ لان الملف غير موجود في الاساس والرساله التي ستظهر لك ان المترجم ليس لديه الصلاحيه لفتح هذا الملف ( لاحظ انه غير موجود ) وسوف يظهر لك خطأ شبيه بالتالي :
مثال اخر على خطأ تشغيلي هو القسمه على 0 , فلقد كتبت كود صحيح من 5 اسطر ولكن لم يعمل لان القسمه على 0, لاحظ الشكل التالي:
فنتج لدي هذه الرساله الي تقوم بجعل يومك سيئا :) , :
وسوف اسهل لك هذا الدرس بإعطائك الاخطاء التشغيليه الشائعه وهي :
  1. استخدام دوال غير موجوده
  2. قراءة او كتابة ملفات
  3. التعامل مع قواعد البيانات
  4. الاتصال بخدمات الشبكات
  5. عدم التحقق من المعلومات المدخله

الاخطاء المنطقية :
تعتبر الاخطاء المنطقيه من اصعب الاخطاء عثورا واصلاحا في جميع لغات البرمجه كلها. وخلاصة هذه الاخطاء ان الكود مكتوب بشكل صحيح ويعمل بشكل صحيح ولكن لا يقوم بفعل النتيجه التي يريدها كاتب الكود البرمجي. مثال على هذا الخطأ هو دالة التكرار ( for loop ) لاحظ الكود التالي :
لو نظرت الى الكود نظرة سريعه فسوف ترى ان المراد منه هو كتابة الكلمه ” اهلا ” 10 مرات اليس ذلك صحيحا ؟ ولكن عند تشغيل هذا البرنامج سوف يقوم بكتابة الكود فقط مره واحده. اذا لم تعمق النظر فلن تجد الخطأ ولكن اذا نظرت بتركيز شديد سوف ترى ان هناك فاصله منقوطه بعد انتهاء قوس دالة التكرار وهذه النقه تجعل الداله تدور 10 مرات ثم بعد ذلك تقوم بطباعة الكلمه اهلا, وهذا هو سبب الخطأ. وايضا يحصل الخطأ في الدالة While اذا لم نقم بوضع شرط يخرجنا من دالة التكرار.
مراحل الاخطاء :
تقوم لغة PHP بإعطائك الحرية في اظهار الاخطاء كيفما تريد , يمكنك اختيار اي اخطاء تظهر واي منها لا تظهر وبالطبيعه تقوم PHP بإطهار كل الاخطاء من دون التنبيهات, ومراحل الاخطاء عباره عن ثوابت سوف اعرضها لك في الجدول الذي ستراه الان :

القيمة

الخطأ

المعنى
1E_ERRORاظهار الاخطاء الحرجه وقت
التشغيل
2E_WARNINGاظهار الاخطاء الغير حرجه
وقت التشغيل
4E_PARSEاظهار الاخطاء الي تتبع
الترجم
8E_NOTICEاظهار التنبيهات
16E_CORE_ERRORاظهار الخطأ اذا لم يعمل
محرك PHP
32E_CORE_WARNINGاظهار الاخطاء الغير حرجه
اذا لم يعمل محرك PHP
64E_COMPILE_ERROEاظهار اخطاء ترجمة الكود
128E_COMPILE_WARNINGاظهار الاخطاء الغير حرجه
في ترجمة الكود
256E_USER_ERRORاظهار الاخطاء المعرفه من
المستخدم مسبقا
512E_USER_WARNINGاظهار الاخطاء الغير حرجه
المعرفه من المستخدم مسبقا
1024E_USER_NOTICEاظهار التنبيهات المعرفه
من المستخدم مسبقا
2048E_ALLاظهار كل الاخطاء
والانذارات والتنبيهات

نهاية المطاف :
انتهينا !! البعض يقول اخيرا انتهينا من هذه الدروس :) , انتهت في يومنا هذا دروس لغة PHP واستطيع ان اضمن لك اذا اتعبت الدروس بشكل مناسب وقرأت بعض من المصادر الخارجيه ان تحقق 80% من تعلم لغة PHP , فالقادم جدا سهل مجرد شي متقدم لما سبق ان شرحناه في هذه الدوره. ارجو ان تكونو قد استمتعم في دورة PHP ولا تنسو ان بابالاسئله مفتوح في هذا القسم , فلا تترد على سؤالي بأي شي يخص هذه اللغه اذا واجهتك مشكلة. بالنسبه الى الاشياء التي قد تطرأ على لغة PHP في المستقبل من تغييرات او اشياء
مفيده فسوف اقوم بوضعها على دروس متفرقه, اذن لم تنتهي الدروس بل سوف نبقى على اتصال عن طريق هذه اللغه التي سوف تتربع على عرش لغات البرمجه مستقبلا. تحياتي لكم

الدرس الواحد والثلاثون: متفرقات عن لغة PHP

متطلبات قبل البدء  :
  • لا يوجد
اهداف الدرس:
  • تهيئة النصوص بإستخدام الداله eval()
  • الداله die()
  • معرفة معلومات عن بيئة PHP
  • مشاركة الاكواد البرمجيه (highlighting soruces )

تهيئة النصوص بإستخدام الداله eval() :
هذه الداله المفيده نلاحظ استخدامها دائما في عمل نظام القوالب, وعمل هذه الداله هو ان تقوم بأخذ نص وتنفذه على انه كود من لغة PHP فعلى سبيل المثال, لو كتبنا الكود التالي:
سيكون الناتج لهذا السطر هو:
لنأخذ مثالا على اماكن استخدام هذه الداله, تخيل ان لديك كود برمجي كامل داخل قاعدة البيانات وتريد ان تقوم بتنفيذ هذا الكود البرمجي, اذن الداله eval هي طريقك الى هذا العمل. عمل اخر وهو لو اردت ان تقوم بإنشاء كود برمجي من دالة تكرار , فتنفيذ هذا الكود هو الداله eval.
الداله die() :
تعلمنا سابقا الداله exit وقلنا اننا لو اردنا الخروج عن تنفيذ العمل وايقاف عمل البرنامج سوف نستخدم هذه الداله , ولكن لو تلاحظ ان الداله exit لا تقوم بإرجاع اي شي الى المتصفح, اذن لدينا الان الداله die وهي تقوم بإخراجك من الكود البرمجي ولكن مع كتابة الخطأ الذي حصل في حالة اردت ذلك. لاحظ المثال التالي:
ويوجد نظير لهذه الداله الا وهو exit() وتستخدم بنفس طريقة لداله die()
معرفة معلومات عن بيئة PHP :
يوجد هناك شيئين نحتاج الى معرفتهما وهما
  1.  الداله التي تدل على مالك البرنامج وهي get_current_user() وتستخدم دائما في معرفة التراخيص التي يحملها مستخدم البرنامج
  2.  معرفة متى اخر مره تم تعديل البرنامج الخاص بنا عن طريق الكود التالي :
    echo date(‘g:i a, j M Y’ , getlastmod() );
    ولو قمنا بتجربة العمل سوف يظهر لنا التالي:
وناتج التعديل هو كما يظهر لك في الصوره التاليه:
مشاركة الاكواد البرمجيه ( highlighting soruces ) :
في بعض الاحيان تريد ان تقوم بمشاركة الكود مع بعض المبرمجين , او تريد ان تقوم بعمل برنامج دروس ويظهر لك الكود من غير تنفيذه , اذن سوف تستعمل الداله التي تسمى show_source() او highlight_file() وكل هذه الدالتين تقوم بنفس العمل تماما, وتأخذ هذه الدالتين ملفات ( يجب ان تكون ملفات PHP او لن يكون هناك معنى ) , وعند استخدامها سوف تقوم الداله بجعل الكود يظهر بشكل مرتب وبشكل الوان مرتبه , لنأخذ مثالا يوضح لنا الفكره , لدينا ملف اسمه fun.php ويوجد به الكود التالي:
ونريد ان يظهر هذا الكود بدل من ان يتم تنفيذه ,, فسوف نقوم بعمل ملف ونكتب به التالي:
واذا قمنا بتشغيل هذا البرنامج فسوف يظهر لنا الشكل التالي:


سؤال على الدرس :

1 – لا يوجد

الـــدرس الــقادم :


سوف نقوم في الدرس القادم بالتعرف على طرق معالجة الاخطاء البرمجيه وتصحيحها وهو يعتبر اخر درس في دروس PHP

الدرس الثلاثون: مكتبة الصور في لغة PHP

متطلبات قبل البدء :
اهداف الدرس :
  • نبذه عن انواع الصور
  • انشاء الصور

نبذة عن انواع الصور :
تعلمنا كيف نقوم ببرمجة موقع بلغة php ورأينا كم هي سهله وجميله في التعامل, ولكن استخدام لغة php لا يقتصر على اصدار ملفات
html او php بل يسمع لك ايضا بإنشاء الصور بأنواعها سواء كانت متحركه او ثابته. توجد هناك مكتبة خاصه لعمل هذه الصور وتسمى
مكتبة GD والاسم الكامل لها هو (GD Library ).
لهذه المكتبة اصدارات كثيره وسوف نتكلم عن الاصدار رقم 2.0.28 وهو متوافق مع الانواع JPEG و GIF  و PNG. كلها تعمل بنفس الطريقه, هل وصلت الى مرحلة الحماسه للتعلم , اذن لنبدأ بتعريف هذه الصور واحده تلو الاخرى.
JPEG:
تنطق هذه العباره بالطريقه ( جاي-بيق ) وهي اختصار لـ ( Joint Photographic Experts Group ). انا متأ:د انك تعرف هذه النوعيه من الصور فنستخدمها كثيرا اذا اردنا حفظ الصور وهي مفيده اذا كانت في الصوره الوان كثيره وتدرجات كثيره. هذه النوعيه ليست جيده عند استخدام رسوم الخطوط و النصوص و الاجزاء التي تحتوي على لون جامد واحد. يمكنك معرفة امور اكثر عن هذه النوعيه عن طريق الموقع الخاص بهم موقع JPEG.
PNG:
تنطق هذه العباره بالطريقه ( بنق ) وهي اختصار لـ ( Portable Network Graphics ) وخصائص هذه النوعيه متماثله مع النوعية GIF وهي
تعتبر بديلا للنوعيه GIF. وسبب هذا البديل هو ان PNG اكثر جوده من النوع GIF. ويمكنك معرفة معلومات اكثر عن هذا النوع عن طريق الموقع الخاص بهم موقع PNG
GIF:
هذه النوعيه اختصار لـ ( Graphics Interchange Format ) وتستخدم كثيره في مواقع الانترنت لانها خفيفه وتستطيع عمل الصور المتحركهز تنصح بعض الكتب بإستخدام النوعيه PNG بدل من هذه النوعيه لانها اسهل.
انشاء الصور :
لانشاء الصور في لغة PHP نتبع 4 خطوات وهي مفيده جدا وتسهل علينا العمل
  1. انشاء الخلفيه المراد العمل عليها
  2. رسم المجسمات او الكتابات على هذه الخلفيه
  3. تصدير هذه الصور او العمل
  4. تنظيف العمل
لنقم بعمل مثال بسيط على هذه الطريقه لنفهم كيفية العمل
بعد تنفيذ هذا العمل سوف يكون الناتج هو التالي :
ملاحظه : في حالة عدم ظهور الصوره قم بكتابة الكود بالشكل التالي, اضغط هنا
لنقم الان بشرح عملنا خطوه خطوه

اعداد الصوره:
اول عمل قمنا بفعله هو انشاء صوره لنقم بالرسم عليها لنقل انها كراسة الرسم الخاصه بنا , وهناك طريقتين لعمل هذه الطريقه الاولى بإستخدام الداله ImageCreate وهي تأخذ مدخلان العرض والطول بالترتيب وسوف تقوم بإرجاع الصوره التي قمنا بعملها
الطريقه الثانيه هي انشاء خلفية العمل من صوره موجوده مسبقا لدينا بأي نوع كانت بإستخدام الداله ImageCreateFromPng او ImageCreateFromJpeg او ImageCreateFromGif وهي تأذخ مدخل واحد وهو اسم الصوره التي نريد العمل عليها ( اسم الملف ) والطريقه كالتالي :
رسم الصوره:
قمنا بعد ذلك برسم الاشكال التي نريدها على الصوره, وفي الحقيقه هناك طريقتان لعمل ذلك , اولا يجب ان نقوم بإختيار الالوان التي نريدها , وكما نعرف انها مكونه من 3 الوان وهي الاحمر والاخضر والازرق , ويمكن استخدام هذه الالوان عن طريق الداله ImageColorAllocate  وهي تأخذ 4 مدخلات وهي الصوره , اللون الاحمر واللون الاخضر والازرق وقد عملنا في مثالنا لونان وهما الابيض والاسود. وهذه الداله تقوم بإرجاع اللون الذي سنستخدمه لاحقا.
الطريقه الثانيه هو رسم ما نريد ويكون على اربع نقاط نحتاج اليها , الصوره , الاحداثيات , اللون , معلومات النص ( اذا كان نص ) , ويمكننا مشاهدة عملنا في مثالنا هنا:
الداله ImageFIll تقوم بتعبة الصوره وتأخذ 4 مدخلات وهي الصوره , الاحداث السيني , الاحداث الصادي , واللون.
الداله ImageLine تقوم برسم خط وتأخذ 6 مدخلات وهي , الصوره , بداية الاحداث السيني , بداية الاحداث الصادي , نهاية الاحداث السيني , نهاية الاحداث الصادي , اللون.
الداله ImageString تقوم بكتابة نص على الصوره وتأخذ 6 مدخلات , الصوره , نوع الخط , الاحداث السيني , الاحداث الصادي , النص , اللون
** لاحظ ان ( 0, 0 ) معناها الركن العلوي الايسر

اصدار الصوره:
يمكننا اصدار الصور بطريقتين , الطريقه الاولى الى المتصفح , الطريقه الثانيه حفظها على شكل ملف, وفي مثالنا استخدمنا الطريقه الاولى وهي تصدير الصوره الى المتصفح. ويكون العمل على خطوتين , الخطوه الاولى يجب ان نخبر المتصفح اننا نريد تصدير صور بدلا من مجرد نصوص او HTML  ويمكننا عمل ذلك عن طريق الداله Header التي تعملناها سابقا.
في العاده عندما نقوم بتصدير ملف HTML او PHP يكون الارسال تلقائيا بالشكل التالي Content-type: text/html وهو يخبر المتصفح كيف ان يقوم بترجمة المعلومات. الخطوه الثانيه نقوم بإخراج الصوره الى المتصفح بإستخدامنا للداله ImagePng او ImageJpeg او ImageGif وقمنا بعمل ذلك في ملفنا بالطريقه التاليه
في حالة اردنا ان نقوم بتصدير الصوره الى ملف نقوم بكتابة اسم الملف كمدخل ثاني الى الداله , ويكون بالطريقه التاليه :

تنظيف العمل:
بعد ان تقوم بطباعة الصوره والانتهاء من العمل يجب ان تقوم بإرجاع جميع ما استخدمه لانشاء الصوره للخادم وذلك يكون بتدمير الصوره التي قمت بإنشائها وذلك عن طريق الداله ImageDestroy وقمنا بعمل ذلك في مثالنا بالشكل التالي:
هذي هي مكتبة الصور ( GD ) في لغة PHP بشكل مبسط جدا , واذا اردت ان تخوذ بها زياده لكي تحترف التعامل بها يمكنك مراجعة ملف الاستخدام الخاص بلغة PHP عن طريق الموقع الخاص بهم,موقع PHP%3
سؤال على الدرس :
1- لايوجد
الدرس القـــادم :


سوف نقوم في الدرس القادم بالتعرف على بعض المتفرقات الأخيرة في لغة PHP 

الدرس التاسع والعشرون: برنامج تسجيل مبسط

متطلبات قبل البدء :
اهداف الدرس:
  • فكرة البرنامج
  • مختصرات
  • الدخول الى صفحة الاعضاء
  • الصفحات الاخرى
  • تسجيل الخروج

فكرة البرنامج :
نريد ان نقوم بفعل شيئ مفيد بإستخدام الجلسات, وسوف نستخدمها اليوم في عمل برنامج تسجيل مبسط , لكي نقوم بوضع النكهات على برامجنا , فكرة عمل هذا البرنامج بسيطه , نموذج دخول ثم التحقق من اسم المستخدم وكلمة المرور , وبعد ذلك نقوم بتسجيل الجلسه للمستخدم لكي نعرف انه نفس المستخدم الذي يتصفح باقي الصفحات.
مختصرات :
لا اريد ان اقوم بشرح ما تعلمناه سابقا من جديد , لذلك سأذكر متطلبات عمل البرنامج في هذه النقطه ويجب عليك عزيزي الزائر ان تقوم بعملها بنفسك ولكي تقوم بإستراجع المعلومات يمكنك الرجوع الى الدرس رقم (24 و 25 و 26 ). ما نحتاجه هو
  1. قاعدة بيانات تحتوي على جدول اسمه (member ) توجد به الحقول (username ) و ( password )
  2. صفحة تسجيل دخول
  3. صفحة تسجيل خروج
  4. صفحة خاصه بالاعضاء
  5. صفحه اخرى للتحقق من الجلسات ( مجرد توضيح كيف عمل بقية الصفحات بنظام الجلسات )
الدخول الى صفحة الاعضاء :
الان بعد عملنا على متطلبات الموجوده في ( مختصرات ) نأتي الى محور درسنا اليوم, كما تعلمنا سابقا يجب ان نبدأ كل صفحه بالجلسات ( قبل طباعة اي شي الى المتصفح ) اليس ذلك صحيحا ؟ صفحة الاعضاء تعمل كالتالي, اذا كان متغير الجلسه ( user ) غير موجود نقوم بأخذ مدخلات اسم المستخدم وكلمة المرور والتحقق عنها من قاعدة البيانات , ثم نقوم بوضع اسم المستخدم داخل متغير الجلسه, غير ذلك نقوم بإظهار خطأ للمستخدم بأن اسم المستخدم وكلمة المرور غير صحيحه , او انه يجب عليه تسجيل الدخول لرؤية هذه الصفحه ,وفي الاخير اذا كان متغير الجلسه موجود وتوجد به قيمه نقوم بإظهار محتوى الصفحه للمستخدم. لاحظ الكود التالي:
بالنسبه للداله ( loginCheck ) فهي داله قمت انا بإنشائها للتحقق من اسم المستخدم وكلمة المرور من قاعدة البيانات.
الصفحات الاخرى:
الان , بنفس الطريقه في كل صفحه نقوم بوضع كود التحقق من الجلسات , بحيث ان لو لدينا صفحه اسمها (view.php ) والمستخدم لم يقوم بتسجيل الدخول فلن يمكنه مشاهدة محتوى الصفحه واذا كان قد قام بتسجيل الدخول ولم يقوم بإغلاق المتصفح (اغلاق المتصفح يؤدي الى تدمير الجلسه ) فيمكنه التنقل بين الصفحات من غير تسجيل الدخول مره اخرى لاحظ الكود التالي :

تسجيل الخروج :
لو اراد المستخدم تسجيل الخروج , فهناك طريقتين ,, اما اغلاق المتصفح واما الذهاب الى صفحة تسجيل الخروج ( وهي الافضل ) وهي على خطوات


  1. نقوم بوضع متغير الجلسه في متغير جديد
  2. نقوم بإلغاء مصفوفة الجلسات
  3. نقوم بتدمير الجلسه
  4. التحقق من ان الالغاء والتدمير تم بشكل صحيح

الدرس الثامن والعشرون: الجلسات في PHP

متطلبات قبل البدء :
  • مراجعة جميع الدروس السابقه
اهداف الدرس:
  • تعريف الجلسات
  • الكوكيز ( Cookies )
  • انشاء الجلسات بشكل مبسط
  • مثال مبسط على الجلسات

تعريف الجلسات :
هناك مشكلة كبيره في لغة HTML وذلك لانها لا تستطيع تحديد حالة المستخدم, ونعني بذلك انها لا تستطيع تتبع المستخدم من صفحه الى اخرى, هل تحتاج الى مثال ؟ فمثلا لو قام المستخدم بتنفيذ طلب اظهار صفحه ما, ثم طلب اظهار صفحه اخرى, فلا يمكن للغة HTML معرفة اذا كان الطلب تم من نفس المستخدم. وجدت الجلسات ليتم تتبع حالة المستخدم اثناء تصفحه لموقع معين. فإذا استطعنا ذلك, يمكننا عمل تسجيل دخول المستخدم واظهار بعض محتويات الصفحه على حسب درجته ومستوى تحكمه في الموقع. في لغة PHP الجلسه الواحده عباره عن رقم ( مشفر ) يتم انشاءه بطريقة عشوائيه, ويحفظ هذا الرقم عند المستخدم ( وليس السيرفر ) على طريقتين, اما في الجهاز على شكل كوكيز او على شكل رقم ينتقل من صفحه الى اخرى. هذا الرقم يقوم بالسماح لنا بتسجيل متغيرات اسمها متغيرات الجلسات ومحتويات هذه المتغيرات يتم تخزينها في جهة السيرفر ( وليس على جهاز المستخدم ) والذي يظهر للمستخدم فقط ويمكن رؤيته من قبله هو هذا الرقم العشوائي المستحيل ان يتم فهمه. هل فهمت الجلسات الى الان ؟ انا متأكد انك قمت بملاحظة هذا الرقم عند تصفحك لاحدى المواقع ويكون شكل هذا الرقم كالتالي :
الكوكيز (Cookies ) :
الكوكيز او ما يسمى باللغه العربيه ( الكعكات ) وهو اسم لا احب اطلاقه على الكويكز, عباره عن قطعه معلومات تحفظ في جهاز المستخدم ويستطيع الوصول لها فقط من قام بإنشائها ( الموقع ). دعني اختصر لك الامر لا تستخدم الكوكيز ! وهذا الذي سوف تتعلمه عند قرائة اي كتاب او اي درس عن الامان في الانترنت. حيث ان اكثر المتصفحات الجديده ومستويات الامان الموجوده بها تمنع الموقع من وضع اي معلومات في جهاز المستخدم, او على سبيل المثال المستخدم قد قام بإلغاء الكوكيز في جهازه, وحينها لن يستطيع الحصول على المراد وصاحب الموقع لن يحصل على مراده. اذن لنجلعها بكل بساطه ( لا تقم بإستخدام الكويكز في برامجك ) !
انشاء الجلسات بشكل مبسط :
سوف يكون محور درسنا عن الجلسات هو ارسال رقم الجلسه من صفحه الى اخرى وتتبع المستخدم بهذه الطريقه. رأينا في المثال بالاعلى ان رقم الجلسه موجود في المتصفح, فكر للحظات هل هذه طريقه جيده لارسال المعلومات ؟ بحيث انها ظاهره للمستخدم و ايشخص اخرى, طبعا لا ! اذن نحتاج ان نقوم بإرسال هذه المعلومات بطريقه مخفيه بحيث ان برنامج هو الوحيد الذي يستطيع استعمالها. هذه الطريقه تبدأ من لحظة دخول المستخدم الى الموقع وانشاء رقم الجلسه الخاص به, وينتهي بمجرد اغلاق المستخدم للصفحه, حيث يتم تدمير هذه الجلسه. لنقم بجعلها مبسطه وعلى شكل خطوات:
  1. بدأ الجلسه
  2. تسجيل متغير الجلسه
  3. استخدام متغير الجلسه
  4. الغاء متغير الجلسه وتدمير الجلسه
ليس بالضروره ان تكون جميع هذه الخطوات في صفحه برمجيه واحده, ويمكن ان تكون على عدة صفحات, لا تنسى ذلك !
بدأ الجلسه
يجب علينا ان نقوم بتفعيل ( بدأ ) الجلسات قبل عمل اي شي في الصفحه ويمكن فعل ذلك عن بالطريقه التاليه :
هذه الداله تقوم بالتحقق هل يوجد جلسه لهذا المستخدم ؟ اذا لا توجد جلسه تقوم بإنشاء جلسه خاصه بهذا المستخدم, فلو على سبيل المثال احمد قام بالدخول على الموقع فسوف يكون له جلسه خاصه به , ولو دخل خالد الموقع في نفس الوقت فسوف يكون له رقم اخر خاص به وهكذا. اما اذا كانت هناك جلسه خاصه بالمستخدم فسوف تقوم هذه الداله برفع المتغيرات التي تحويها هذه الجلسه لكي يتمكن لنا استعمالها في برنامجنا, ويجب عليك التذكر ان بدأ الجلسات في كل برامجك هو طريقه جيده بل ممتازه اذا كان برنامجك يعتمد على الجلسات.

تسجيل متغير الجلسه
هل تذكر المصفوفه $_GET والمصفوفه $_POST والمصفوفه $_SERVER سوف نتعلم الان مصفوفه جديده واسمها $_SESSION وهذه المصفوفه تقوم بتخزين كل المتغيرات بها. فلو اردنا ان نقوم بإنشاء متغير جلسه اسمه ( الاسم ) ونضع به القيمه 5 سوف نقوم بالتالي :

استخدام متغير الجلسه
لكي يمكنك استخدام متغير جلسه يجب علينا في البدايه بدأ الجلسه ثم استخدام المتغير عن طريق المصفوفه بالطريقه التاليه :
نفس الطرق التي تعلمناها في السابق, لا تخف من الجلسات فهي اسهل من السهوله. و اذا اردت التحقق من وجود متغير الجلسه ام لا , فسوف تعرف ذلك؟ ولتذكيرك تستخدم الطريقه isset او صديقتها empty كما تعلمنا مسبقا كالتالي:

الغاء متغير الجلسه و تدمير الجلسه
عند الانتهاء من استعمال متغير جلسه ما, يمكنك الغاء تسجيله بالطريقه التاليه :
والان بعد ان قمنا بإلغاء هذا المتغير نريد ان نقوم بتدمير الجلسه كامله لكي نقوم بالتنظيف, ويمكن عملها كالتالي:
مثال مبسط على الجلسات :
اعتقد انك تشعر بغرابه الان, هل هذه هي فقط الجلسات !! نعم عزيزي, هذه هي الجلسات ويمكن ان كلامي المبسط عنها لم يوضح الفكره, لنقم الان بعمل مثال يشرح لنا طريقة عمل الجلسات لكي توضح لك الصوره. سوف نقوم بإنشاء 3 صفحات وتتبع الجلسات بها. في الصفحه الاولى ( ses1.php ) سوف نقوم ببدأ الجلسه , وتسجيل متغير اسمه example لاحظ التالي :
و سوف يكون نتيجة الصفحه الاولى هو التالي :
لاحظ اننا بدأنا الجلسه ثم انشأنا المتغير , وعند انتهاء اسطرنا في البرنامج سوف تكون الجلسه في حالة تجميد الى ان نقوم ببدأ الجلسه في الصفحه التاليه. الان ننشئ صفحه جديده اسمها (ses2.php ) وسوف يكون محتواها هو التالي  :
لو تلاحظ اننا بدأنا الجلسه في بداية الصفحه لكي نقوم بتحميل جميع المتغيرات ثم طبعنا محتوى متغير الجلسه واخيرا قمنا بإلغاء متغير الجلسه. دقق في الصفحه وسوف ترى اننا لم ننشئ متغير جديد ولكن نفس المتغير الذي انشأناه في الصفحه الاولى انتقل الى الصفحه الثانيه. وسوف يكون ناتج هذه الصفحه هو التالي:
في الصفحه الاخير نقوم بنفس العمل ولكن عند طباعة المتغير لن نجد اي قيمه لأننا قمنا بإلغاء المتغير في الصفحه رقم ( 2 ) اليس كذلك ؟ اذن الصفحه ( ses3.php ) سوف تحوي الكود التالي:
عند عمل هذا الكود لن يقوم بطباعة محتوى المتغير لاننا الغيناه من قبل وسوف نقوم في الاخير بتدمير الجلسه كاملا, ولو حاولت ان تقوم بالدخول على الصفحه ( ses2.php ) من غير الدخول على الصفحه ( ses1.php ) فلن يوجد اي شيئ بالمتغير وهذا يؤكد لنا اننا نتابع المستخدم من صفحه الى اخرى.
ملاحظه (ضروري, ضروري, ضروري ان تقوم ببدأ الجلسه قبل ان تقوم بطباعة اي شيئ الى المتصفح والا لن يقوم برنامج بالعمل بشكل صحيح, دائما ابدأ الجلسه ثم اكتب الكود المتبقي )


سؤال على الدرس :

1 – حاول ان تقوم بعمل نظام تسجيل يعتمد على الجلسات, فقط قم بمحاولات لكي تستعد للدرس القادم

الـــدرس الــقادم :
سوف نقوم في الدرس القادم بعمل مثال تطبيقي ( نظام تسجيل ) بإستخدام الجلسات

الدرس السابع والعشرون: متفرقات متقدمه في PHP

متطلبات قبل البدء :
  • مراجعة جميع الدروس السابقه
اهداف الدرس:
  • الكلمات المحجوزه
  • متغيرات في اللغه
  • الداله strip_tags
  • الداله highlight_file
  • الداله highlight_string
  • الداله intval
  • الداله getenv

الكلمات المحجوزه :
هناك كلمات كثيره محجوزه في لغة PHP , ولها معانيها الخاصه , وهي تعتبر معرفات مسبقه فياللغه وقد اخذنا وتعلمنا الكثير منها , مثلا if وwhile و include وفي درس اليوم سوف نمر على بعض منها لان لها استخدامات جيده , وماعليك فعله هو معرفتها ثم التفكير في كيفية استخدامها فقط , هل انت مستعد ؟ اذن افتح محرر الاكواد ولنبدأ:

الكلمه __FILE__ :
هذه الكلمه تقوم بإعطائك مسار الملف الحالي كاملا , ولنشاهد عمل هذه الداله فاتح محرر الاكواد واكتب التالي:
وسوف يكون ناتج هذه العباره هو التالي:
لاحظ ان هذه العباره ارجعت لك المسار بالكامل واسم الملف الذي توجد به

الكلمه __LINE__ :
تقوم هذه الكلمه بإعطائك السطر الحالي للملف , لاحظ التالي:
وسوف يكون ناتجها هو السطر رقم ( 3 )

الكلمه isset() :
تقوم هذه الكلمه بالتحقق هل المتغير موجود ام لا , فمثلا لو نريد ان تحقق هل المتغير a موجود ام لا سوف نستخدمها كالتالي:
لاحظ اننا في البدايه لم ننشئ متغير اسمه a لذلك طبع لنا غير موجود ,, ولكن عندما انشأناه (حتى ولو كانت قيمته خاليه , اهم شي المتغير موجود ) فقط طبع العباره موجود

الكلمه unset() :
تقوم هذه الكلمه بتدمير المتغير ,, فلو لدينا متغير a واردنا ان نلغيه سوف نقوم بإستخدام هذه الداله ,, لاحظ التالي:
ملاحظه : هذه العباره لا تقوم بإرجاع اي قيمه , فقط تقوم بعملها وهو الغاء المتغير

الكلمه empty() :
تتحقق لنا هذه الكلمه من المتغير , هل توجد به قيمة ام لا ,, عملها بسيط لاحظ التالي:
متغيرات في اللغه :
تعلمنا سابقا ان لدينا مصفوفه اسمها $_POST و مصفوفه اسمها $_GET اليس ذلك صحيحا ؟ هنا سوف نتعلم مصفوفه جديده اسمها $_SERVER وهي مصفوفه تحوي معلومات عن السيرفر , يمكننا استخدام المتغيرات التي سوف اتحدث عنها الان من غير هذه المصفوفه ولكن الافضل ولا تنسى كلمتي هذه الافضل هو ان نقوم بإستخدامها بواسطه هذه المصفوفه لانها أامن لنا, لنبدأ بمشاهدة هذه المتغيرات وسوف تذهل من نواتجها , ضع يديك على لوحة المفاتيح ولنبدأ :

‘PHP_SELF’
هذا المتغير يقوم بإعطائك اسم الملف الحالي الذي تعمل عليه ( الملف الذي يشتغل في اللحظه ) وكما قلت في الاعلى عندما شددت على كلمة الافضل حاول ان تستخدمه بالطريقه الامنه وهي $_SERVER['PHP_SELF'] وطبعا يمكنك ان تستخدم هذا المتغير بالطريقه $PHP_SELF ولكن انا نصحتك بالطريقه الامنه والافضل والخيار يعود اليك, افتح محرر الاكواد لنشاهد عمل هذا المتغير , قم بكتابة التالي:

‘HTTP_REFERER’
سوف تستخدم هذه الداله اذا اردت معرفة الصفحه التي قدم منها الزائر ( اذا وجدت ) ولكني عندما قرأت دليل استخدام لغة PHP فقد وجدت عبارة تقول انه لا يمكن الوثوق في هذه الداله , لان الاستضافه يمكن ان تقوم بتعطيلها اذا ارادت وطريقة استخدامها هو كالتالي عزيزي الزائر:

‘REMOTE_ADDR’
اذا اردنا معرفة رقم (الاي بي ) = ( IP ) للزائر فسوف نستخدم هذا المتغير , وهو في الحقيقه لا يعمل بشكل صحيح , لذا نحتاج الى بعض الاوامر الاخرى لتحديد رقم الاي بي الخاص بالزائر , ولكن قد تجد منه منفعه في بعض الاوقات ,, خاصه اذا كنت على سيرفر شخصي خاص بك , لاحظ التالي:
هناك المزيد من هذه المتغيرات وهي كثيره جدا , ولا يمكن عدها من كثرتها , وقد شرحت لك ما تحتاجه هنا واذا اردت الزياده فاذهب الى موقع PHP وسوف تجد جميع المتغيرات الاخرى

اضغط هنا لزيارة موقع PHP
الداله strip_tags :
هذه الداله نستخدمها لفلترة النص ,, بحيث لو كانت به اسطر PHP او HTML نقوم بإستبعادها من النص وطباعته من غيرها ,, وتستخدم هذه الداله من ناحيه امنيه في معظم الاحيان , المدخل الاول هو النص المراد فلترته والمدخل الثاني هو اختياري وتضع به الوسوم التي لا ترغب في فلترتها لاحظ الكود التالي:
 
وناتج عملنا هو التالي :
الداله highlight_file :
هذه الداله تقوم بتلوين كود PHP الذي قمت بكتابته , على سبيل المثال لديك ملف اسمه code.php وبه الكود التالي :
ونريد عرض هذا الكود بشكل مرتب وملون , فسوف ننشئ ملف اسمه show.php ( على سبيل المثال ) ونكتب التالي :
لا تنسى ان الملف في نفس المجلد , فسوف يكون ناتج تشغيل الملف show.php هو الشكل التالي:
الداله highlight_string :
تقوم هذه الداله بنفس عمل التي بالاعلى ولكن الفرق ان الاولى لملف وهذه لنص , لاحظ التالي:
والناتج هو :
الداله intval :
اذا اردت معرفة ( العدد الصحيح ) لقيمة اي متغير فسوف تقوم بإستخدام هذه الداله :

الداله getenv :
تقوم هذه الداله الجميله بإعطائك قيمة المتغير لل ( environment ) = ( البيئيه ) واقصد بهذه المتغيرات التي تعلمناها في الاعلى مثل (REMOTE_ADDR ) وغيرها , هل تذكر عندما قلنا ان العباره (REMOTE_ADDR ) لا تقم بإعطائك رقم ( الاي بي ) الصحيح ؟ بمساعدة هذه الداله سوف تحصل على الاي بي الصحيح للمستخدم , طريقة عملها كالتالي:
ولمعرفة المتغيراتالبيئيه الاخرى يمكنك رؤيتها على الصفحه التاليه اضغط للذهاب الى صفحة المتغيرات البيئيه


سؤال على الدرس :

1 – قم بإنشاء نموذج يذهب الى نفس الصفحه وليس الى صفحه اخرى , وقم بمعاجلة المدخلات ( مساعده : استخدم isset و PHP_SELF ) مع طباعة المعلومات الخاصه بالزائر

الـــدرس الــقادم :


سوف نقوم في الدرس القادم بالتعرف على الجلسات في لغة PHP

كتر مشاهدة