Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

PHP Advance 101 دورة

4,587 views

Published on

دورة PHP للمستوى المتقدم 101
سنتطرق بهذه الدورة الى مفاهيم تنسيق الشفيرة البرمجية وكيفية التحكم بالأخطاء بشقيها الداخلية والخارجية .. بالإضافة الى التعرف على هجمات ال XSS والثغرات الأمنية ..وتجنبها ...

يمكنك الإطلاع على الدورة كاملة مع ملفات الأمثلة من هنا
2nees.com

(دورة مجانية)

Published in: Education
  • Be the first to comment

PHP Advance 101 دورة

  1. 1. بسم الله الرحمن الرح مٌ دورة PHP لما بعد المستوى المبتدئ تقد مٌ : أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com دورة مجان ةٌ للجم عٌ, لا جٌوز استخدامها للأغراض التجار ةٌ .... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  2. 2. المقدمة الحمد لله الذي بحمده تتم النعم, الحمد لله رب العالم نٌ.. بفضل من الله تعالى وتوف قٌه أبدأ ال وٌم دورة جد دٌة. وه دورة PHP لما بعد المستوى المبتدئ,ف هذه الدورة إن شاء الله, سنقوم بالترك زٌ على المرحلة الثان ةٌ من مراحل التطور لمبرمج نٌ ال PHP , كث رٌ منا وللأسف لم نعلم ك فٌ ومتى وأ نٌ مٌكن البدء والتعلم لاكتساب مهارات جد دٌة غ رٌ الأمور الاساس ةٌ الت نتعلمها بكثرة, وف كث رٌ من الأح اٌن ... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  3. 3. المقدمة كطلاب أو كمبرمج نٌ ف أول الطر قٌ نكتف بالأمور الاساس ةٌ , أو بالأمور الت تنتج المشار عٌ الت نرغب ...ولكن أغلب هذه المشار عٌ ف هٌا من نقاط الضعف الكث رٌ , والت لا مٌكن تجاهلها , مع صعوبة كب رٌة ف تحد ثٌ هذه المنتجات , أي أنه ف الغالب ل سٌت توافق ةٌ ولا مرنة ولا آمنة... وهنا بإذن الله تعالى , سنحاول معا أن نرتق قل لٌا لنكون قر بٌ نٌ من الانتقال الى المستوى المحترف للبرمجة ف لغة ال PHP ... هذا المستوى بٌدأ من بعد الانتهاء من مفاه مٌ ال OOP , وهذا لا عٌن ذلك أنك اذا لم تصل مستوى ال OOP أنك لن تستط عٌ قرابتها ...ولكن السبب ف ذلك هو أن الكث رٌ تٌوقف عند هذه المرحلة ..ولا سٌتط عٌ أن تٌابع التطور لمهاراته البرمج ةٌ ... وفقنا الله وإ اٌكم الى خ رٌ العمل .... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  4. 4. القناعــة .. راس الغنى : رأ تٌ القناعة رأس الغنى ..... فصرت بأذ اٌلها متمسك فلا ذا رٌان على بابه ..... ولا ذا رٌان به منهمك فصرت غن اٌ بلا درهم ..... أمر على الناس شبه الملك للإمام الشافع رحمه الله.. أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  5. 5. أسال بٌ تطو رٌ وتطب قٌ البرمج اٌت - 1 - Coding Style أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  6. 6. Coding Style عل كٌ أن تعلم عز زٌي المبرمج, أنك مهما امتكلت من تقن اٌت برمج ةٌ, ومهارة ف استخدام ال PHP Syntax أو PHP Function .. فان هذا لا عٌن أنه ج دٌ, وهذا لا عٌن أن المبرمج نٌ الآخر نٌ أو أنت بنفسك ..ستستط عٌ التطو رٌ أو التعد لٌ على ما كتبت من كود.. جٌب عل كٌ عز زٌي المبرمج أن تقوم بعمل اندماج ب نٌ الكود الخاص بك , وطر قٌة كتابة هذا الكود ... ل صٌبح كود سهل, مرن ... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  7. 7. Coding Style معلومات عالطا رٌ  أولا: عل نٌا أن نعلم أنه لا وٌجد معا رٌٌ مثال ةٌ لطر قٌة تصم مٌ الكود بشكل جذاب ... نعم لا وٌجد معا رٌٌ مثال ةٌ, ولكن هناك أسال بٌ اتفق عل هٌا ل سٌ رٌ عل هٌا المبرمج نٌ, لتعط جانب من المثال ةٌ, مقترنة بإسلوب كل مبرمج, وك فٌما فٌضل المبرمج ذلك , فهو نٌدرج تحت احدى الأسال بٌ ...  ثان اٌ: جٌب أن تعلم , أنه جٌب عل كٌ كتابة الكود بأبسط أسلوب ممكن, وهذا لا عٌن أن كٌون بس طٌ بقدر لا نٌفذ احت اٌجته , أو أن لا قٌوم بوظابفه ..أو أن صٌبح غ رٌ قابل للتطو رٌ .... بس طٌ ولكن مرن أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  8. 8. لنبدأ معا - 1 - Coding Style عند تصم مٌ أي كود , جٌب عل كٌ مراعاة النقاط التال ةٌ:  المسافة البادبة  طول السطر  الفراغات  مراعاة البن ةٌ الترك بٌة والطر قٌة القواعد ةٌ لل ال SQL هذه الأمور ه الأهم , وه من الأسال بٌ الت تعط جانب من المثال ةٌ ف كتابة الكود ... *( بعد معرفة هذه النقاط ..سننطلق الى مستوى آخر ف تصم مٌ الكود ... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  9. 9. المسافة البادبة Coding Style المقصود بالمسافة البادبة, ه تلك المسافة الت تسبق أي سطر برمج ... وه مهمة جدا, رغم بساطتها, فه تعط سهولة رابعة ف تتبع الكود, واكتشاف الأخطاء حتى والكث رٌة الش وٌع –مثل نس اٌن وضع { ف نها ةٌ block مع نٌ - , والآن سنرى مثال نٌ , الأول س كٌون بدون علامات بادبة والآخر بها ... ولاحظ أ هٌما أسهل بالقرابة والفهم .... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  10. 10. المسافة البادبة Coding Style أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  11. 11. المسافة البادبة Coding Style أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  12. 12. المسافة البادبة Coding Style  الآن بالنسبة للمسافة البادبة ..ورأ نٌا طر قٌة استخدامها ..وفابدتها الرابعة ..مع بساطتها ... عل كٌ ان تعلم انه هناك أنواع لها : الأول : Hard Tab : عندما تقوم بالضغط على زر tab س ظٌهر مسافة مع نٌة, تختلف من محرر نصوص الى آخر, وتكمن س بٌته ف هذه النقطة... الثان :ً Soft Tab : أ ضٌا نٌطلق عن الضغط على زر Tab ولكنك هنا تكون قد قمت باعداده على وضع عدد مع نٌ من الفراغات .. وهنا كٌون الطول عبارة عن فراغات ..لذلك لا تٌأثر من محرر نصوص الى آخر ...وف الغالب فٌضل استخدام هذا النوع. الثالث: Spaces : عند استخدامك لل Spaces العاد ةٌ فهذا عٌن ازاحة بمقدار فراغ واحد فقط ... وهو ثابت لا تٌغ رٌ ... )و مٌكن اعتبار Soft tab نٌدرج تحت هذا المسمى ..ولكن مع شرط الضغط على زر Tab .. أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  13. 13. طول السطر Coding Style  عندما كٌون السطر البرمج طو لٌ جدا , فإنه صٌعب تتبعه وقرابته , وهذا قد سٌبب مشكلة ..ق تتبع الكود, قرابته, بالاضافة الى شعور بالملل خصوصا ف وجود العد دٌ من الأسطر الت تكون بهذا الشكل .. لذلك تذكر دابما أنه عل كٌ فصل السطر الطو لٌ الى عدة أسطر ... وهذا جٌعل من الكود الخاص بك ...سهل وسلس للقرابة ... لننظر الفرق ب نٌ الكتابة بسطر واحد وعدة أسطر .. أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  14. 14. طول السطر Coding Style أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  15. 15. طول السطر Coding Style  طبعا ...وبشكل عام لا تدع السطر البرمج تٌجاوز ال 80 حرف مع فراغ ... وذلك لأن معا رٌٌ ال وٌنكس مثلا تستقبل 80 حرف لغا اٌت الطباعة , وإن تجاوز هذا العدد ..تصبح الخطوط عن الطباعة غ رٌ قابلة للقرابة ... عل كٌ ان تراع ذلك بالنسبة للمبرمج نٌ من ح ثٌ القرابة , وبالنسبة لتعامل البرمج اٌت المخلتفة مع طول الأسطر ... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  16. 16. إن ب تٌا خٌلو من كتاب هو ب تٌ بلا روح أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  17. 17. الفراغات Coding Style  نعم , الفراغات ...لا تتعجب من ذلك ... تلعب الفراغات دورا كب رٌا جدا ف الترك بٌة المنطق ةٌ للكود , ودورها كب رٌ ف تبس طٌ وتسه لٌ الرؤ اٌ لأي كود قد قمت بكتابته ... ان استغلالك السل مٌ لهذه الفراغات ...س جٌع من الكود الخاص بك ...رابع المنظر وسهل القرابة .. والآن لننظر الى أمثلة توضح ذلك .... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  18. 18. الفراغات Coding Style أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  19. 19. Coding Style *SQL* نحن نعلم أن ال SQL ...تستخدم بكثرة جدا حول العالم وف تطب قٌات ولغات برمجة كث رٌة ... ومن ضمنها ال PHP ... ونعلم أن لل SQL ..مجموعة قواعد خاصة للكتابة بها ..وأمور أخرى تسهل عل نٌا قرابة جمل الاستعلام الخاصة بها ..وكما نعلم فإن ال SQL تحتوي على جمل استعلام معقدة ..وهذا قد شٌكل خوف لدى الكث رٌ من المبرمج نٌ من كتابتها بشكل سهل للقرابة ..ول سٌ عدم علمهم ..وهذا ش ءً خاطا ..جم عٌ ما قد ذكرناه سابقا .. مٌكننا استخدامه ف التعامل مع أوامر ال SQL داخل ال PHP ... لنرى ذلك بمثال عمل .... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  20. 20. Coding Style *SQL* أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  21. 21. Coding Style *SQL* أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  22. 22. سٌتط عٌ الش طٌان أن كٌون ملاكاً والقزم عملاقاً والخفاش نسراً والظلمات نوراً . . لكن أمام الحمقى والسذج فقط . أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  23. 23. Coding Style -2- أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  24. 24. Coding Style -2- تحدددثنا فدد المسددتوى الأول عددن الأمددور الرب سٌدد ةٌ التددد تمثدددل الكدددود بشدددكل عدددام ..فددد أي مكدددان داخدددل المحرر ..والآن سننطلق الى جزب ةٌ أخرى ...وقد قمدت بفصلها لغا اٌت التطب قٌ ...أي بعدد تطب قٌدك وتنف دٌذك لمدا جاء ف Coding Style -1- ... باستطاعتك أن تكمدل ..وهذا ش ءً مهم للتعلم ..عل دٌك بتطب دٌق مدا قدرأت حتدى لا تدددددددددددددددددددددددددذهب قرابتدددددددددددددددددددددددددك سددددددددددددددددددددددددددى ... والآن لنبدأ مع الجزء الثان .... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  25. 25. Coding Style -2-  الجمل الشر طٌة والدوران ... جم عٌنا عٌلم ما ه الجمل الشرط ةٌ, وما هو الدوران ..ولكن ك فٌ تٌم تنس قٌ هذه الأجزاء ؟ ...وك فٌ مٌكنن جعلها أسهل بالقرابة والتعد لٌ ...الخ هذا ما سنج بٌ عنه بإذن الله تعالى ..  ف لغة ال PHP .. مٌكنك كتابة الجملة الشرط ةٌ بالشكل التال :ً أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  26. 26. Coding Style -2- إن قمت بتدق قٌ النظر ف الكود السابق ..فستلاحظ أن الجملة الشرط ةٌ جابت بدون استخدام ..وهذه الص غٌة ..مع أنها متاحة بال PHP ...الى أنها غ رٌ محبذة ..والصح حٌ أن تقوم باستخدام جملة الشرط أو الدوران مع {} – Braces -- ...وهذا جٌعل العمل ةٌ التنظ مٌ ةٌ أسهل , وأسرع للفهم والتعد لٌ... لاحظ طر قٌة الكتابة الصح حٌة .. أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  27. 27. Coding Style -2- لكن الآن ..وبعد انتهابنا من النقطة الأولى ...هل مٌكنن وضع {} ..أ نٌما أشاء ؟؟!! .. الجواب : هناك ثلاثة تصام مٌ لطر قٌة ترت بٌ ووضع ال Braces .. 1 ( ال BSD : توضع ال Braces هنا على أسطر منفصلة تحت كلمة الشرط مباشرة ...مثال: أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  28. 28. Coding Style -2- 2 ) لا GNU : تكون هنا ال Braces أ ضٌا أسفل الجملة الشر طٌة ..ولكن مع مسافة قل لٌة ..بح ثٌ تأت ال Braces ب نٌ كلمة الشرط و الشرط ..مثال: أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  29. 29. Coding Style -2- 3 ) لا K&R : بهذا التصم مٌ .. كٌون ال Braces ف نفس السطر مع جملة الشرط ...مثل: والآن السؤال القوي ^_^ : أي التصام مٌ هو الأفضل ؟؟!! والجواب بكل بساطة ...رح ندخل بنقاش لن نٌته ..استخدم التصم مٌ ال بعجبك ... لكن شخص اٌ ..أفضل ال K&R ... هو الأروع بالنسبة ل .. وأستخدم ال BSD عند استخدام ال Function وهذا جٌعل من الكود الخاص ب سهل القرابة ...لنشاهد مثالا .... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  30. 30. Coding Style -2- *( هذا التصم مٌ الذي أحب استخدامه .... وأنت لك الخ اٌر ف أسلوبك ... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  31. 31. Coding Style -2-  لا نع ملكتنس نلآاو coding style لجمل الدوران .. كث رٌ منا وللأسف قد لا جٌد فرقا ف استخدام أي جملة دوران ..لاتمام المهمة ..ومع أن هذا غ رٌ خاطا قواعد اٌ ...لكنه خاطا منطق اٌ ..وإلا ..فلماذا تم انشاء هذه الجمل ..فكنا اكتف نٌا بجملة دوران واحدة وانته نٌا ؟! لكل جملة دوران ..مكان فٌضل استخدام ص غٌة ولا فٌضل استخدام آخرى ..وهذا جٌعل الكود أسهل ف التعد لٌ واضافة الشروط مثلا ...وأسهل ف القرابة ومعرفة المحتوى من الدوران ..بشكل أسرع ..والآن لننظر ونقارن ب نٌ While –For -Foreach ^_^ .... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  32. 32. Coding Style -2-  لا While : بالنسبة لجملة الدوران هذه ...فلا تستخدمها اذا أمكن اسددتخدام ال For أو Foreach ..وهددذا شدد ءً مهددم ... وهنددا لا أنفدد أن جملددة الدددوران هددذه مهمددة ..ولكددن هندداك أولو دٌدة لترت دٌدب الكدود بح دٌدث ظٌهددر بشدكل أفضددل... هددذه الجملدة كٌثددر اسددتخدامها عند عدم المعرفة متى س نٌته الدوران ..بشدكل خداص ..فأحتاجده أن سٌتمر حتى حدوث أمر مع نٌ ..أو الوصدول الدى Null ...الدخ ..مف دٌة جدا ف التعامل مع ناتج استرجاع جمدل الاسدتعلام لقواعدد الب اٌندددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددات ... طبعا لماذا قلنا أنه فٌضل استخدام for & foreach اذا أمكن ذلك ...السددبب فدد درجددة التعق دٌدد ..لأنددك ان احتجددت الددى كتابددة شددرط داخل جملدة الددوران هدذه ..سد زٌ دٌ بشدكل ملحدوظ مسدتوى التعق دٌد وصعوبة التتبع ... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  33. 33. Coding Style -2-  ال For : جملددة الدددوران هددذه تسددتخدم فدد حالددة معرفددة البدا ةٌ والنها ةٌ لجملة الدوران ...جملة الدوران هذه أقل درجدددة مدددن التعق دٌددد فددد حدددال تحقدددق هدددذا الشدددرط ...  ال Foreach : جملددة الدددوران هددذه راااابعددة جدددا ^_^ ..لكددن فدد التعامددل مددع المصددفوفات .. اذن هددذه الجملددة نسدددتخدمها فددد حدددال وجدددود مصدددفوفات ..ولا نسدددتخدم ح نٌها ال For أو while .. لأن أدابها أفضل ف ذلك .. والآن لنرى مجموعة من الأكواد كأمثلة ..... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  34. 34. أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  35. 35. Coding Style -2-  مددن الأمددور الج دٌددة أ ضٌددا ..اسددتخدام ال Break & continuoue ... وذلدددك ج دٌددد جددددا بالنسدددبة لدددلأداء .. فلمدداذا مددثلا أقددوم باكمددال الدددوران اذا وصددلت الددى ق مٌددة مع نٌددة –وهدد التدد أحتاجهددا – مثددل لمددا احكدد بدددي 3 أعداد زوج ةٌ فٌصدل ب نٌهمدا 4 أرقدام ...مجدرد مدا لق دٌت ال 3 أعددددداد ..أقددددوم بانهدددداء الدددددوران ..وهددددذا منطق دٌدددا أفضل..واستغلال للمصادر المتاحة بشكل أكبر.. أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  36. 36. تجنب الحلقات المتداخلة Coding Style -2-  لتجعل أداء الكود الخاص بك ..أفضل .. حاول قدر الامكان ..التقل لٌ من استخدام الحلقات المتاخلة –مثل استخدام InsteadLoop - .... وهنا لا أنف استخدامها ...فه تلعب دورا مهما ف كث رٌ من الأح اٌن ..لكن هناك مواقف لا داع لاستخدامها ..والعد دٌ منا إما للعجلة أو عدم الانتباه .. لا رٌعى لها بالا ... لنرى مثالا ..عن أخطاء مٌكن أن نقع بها ^_^... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  37. 37. تجنب الحلقات المتداخلة Coding Style -2- أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  38. 38. تجنب الحلقات المتداخلة Coding Style -2- أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  39. 39. مددددددددددددددددددددددددددن مكددددددددددددددددددددددددددارم الأخددددددددددددددددددددددددددلاق .... قددددددددددددددددددددددددددال : لما عفدوت ولدم أحقدد علدى أحدد ..... أرحدت نفسد مدن هدم العدداوات إنددد أح دٌدد عددددوي عندددد رؤ تٌددده ..... لأدفدددع الشدددر عنددد بالتح دٌددات وأظهر البشر للإنسان أبغضه ..... كما إن قد حشى قلب مودات الإمام الشافع رحمه الله .. أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  40. 40. توض حٌ الأسماء Coding Style -2-  مددن الأمددور المهمددة هدد اعطدداء تسددم ةٌ دق قٌددة أقددرب مددا كٌددون لوظ فٌددة متغ دٌدر مددا ..أو اسددم فانكشددن معدد نٌ ..أو كلاس معد نٌ ..الدخ ... وهدذا الأمدر مف دٌد جددا فد قرابدة الكود , وسهولة تعد لٌه ...وسهولة الوصول الى المتغ رٌ واسدددددددددددددددددددددددددددددددددددددددددددددددتخدامه ..الدددددددددددددددددددددددددددددددددددددددددددددددخ.. هددذا الأمددر مهددم جدددا ..و قٌددع بدده الكث دٌدر مددن المبددرمج نٌ المبتدددددددددددددددب نٌ ... عل دٌدددددددددددددك مراعدددددددددددددداة ذلددددددددددددددك ... لنرى مثالا ...^_^ أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  41. 41. توض حٌ الأسماء Coding Style -2- لاحظ ف المثال الصح حٌ ... أنن عندما قرأت اسم الفنكشن ..علمت أنه س رٌجع مصفوفة .. وس سٌتقبل متغ رٌ مٌثل حجم مع نٌ ...وال retval ..تعن المتغ رٌ الذي س حٌوي النتابج من العمل ةٌ .... هل لاحظت سهولة التحل لٌ ..ب نٌ الأول والثان ^_^ أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  42. 42. المتغ رٌات Coding Style -2-  كما نعلم جم عٌا أن هناك Scope .. لكل متغ رٌ ..خارج هذا ال Scope )نطاق( لن تستط عٌ الوصول ال هٌ .. عٌتبر متغ رٌ م تٌ %_@... هذا موضوع معروف ..لكن ما سأرغب ف ذكره ال وٌم هنا هو الآت .. مٌكننا تقس مٌ ح اٌة المتغ رٌ الذي نقوم بتعر فٌه الى 3 أقسام, وه : 1 ) Truly-Global : وهو المتغ رٌٌ الذي عٌ شٌ لفترة طو لٌة وف مساحة كب رٌة جدا من الكود الذي قد قمت بكتابته ...أي مٌكنك استخدامه و نٌ ما تروح –ف الغالب- ولكن هذا الأمر ل سٌ بج دٌ ...وعل كٌ تجنبه وذلك بسبب... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  43. 43. المتغ رٌات Coding Style -2-  السبب الأول: هذا المتغ رٌ ..بما أنه عٌمل بأغلب السكربت الذي قمت بكتابته ..فهذا عٌن أنه تٌعرض لكث رٌ من التعد لٌ والتغ رٌٌ لق مٌته ..وهذا جٌعل أمر تتبع ق مٌته ..أمرا صعبا .  الثان :ً إذا قمت بتعر فٌ متغ رٌ اسمه $X مثلا ..واستخدمت NameSpaceLib ..وكانت تستخدم هذه المكتبة نفس اسم المتغ رٌ $X ...فإن هذا س حٌدث نوعا من التصادم ..وكلما زاد عدد التصادم ..زادت المشاكل ..والأخطاء الت ستظهر و صٌعب تتبعها .. أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  44. 44. المتغ رٌات Coding Style -2-  الآن ملاحظددة عنددد كتابتددك اسددم المتغ دٌدر الددذي سدد كٌون Truly-Global ... جٌدددددب أن كٌدددددون جم دٌددددع أحرفددددده Capital Letters .. مثدددددل AUTH_PATH ...$ وهددذه مددن قواعددد ال Coding style لهددذا النددوع مددن المتغ دٌددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددرات .. الآن قددد سٌددأل أحددد الشددباب ^_^ ...المشدداكل التدد تددم ذكرهددددا ..هددددل لهددددا حددددل ؟ ..الجددددواب ببسدددداطة نعدددددم ...لنسددتعرض مثددال بسدد طٌ معددا .. بٌدد نٌ ك دٌدف مٌكننددا أن نتخلص من مثل هذه المشاكل ..مدع الوصدول الدى نفدس الهدف ... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  45. 45. المتغ رٌات Coding Style -2-  لنأخددددذ مددددثلا ..عمل دٌدددة شددددابعة الانتشددددار .. خٌطددددا بهددددا المبتدب نٌ كث رٌ .. – طبعا أنا كنت أوقع ف ^_^ - المهم ... هددو عمل دٌدة الددربط مددع قاعدددة الب اٌنددات ..لنددرى هددذا المثال ... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  46. 46. المتغ رٌات Coding Style -2-  الحل الأفضل من السابق س كٌون ف استخدام ... Classes ..لاحظ هنا أنن حققت نفس الغرض بأمان أكثر طبعا بالنسبة ل ...أقوم بكتابة كود الربط مع قواعد الب اٌنات داخل Abstract Class .. رٌثه الكلاس الأخرى .. أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  47. 47. المتغ رٌات Coding Style -2- 2 ) Long-Lived Variables : وهذا النوع من المتغ رٌات دورة ح اٌته طو لٌة ..ولكن لا تصل الى درجة ال Global ... و سٌمى هذا النوع من المتغ رٌات باسم وصف دٌل على وظ فٌته طوال البرنامج .. 3 ) Temporary Variables : تستخدم هذه المتغ رٌات داخل ح زٌ أو نطاق برمج صغ رٌ ..بح ثٌ ؤٌدي وظ فٌة مع نٌة و نٌته بعدها ..وهذا الاسم جٌب أن كٌون..قص رٌ أو موجز ...مثل جمل الدوران ..غالبا ما نستخدم الرمز ,$j,$k,$i كمثال لمتغ رٌات ف جمل الدوران ..الخ ... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  48. 48. المتغ رٌات ذات الكلمات المتعددة Coding Style -2-  من الأمور المهمدة فد تصدم مٌ أي كدود ... هد طر قٌدة كتابدددة المتغ دٌددرات .. وهدددذا عرفنددداه .. لكدددن مددداذا عدددن المتغ رٌات الت تتكون من أكثر من مقطدع مثدل تعر دٌف متغ رٌ مٌثل هذه الجملة Number Elements ... هدذه الجملة الت رأ نٌاها ... ما ه أفضل طر قٌة لتمثل عل هٌ كإسدددددددددددددددددددددددددددم متغ دٌددددددددددددددددددددددددددر برمجددددددددددددددددددددددددددد ؟ً .. للجدواب عدن ذلدك .. هندداك مدرسدتان وضدعت كدل منهددا حل لهذه المشكلة .......لننظر الى هذه الحلول... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  49. 49. المتغ رٌات ذات الكلمات المتعددة Coding Style -2-  المدرسة الأولى: تكلمت هذه المدرسة عن ال Methodology التال ةٌ : camel caps  السؤال الآن ما هو مبدأ عملها ... بكل بساطة هو ف أن تقوم بوضع فواصل الكلمات أحرف Capital وهذا مٌثل مقطع جد دٌ ف الاسم .. اذا ف جملتنا السابقة س كٌون شكل الجملة على التال : $numElements - تذكر لا وٌجد ش ءً مثال 100 -% .. أمثلة أخرى .. getData() - buildSomeWidget() أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  50. 50. المتغ رٌات ذات الكلمات المتعددة Coding Style -2-  المدرسة الثان ةٌ: تتكلم هذه المدرسة عن ال Methodology التال ةٌ : a.k.a. studly caps (Using underscores ( to break words  هذه المدرسة تقول أنه من الأفضل أن تقوم بالفصل ب نٌ المتغ رٌات المتعددة المقاطع ب ) _ ( .. وهذا عٌن أن جملتنا ستصبح بالشكل التال :ً $num_elements – set_price---get_data  بالنسبة ل أفضل استخدام هذا الأسلوب ... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  51. 51. المتغ رٌات ذات الكلمات المتعددة Coding Style -2-  قلت ف نها ةٌ الشر حٌة الثان ةٌ أنن أفضل استخدام الأسلوب الثان وهو ) _ ( .. والسبب ف ذلك: 1 ( لقد تكمنا ف الدروس السابقة عن المتغ رٌات ال Global وقلنا أنه من قواعد كتابة هذه المتغ رٌات أن تكون أحرفها جم عٌا Capital .. اذن فماذا س حٌدث لو كان اسم المتغ رٌ هذا من أكثر من مقطع ؟ هذه أول مشكلة .. $NUMELEMENT انظر ك فٌ ستصبح جملتنا ... لن نستط عٌ تم زٌٌ المقطع الأول عن الثان بسهولة ..إنه أمر مزعج ^_^ أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  52. 52. المتغ رٌات ذات الكلمات المتعددة Coding Style -2- 2 ( السبب الثان :ً سهولة القرابة عند وجود فواصل مثل _ ) ( أسهل بالقرابة من الكلمات المتلاصقة 3 ( السبب الثالث: المبرمج نٌ الذ نٌ تٌحدثون اللغات الأخرى – أي أن اللغة الانجل زٌ ةٌ ل سٌت لغتهم الأم – س تٌعرفوا على الكلمات بشكل أوضح من استخدام الكلمات المتلاصقة ... 4 ( لأن أنا بفضل هذا الأسلوب : P ^_^ *( هناك من لا فضل هذا الأسلوب أ ضٌا ..ابحث وانظر وقارن ب نٌهم ..واختر ما نٌاسبك .. أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  53. 53. أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  54. 54. Coding Style -2-Function Name  سنتحدث الآن بإذن الله تعالى عن كتابة ال Function Name ... لنتذكر ما أخذنا سو اٌ .. سأستخدم BSD ..كنظام لتحد دٌ بدا ةٌ ونها ةٌ هذا الفانكشن ..وسأقوم بتعر فٌ اسم الفانكشن ..اذا كان من جزء واحد بأحرف صغ رٌة ..وإذا كان أكثر من جزء باستخدام) _ (.. ل صٌبح الفانكشن عندنا بهذا الشكل ... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  55. 55. مداخلة سر عٌة: هناك ش ءً اسمه جودة الاسم البرمج ) (Quality Names وهذا عٌن أن أي كود تقوم بكتابته, وف أي لغة برمجة كانت, جٌب أن تكون مفهومه من قبل الآخر نٌ, و جٌب أن تكون المتغ رٌات أو الفانكشن أو او الكلاس كلها ذات معان ودلابل لما ستقوم به من عمل . إن الالتزام بهذا المعنى عٌط صاحبه مهن ةٌ ف العمل, و جٌعل من التعل مٌات الصعبة ش ءً مفهوم قدر الامكان, وهذا ما مٌ زٌ المبرمج المبتدئ عن المتوسط عن المحترف ... مدى احترافهم للكود بالاضافه الى مدى الاحتراف ف تصم مٌه .. أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  56. 56. Coding Style -2-Class Name  كما للفانكشن ... من قواعد ...فهناك أ ضٌا للكلاس .. ان قواعد كتابة اسم الكلاس ..لا تختلف عن الجافا .. )طبعا ل سٌ الزام اٌ( .. ومن هذا عٌن انه لتسم ةٌ كلاس مع نٌ 1 : جٌب ان كٌون الحرف الأول من اسم الكلاس Capital .. 2 : مٌكنك استخدام القواعد الت تم ذكرها مثل استخدام studlycap, or camel cap تذكر: لا وٌجد ش ءً مثال 100 % ولا ش ءً ملزم 100 ... % لكن هناك أمور لو سرت بها ستجعلك أقرب من غ رٌك لأن تكون مثال اٌ ...ولا عٌن استخدام أسلوب بدلا من آخر أن ذلك خطأ ..وأنك غ رٌ محترف ... لاكن انظر لحسنات وس بٌات كل اسلوب واختر ما تراه الأفضل... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  57. 57. Coding Style -2-Method Name  الآن سنتلكم عن طر قٌة كتابة الاسم للم ثٌود .. قد نٌظر البعض و قٌول الم ثٌود ..ه ذاتها الفانكشن... فأقول له أنك أصبت .. ولكن ل سٌ بشكل مطلق .. لأن هذه التسم ةٌ لم تخرج عبثا ..!!! ..اذاً؟..... إذا كتب الفانكشن داخل كلاس ...ح نٌها سٌمى م ثٌود .. ومن هنا أ ضٌا وٌجد امر جم لٌ ف التصم مٌ ... وهو وجود طر قٌ للتصم مٌ بح ثٌ تم زٌ من خلال النظر الم ثٌود عن الفانكشن .. استخدم هنا الحرف الأول Capital بعد الكلمة الأولى ف كل مقطع.. ومن ثم استخدم النظام الذي تحب ... Camel,or Studly cap .. أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  58. 58. مثال على الكلاس والم ثٌود Coding Style -2- لاحظ: أن أول حرف بكل كلمة بعد الاولى ف الم ثٌود ه Capital أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  59. 59. تناسق التسم ةٌ Coding Style -2-  من الأمور المهمة ف تصم مٌ الكود .. مراعاة التناسق ب نٌ الأسماء... خصوصا التسم ةٌ للأمور الت ستؤدي وظ فٌة لنفس العنصر ان كانت بالنقصان أو الز اٌدة كمثال .. مثال: شاهد ك فٌ أن المتغ رٌات على نسق واحد .. فقمت بذكر الغرض من هذا المتغ رٌ , ثم لمن –أو شرح لمن هذه المهمة- أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  60. 60. أسماء الأعمدة ف قواعد الب اٌنات وأسماء المتغ رٌات Coding Style -2-  إن من الأمور الجم لٌة أثناء كتابة الكود أثناء التعامل مع قواعد الب اٌنات .. هو كتابة أسماء المتغ رٌات بنفس أسماء الاعمدة ..وهذا سٌهل عل نٌا كث رٌا عمل ةٌ التعد لٌ أو التطو رٌ على الكود.. لذلك قم بكتابة أسماء المتغ رٌات الت تتعامل مع الأعمدة بنفس الص غٌة حرف اٌ...شاهد هذا المثال: أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  61. 61. نها ةٌ ال Coding style -2- بفضل من الله تعالى ... انته نٌا الآن مدن ال Coding Style 2 .. ولقد تكلمنا عن كث رٌ من الأمور المهمدة فد كتابدة الكدود .. والتد تددؤثر عل دٌده بشددكل واضددح... وتظهددر مدددى احتددراف المبددرمج ... كل ما تم ذكره سابقا .كان تٌحدث عدن المحاولدة قددر الامكدان فد جعل الكود أبسدط ..أسدهل .. أكثدر قددرة علدى القرابدة ..خصوصدا لمطدددددددددددددددددددددددددددددددور نٌ البرمج دٌددددددددددددددددددددددددددددددات الجددددددددددددددددددددددددددددددددد .. والآن سددننتقل بددإذن الله تعددالى الددى الجددزء الثالددث والأخ دٌدر مددن ال Coding Style .. بح ثٌ سنتكلم به ..ك فٌ مٌكننا أن نمنع الخلدط ب نٌ الرموز المختلفة بالكود ..مثل فتح تداغ معد نٌ وإنهابده ..وضدع كود Html & PHP معا ...الخ لنذهب سو اٌ ^_______^ أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  62. 62. أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  63. 63. Coding Style -3- أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  64. 64. Coding Style -3-Short Tag  أول موضوع سنتكلم عنه ..هو تجنب استخدام ال Short tag وخصوصا ف موضوعنا عن صفحات ال PHP ... نحن نعلم أن ال PHP مٌكنك البدأ بها وإنهابها بعدة طرق ... مثل <?php?> .. هذا التاغ هو ال Standard tag ... لكن من الطرق الأخرى مثلا ه <? ?> ... هذه الطر قٌة .. مٌكن استخدامها أ ضٌا ف ال PHP .. ولكن هذا س ءً ..وإن سألتن لماذا ..سأقول لك .. انظر الشر حٌة التال ةٌ ^____^ أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  65. 65. Coding Style -3-Short Tag لاحظ: هنا قمت باستخدام هذا التاغ لتعر فٌ أن المستند XML Normal ما الجد دٌ ..؟؟؟ ف حال وجودها مع كود PHP .. سٌتخدم نفس ال الص غٌة للتاغ ...مثل ف هذه الحالة لن عٌمل ال xml بشكله الطب عٌ ... لأن ال PHP س قٌوم بعمل interrupt لل header ..وبعاملو كأنو Block ... دابما قم بكتابة الكود بشكله الصح حٌ .. هنا أن تختصر ..ل سٌ أمرا ج دٌا .. قم بكتابة الكود كالتال :ً أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  66. 66. Coding Style -3-PHP & html  لا تازٌمم مهأ ىدحا نإ PHP ...هدو امكان دٌة تضدم نٌ كددددددود ال PHP داخددددددل كددددددود ال html والعكددددددس ... ولاكددن هددذه قددد تسددبب لنددا مشددكلة فدد Coding Style ..فقد تز دٌ من صعوبة قرابة الكود .. عوضا عن الخلط ب نٌ النوع نٌ ..قد سٌبب بعض الأخطداء الغ دٌر مقصدودة ..اذن مدددددددددددددددددددددددددددددددددددددددددددددددددددا الحدددددددددددددددددددددددددددددددددددددددددددددددددددل؟ الحدددل باسدددتخدام تصدددم مٌ ج دٌددد لهدددذا الندددوع مدددن الكدددود ..وك دٌدددف كٌددددون ذلددددك ..؟! .. لنددددرى أولا أمثلددددة علددددى النوع نٌ ...ف الشر حٌة التال ةٌ ^____________^ أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  67. 67. Coding Style -3-PHP & html اٌ سلام ... طبعا فرق ... الثان أحلى 100000 مرة ^_^ .. الكود لما كٌون صح حٌ ..وتنجزه .. أنت أول من فٌرح لذلك ^_^ . أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  68. 68. Coding Style -3-PHP & html أظدددن ان الفدددرق أصدددبح واضدددحا ..بعدددد المثدددال نٌ السدددابق نٌ ..وباختصار .. حاول قددر الامكدان أن لا تجعدل ال echo or print ه مدن تقدوم بطباعدة ال html ..بدل اجعدل كدل مدددددددددددددددددددددن اللغتددددددددددددددددددددد نٌ تقدددددددددددددددددددددوم بمهامهدددددددددددددددددددددا ... قلنددا أن مددن اهددم مزا دٌدا ال PHP امكان دٌدة تضددم نٌها داخددل ال Html والعكددس .. اذن اسددتغلها بالشددكل الصددح حٌ ..ضددمن الاثنان ..ودون أن تجعلهما تٌداخلان قدر الامكان ... ملاحظددة: <?= ?> التدد قمددت باسددتخدامها بالمثددال الأول فدد الشر حٌة السابقة .. تعن <?phpecho “$username” ?> أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  69. 69. Coding Style -3-Parentheses -()-  ان من الأمور الت سٌبب الخلط بها ..مصدابب برمج دٌة ..ال – )( - .. والسدددبب فددد ذلدددك ..أنهدددا تلعدددب دورا رب سٌدد اٌ فدد تحد دٌدد أولو دٌدات سدد رٌ العمددل .. وهددذا شدد ءً نعلمدددددددددددددددددددددددددددددددددددددددددددددددددده جم عٌددددددددددددددددددددددددددددددددددددددددددددددددددا ... لدددذلك فددد تصدددم مٌ الكدددود ..فقدددد روعددد ذلدددك أ ضٌدددا .. هناك حكمدة تقدول ) اسدتخدم ال )( بحكمدة وتدروي .. ( بحكمدددة ..مفهومدددة ...وتدددروي؟؟ .. تدددروي تعنددد أن لا تكثر باستخدامها بح ثٌ تصبح بشكل مدزعج ..وان كدان التسلسل صدح حٌ ...لدنلاحظ الأمثلدة فد الشدر حٌة التال دٌة ^_______^ أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  70. 70. Coding Style -3-Parentheses -()- المثال الثالث ..ف الشر حٌة التال ةٌ ..... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  71. 71. Coding Style -3-Parentheses -()- لقد لاحظت بكل تأك دٌ ... الفرق ب نٌ الأمثلة الثلاثة ...وقد لاحظت الفرق ب نٌ تتبع كل منها.. !ن المثال الأول .. صٌعب تتبعه الا بخبرة برمج ةٌ ..وذلك بسبب عدم وجود الأقواس ..وهذا س رٌهق اي شخص س قٌرأ الكود بعد ذلك ..حتى ولو كنت أنت .. وف المثال الثالث: صٌعب تتبعه بسبب وضع ال )( بشكل لا طٌاق ...هذا الشكل كب رٌ جدا .. صٌعب تتبعه وقرائته ... ف المثال الثان : كان الاستخدام معتدل وبحكمه ... بح ثٌ ل سٌ بقل لٌ ول سٌ بكثر ... ممكن تقول ..كل هاي الأمور اش مش مهم ... لكل هذا لا قٌل أهم ةٌ عن البرمجة ..خصوصا عندما تتطور حتى تكتب كود من متوسط الى كب رٌ ...ستلاحظ الفرق ... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  72. 72. أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  73. 73. )التوث قٌ( Coding Style -3-Documentation عٌد التوث قٌ من أهم الأمور ف تصم مٌ أي كود, وذلك لتسه لٌ فهم الكددود لددك أو لغ دٌدرك حتددى تسددتط عٌ أو سٌددتط عٌ أي مبددرمج آخددر التعد لٌ عل هٌ والتعامل معه, وهذا مهم جدا ف الشدركات , لأنده لا وٌجد موظف س بٌقى للأبد ف شركته الت عٌمدل بهدا ...لدذلك تهدتم بالتوث قٌ , حتى اذا جداء موظدف جد دٌد , اسدتطاع أن كٌمدل العمدل ..وهكدذا لا تٌوقدف تطدو رٌ البرندامج ..ولا تٌوقدف عمدل الشددركة , ولو تخ لٌنا العكس , وهو عددم وجدود توث دٌق ..مداذا سد حٌدث؟ بكدل بسدداطة سدد قٌوم أي مبددرمج أو موظددف ..بقرابددة الكددود كامددل حتددى سٌتط عٌ أن فٌهمه, وهذا عمل شبه مستح لٌ خصوصا فد البدرامج العملاقة , والت قدد تحتدوي مبدات الألدوف مدن الأسدطر ...وحتدى الملا دٌددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددد نٌ... تذكر أنك بدون توث قٌ ...لست مبرمج ج دٌ لأن الكدود الخداص بدك سدددددددددددددددددددددددددددددددددددددددد كٌون قل دٌدددددددددددددددددددددددددددددددددددددددل الجددددددددددددددددددددددددددددددددددددددددودة أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  74. 74. نٌقسدددددددددددم التوث دٌددددددددددق الدددددددددددى قسدددددددددددم نٌ رب سٌددددددددددد نٌٌ: الأول: Inline comments : هددذا النددوع مددن التوث دٌدق قٌوم على شرح مخطط س رٌ تنف ذٌ الكدود , والهددف منده هو تعز زٌ قدرة المبرمج نٌ على التعدد لٌ أو التحدد ثٌ أو تصدددددددددددددددددددددح حٌ التعل مٌدددددددددددددددددددددات البرمج دٌددددددددددددددددددددة .. الثدددان :ً API documentation : وهدددذا الندددوع مدددن التوث دٌدق للأشددخاص الددذ نٌ رٌ دٌددون اسددتخدام الكددلاس أو الفانكشدددددددددددن بددددددددددددون قرابدددددددددددة الكدددددددددددود بذاتددددددددددده... والآن : لنبدأ بشرح كل تصن فٌ منهم ....^_^ )التوث قٌ( Coding Style -3-Documentation أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  75. 75. Coding Style -3-Inline comments  فدد ال PHP .. مٌكنددك اسددتخدام أكثددر مددن طر قٌددة للتوث دٌدق وهددددددددددددددددددددددددددددددددددددذه الطددددددددددددددددددددددددددددددددددددرق هدددددددددددددددددددددددددددددددددددد :ً 1 ) C-style comments : الأسدلوب المسدتخدم فد السد ..وهدددددددددو /* any comments */ 2 ) C++-style comments : الأسددلوب المسددتخدم فدد السدددددددد ++ ... وهددددددددو // any comments3 ) Shell/Perl-style comments : الأسلوب المسدتخدم بدددددالب رٌل أو شددددد لٌ ... وهدددددو # any comments الآن جم دٌدع هددذا الأسددال بٌ مٌكنددك اسددتخدامها فدد PHP .. طبعدددا طر قٌدددة التوث دٌددق التددد أنصدددحك بهدددا ..هددد اسدددتخدام أسددلوب السدد لتوث دٌدق متعدددد الأسددطر أو الكب دٌدر ..وأسددلوب الس ++ لتوث قٌ سطر واحد ... شاهد الأمثلة ... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  76. 76. Coding Style -3-Inline comments أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  77. 77. Coding Style -3-API Documentation خٌتلف نوع أو الهدف من هذا التوث قٌ عن ال inline .., فالهدف من هذا التوث قٌ ..ل سٌ شرح التعل مٌات البرمج ةٌ بالتحد دٌ ...وانما شرح للمبرمج نٌ ..ك فٌ س تٌعامل مع هذا الكود .. ولذلك بالأصل سم API .. والت ه اختصار ل Application Programinginterface .. وهذا لا عٌن الواجهات أو التصام مٌ الت تظهر لل وٌزر .. عٌن ه ل سٌت GUI ... ال API .. عبارة عن اسلوب مٌكنك من استخدام فانكشن مع نٌة تم تعر فٌها من قبل –لهذا الغرض- ل سٌتط عٌ المبرمج نٌ الآخر نٌ من استخدامها – وهذا الكلام تستخدمه نظم التشغ لٌ ..حتى تستط عٌ التعامل مع البرامج المختلفة ..و سٌمح لك بكتابة الفانكشن من الصفر طبعا هذا بشكل موجز.. الآن نعود لموضوعنا وهو توث قٌ هذا الكلام ...... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  78. 78. وٌجددد 3 أمددور رب سٌدد ةٌ جٌددب أن حٌتو هٌددا هددذا التوث دٌدق وهددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددد :ً 1 ( جٌدب أن قٌددم هدذا التوث دٌق مقدمدة سدر عٌة للمسدتخدم ..حتدددى عٌلدددم أن هدددذه المكتبدددة أو الفانكشدددن ..ستناسدددب احت اٌجاتددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددده أم لا ... 2 ( جٌدددب أن قٌددددم توث دٌددق كامدددل عدددن جم دٌددع الكدددلاس والفانكشددن مددن نددوع Public ..و جٌددب أن حٌتددوي علددى شدرح لجم دٌع Input &output ) . Parameters( 3 ( جٌب أن تحتوي على شرح أو أمثلة لك فٌ دٌة اسدتخدام هذه الفانكشن. Coding Style -3-API Documentation أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  79. 79. Coding Style -3-API Documentation بالإضافة الى ما سبق ..فإنه بامكانك التكلم أ ضٌا عن 1 ) Protected م ثٌود المستخدمة ووضع توث قٌ مناسب لها .. 2 ( وضع امثلة لطر قٌة الوراثة من هذه الكلاس وك فٌ ةٌ اضافة وظ فٌة جد دٌة )فانكشن( الى هذا الكلاس .. وغالبا ما تكون هذه الاضفات مف دٌة ..لك ولمن س تٌخدم هذا التوث قٌ –انتبه غالبا- أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  80. 80. Coding Style -3-API Documentation أخ رٌا ..بالإضافة الى المعلومدات التد سدبق ذكرهدا .. جٌدب أن قٌدم مجموعة من الاضافات عن مطور هذا البرندامج أو الكود .. ف بٌدأ أو التوث دٌق باسدم المطدور ..وعل دٌك مراعدة مدا لٌدددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددد :ً 1 ( جٌدب أن كٌددون التوث دٌدق inline with code ...وهددذا جٌعل مدن التوث دٌق قابدل للتحدد ثٌ, و ضٌدمن وجدوده دابمدا .. 2 ( جٌددب أن كٌددون التوث دٌدق المكتددوب ..بلغددة سددهلة ..بع دٌددة عن المزاح قددر الامكدان ..لتجعدل المسداعدة بسد طٌة وسدهلة وسدددددددددددددددددددددددددددددددددر عٌة قددددددددددددددددددددددددددددددددددر الامكدددددددددددددددددددددددددددددددددان 3 ( جٌدددب أن كٌدددون هدددذا التوث دٌددق مكتدددوب باحتراف دٌددة قددددر الامكان ..ومع ذلك الحفاظ على سدهولة قرابدة الفرومدات... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  81. 81. Coding Style -3-API Documentation  ىمست ردصملا ةحوتقم ةادأ كانه PHPDocumentor هذه الأداة تت حٌ لك انشاء توث قٌ من خلال تحل لٌ السورس كود وال بلوك الموجودة داخل كود ال PHP .. هذا التوث قٌ الناتج ..س كٌون API ...  شكل ال API س كٌون كالتال :ً أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  82. 82. Coding Style -3-API Documentation  لا ضعب نع حرشأس نلآا tag .. أولا: انتبه أنه هناك قواعد لكابتها ..كما ترى .. عل نٌا أولا وضع @ ثم .. اسم التاغ ... ثم الق مٌة ... مثلا : تاغ ال author .. كٌتب به معلومات عن الناشر .. )المطور( ..الخ شاهد مثال عمل ف الشر حٌة التال ةٌ... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  83. 83. Coding Style -3-API Documentation  عند البدء بالتوث قٌ ..أول بلوك )ال header ( كٌتب به هذه المعلومات : اذا لاحظت ...فإنه تم وضع نبذة مختصرة عن الصفحة )أول سطر – Short Description - ( وقد تكلمت ف هٌ .. أن هذا أول مثال على موضوع ال API ... ثم وصف مطول ... وهنا مٌكنك وضع معلومات وتفاص لٌ أكثر عن موضوع الصفحة .. ثم اسم ال Package ..هذا الاسم مهم ..لان س وٌرث الى جم عٌ بلوك ..ف مٌا بعد .. ثم معلومات المطور ..وهو أن سٌ ... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  84. 84. Coding Style -3-API Documentation  الآن لنخصص الأمثلة أكثر قل لٌا ... ولنقم بتوث قٌ فانكشن داخل ال API .... )بامكانك الاطلاع على المز دٌ من موقع http://phpdoc.org/ أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  85. 85. نها ةٌ الجزء الأول من الدورة ... أسال بٌ التطو رٌ وتطب قٌ البرمج اٌت ) Coding Style) أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  86. 86. الحمد لله الذي بحمده تتم النعم ...الحمد لله رب العالم نٌ الحمدددد لله عددددد مدددا كدددان ...وعددددد مدددا كٌدددون ..وعددددد الحركددددددددددددددددددددددددددددددددددددددددددات والسددددددددددددددددددددددددددددددددددددددددددكون.. اللهددم علمنددا مددا نٌفعنددا ...وانفعنددا بمددا علمتنددا انددك أنددت العلددددددددددددددددددددددددددددددددددددددددددددددد مٌ الحكددددددددددددددددددددددددددددددددددددددددددددددد مٌ ... أشهد أن لا اله الا الله ..... وأشدهد أن محمدد رسدول الله أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  87. 87. أسال بٌ تطو رٌ وتطب قٌ البرمج اٌت - 2 - Error Handling أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  88. 88. مقدمة عن Error Handling  أول كلمددة فدد هددذا الموضددوع ..هدد ... سٌددتح لٌ وجددود برنامج بلا أخطاء ... و سٌتح لٌ أن تجد برندامج أو كدود مثال 100 % وخال من الثغرات ...عل كٌ تدذكر ذلدك ..ولكن ..كلما ازددت مهارة ف كتابة الكود الخاص بك ..قلددت ثغراتدددك ..وزاد احترافدددك .. وسددتتعلم بكدددل دٌددوم ..شددددددد ءً جد دٌددددددد ..لتغطددددددد بددددددده تلدددددددك الثغدددددددرات .. فدد عددالم البرمجددة فددإن الأخطدداء تددأت ..مددن أمددر نٌ .. ................^________^....تدددابع فددد الشدددر حٌة التال ةٌ.... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  89. 89. مقدمة عن Error Handling الأمر الأول: وهو الخطأ الناتج عن خلل خارج ..مثل عدم نجاح عمل ةٌ الاتصال مع قواعد الب اٌنات ..مع أنه مطلوب لاتمام العمل ...وتسمى هذه External errors الأمر الثان :ً وهو الخطأ المنطق ..وتسمى بالغالب ب bugs .. هذه الأخطاء تقوم بتعط لٌ س رٌ عمل البرنامج المنطق ..أو خلل ف نتابجه ... وهذا سٌمى Code logic errors إن أغلب الأخطاء ف عالم البرمجة من هذان الصنفان .. ولا هٌمن الآن Syntax Error ..لأنه تٌم معالجته أثناء البرمجة ...وإلا فلن عٌمل البرنامج أصلا... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  90. 90. مقدمة عن Error Handling  إن هذان الصنفان.. عٌبران قسمان ف عالم البرمجة والتحري عن الأخطاء والثغرات) Bugs ...) إن الخطأ الواقع من جراء External Error ... غالبا ما حٌدث تدم رٌ ف س رٌ عمل البرنامج ..خصوصا اذا كان اعتماده عل هٌ شرطا أساس اٌ ... فإن لم كٌن المبرمج ..آخذا لاحت اٌطات برمج ةٌ ..لهذا النوع من الأخطاء .. عٌن برنامج ضع فٌ أو مرضٌ ... ومثال ذلك قاعدة الب اٌنات ...فلا جٌب على المبرمج أن فٌترض ..أن عمل ةٌ الربط مع قواعد الب اٌنات ..دابما صح حٌة ! أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  91. 91. مقدمة عن Error Handling أما الخطدأ المتعلدق ب Code logic errors فهدذا هدو المصدد بٌة بددذاتها ^_* ... والسددبب فدد ذلددك ..هددو عدددم معرفددة أ دٌدن وقددع الخطددأ بالتحد دٌدد ..)أي صددعوبة تحد دٌدد موقددع الخطددأ( ... وهددذا عكددس الخطددأ الندداتج عددن أمددر خددارج ...هددذا الخطددأ Code logic errors هددو المسبب لوجود Bugs ..الت مدن خلالهدا ...قدد تسدتط عٌ اختددراق أي نظددام أو تدددم رٌه ..أو السدد طٌرة عل دٌده ...فدد حددال اسددتطعت الوصددول ال دٌده ... لددذلك انتبدده ..مددن هددذا النوع من الأخطاء.. أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  92. 92. مستو اٌت الأخطاء Error Handling ف لغة ال PHP ... تنقسم الأخطاء الى ثلاثة مستو اٌت وه : 1 ) E_NOTICE : وه الأخطاء الصغ رٌة والت لا توقف عمل البرنامج .. وهدف هذا المستوى هو مساعدتك على التعرف على أماكن وجود الثغرات أو الأخطاء الممكنة ف الكود الخاص بك .. NonFatalError,Its Minor أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  93. 93. مستو اٌت الأخطاء Error Handling 2 ) E_WARNING : وه الأخطاء الت لا تؤثر على مخطط س رٌ عمل الكود .. ولكن تخبرك بأن هنا خطأ مؤثر قد وقع .. NonFatalRun time Error ... من الأمثلة على ذلك .. fopen(welcome.txt) ف حال عدم وجود الملف المسمى ب Welcome.txt ... فإنه س خٌرج لنا Warning ... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  94. 94. مستو اٌت الأخطاء Error Handling 3 ) E_ERROR : هذا النوع من الأخطاء وٌقف التنف ذٌ للكود ...مثل عمل ةٌ استدعاء كلاس ..غ رٌ موجود ... تقوم ال PHP على تقد مٌ فانكشن سٌمى trigger_error() ..هذا الفانكشن سٌمح لل وٌزر بانشاء أخطابه الخاصة داخل السكربت ..وهذا الفانكشن بامكانه تقد مٌ ثلاثة أنواع من الأخطاء للمستخدم نٌ .. مٌكنهم من خلالها التحكم أو انشاء أخطابهم الخاصة وه ... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  95. 95. () trigger_error Error Handling  أولا: E_USER_ERROR : وهو Fatal Error ..وهذا عٌن أنه سوف قٌوم با قٌاف تنف ذٌ الكود ..اذا وقع هذا الخطأ ...  ثان اٌ: E_USER_WARNING : وهذا NonFatal ..أي لن وٌقف تنف ذٌ البرنامج ..ولكن س حٌدث خلل به ..والخطأ س كٌون من نوع WARNING ..  ثالثا: E_USER_NOTICE : وهذا النوع هو الحالة الافتراض ةٌ للفانكشن trigger_error() ..وهذا الخطأ لا وٌقف تنف ذٌ البرنامج ..ولا ؤٌثر على مخطط التنف ذٌ ..-الا ف حالات مع نٌة- الآن لننطلق الى الأمثلة ^____^ أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  96. 96. () trigger_error Error Handling  مثال 1 - -E_USER_NOTICE : أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  97. 97. () trigger_error Error Handling  مثال 2 - -E_USER_WARNING : أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  98. 98. () trigger_error Error Handling  مثال 3 - -E_USER_ERROR : أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  99. 99. Error Handling trigger_error() & set_error_handler مثددددددال 4 : فدددددد هددددددذا المثدددددددال سنسددددددتخدم ان شدددددداء الله دالددددددة اسدددددددمها set_error_handler هدددذه الدالدددة عٌرفهدددا المسدددتخدم حتدددى سٌدددتط عٌ التحكم بالأخطاء عن طر قٌ فانكشن قام ببنابه ..أي Custom Fanction ... هدذه الدالدة تسدتقبل 2 paramters ..الأول هدو الفانكشن الذي قمت ببنابه ... والثان هو نوع الخطأ الدذي سأسدتخدمه .. مثدددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددال : أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  100. 100. Error Handling trigger_error() & set_error_handler أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  101. 101. Error Handling trigger_error() & set_error_handler فددد المثدددال السدددابق ..قمندددا بصدددناعة فانكشدددن خددداص بندددا ..وقدددوم بطباعة ما نحتداج مدن أخطداء ... وأ ضٌدا اسدتطعنا أن نوقدف تنف دٌذ الكدددود مدددن وجدددود خطدددأ Warning عدددن طر دٌددق اسدددتخدام الدالدددة die() ... والآن شددددددددددددددددددددددددددددددددددددددددرح للمتغر دٌدددددددددددددددددددددددددددددددددددددددات: أول متغ رٌ هو : $errno : وهذا المتغ رٌ حٌتوي على رقم الخطأ الددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددذي حدددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددث .. ثان متغ رٌ : errstr $ : وهدذا المتغ دٌر حٌتدوي علدى ندص الخطدأ ..وهدددددددددددددددذا أٌخدددددددددددددددذه مدددددددددددددددن الدالدددددددددددددددة trigger_error . ثالدددث متغ دٌددر: errfile $ : وهدددذا المتغ دٌددر سددد قٌوم بطباعدددة امتدددداد الملددددف مددددع الاسددددم الخدددداص بددددالملف الددددذي وقددددع بدددده الخطددددأ.. ورابددع متغ دٌدر: $errLine : وهددذا المتغ دٌدر سدد حٌتوي رقددم السددطر الدددددددددددددددددددددددددددددددددددددذي احتدددددددددددددددددددددددددددددددددددددوى الخطدددددددددددددددددددددددددددددددددددددأ .... *( ملاحظة: أسماء المتغ دٌرات هدذه مٌكدن تعدد هٌا كمدا تر دٌد, وأن ترت بٌ الأماكن كٌون حسب التسلسل الذي تم ذكره أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  102. 102. Error Handling trigger_error() & set_error_handler أمددا الدالددة set_error_handler فقددد احتددوت أولا على اسم الفانكشن الذي قمندا ببنائده ... ومدن ثدم ندوع الخطددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددأ .. ثدددددددددددم أكلمندددددددددددا كمدددددددددددا بالأمثلدددددددددددة السدددددددددددابقة .... لاحظ ك فٌ أن التسلسل مهم ..والتطب قٌ مهم جدا .. ^_____________________________^ أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  103. 103. More Info About Error Handling لمز دٌ من التفاص لٌ حول موضوع الأخطاء وأنواعها : http://php.net/manual/en/errorfunc.constants.php ومن ثم ....لنتابع ^_^ أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  104. 104. أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  105. 105. Error Handling E_ALL E_ALL هددد تصدددن فٌ حٌتدددوي علدددى جم دٌددع أندددواع الاخطاء ..-باستثناء E_STRICT - تقوم باضافتها أندت بشدددكل دٌدددوي – هدددذا الكدددلام قبدددل PHP 5.4 ... - قلنا أن E_ALL .. تحتوي جم عٌ الأخطاء ..وهذا عٌند أنده مٌكندك الدتحكم بالأخطدداء التد ترغدب برؤ تٌهددا أم لا ..وهدددددددددددددذا الحركدددددددددددددة لا تشدددددددددددددمل E_ERROR .. هندداك ملددف اسددمه PHP.ini ..هددذا الملددف حٌتددوي علددى اعدادات تشدغ لٌ لأي سدكربت PHP .. و دٌتم قرابتده أولا من جهة الس رٌفر ..قبل التنف ذٌ.... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  106. 106. Error Handling E_ALL & error_reporting داخل هذا الملف ...اعداد اسمه error_reporting ..هذا الاعداد وٌضع به ثابت أو مجموعة من الثوابت الت تقوم بمهمة تحد دٌ نوع الأخطاء الت ستعرض مثل .. E_ALL ... E_ALL : تعن جم عٌ الأخطاء | : اشارة ال OR Bitwise ) | (..أو الاعتماد ةٌ على المنطق مثل E_ERROR|E_WARNING ... ^ : هذه الاشارة تعن باستثناء .. مثل E_ALL^E_NOTICE ... 0 : هذا عٌن اخفاء جم عٌ الأخطاء – باستثناء ال Fatal Error . أمثلة .... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  107. 107. Error Handling E_ALL & error_reporting http://php.net/manual/en/function.error-reporting.php أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  108. 108. التعامل مع الأخطاء Error Handling  تكلمنا ف الشرابح السابقة عن الأخطاء ..والآن سنتلكم عن طر قٌة معالجة أو التعامل مع هذه الأخطاء ..ف ال PHP ..هناك أربعة خ اٌرات للتعامل مع الأخطاء .. 1 ( عرض الخطأ .. 2 ( تسج لٌ الخطأ 3 ( تجاهل الخطأ 4 ( العمل بنابا على الخطأ ..ومعالجته ... طبعا كل منها أهم ةٌ أو وظ فٌة ..وقد تستخدمها ف مواقف مختلفة أثناء تطو رٌك للمواقع ..فعرض الأخطاء مهم ف تصح حٌ الكود ومتابعة تطو رٌ العمل ..وتسج لٌه .. فٌ دٌن ف حما ةٌ الموقع من أي هجوم محتمل ..أو اصلاحه ف أسرع وقت ممكن ,و مٌكننا أ ضٌا تجاهل بعض الأخطاء , أو لا مٌكنك ذلك ..جم عٌ هذه الأمور ش ءً مهم لتطو رٌ منتجاتك الرقم ةٌ ^_____^ أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  109. 109. التعامل مع الأخطاء Error Handling 1 ( عرض الأخطاء عرض الأخطاء من الأمور المهمة جدا لأي مطور وذلك ل سٌتط عٌ تتبع الخطأ ومعالجته, ولذلك لنستط عٌ تفع لٌ هذا الخ اٌر جٌب عل نٌا الذهاب الى display_errors داخل ال PHP.ini ..ووضع الحالة on ( ... display_errors= on ( ...وطبعا تٌم عرض الأخطاء على المتصفح...)طبعا عند تفع لٌ هذه الخاص ةٌ تٌم عرضها على المتصفح ..والا ستذهب الى Log file ... ) طبعا ..هذه النقطة مف دٌة جدا للمطور ..ولكنها س بٌة أ ضٌا ف بعض الأح اٌن .. أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  110. 110. التعامل مع الأخطاء Error Handling 1 ( عرض الأخطاء ان عرض الأخطاء على الموقع – لل End user - أمر س ءً جدا ..والسبب ف ذلك : 1 ( جٌعل من شكل الموقع س ءً .. 2 ( و جٌعل المستخدم شٌعر بالخوف من استخدام هذا الموقع – قٌلل من الموثوق ةٌ- 3 ( ان عرض الأخطاء .. كٌشف عن تفاص لٌ خاصة بالكود ... وهذا الأمر قد سٌتغل من قبل الأشخاص المخرب نٌ ...مثل الهكرز *( ملاحظة: هكرز : كان مصلح دٌل على أناس ماهر نٌ تقن اٌ سٌعون الى اكتشاف الثغرات ..حتى تعالج ..لكن الآن المفهوم تغ رٌ وأصبح قٌصد به التخر بٌ ف غالب الامر... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  111. 111. التعامل مع الأخطاء Error Handling 1 ( عرض الأخطاء كث رٌ من المواقع الت تٌم اختراقها ..تكون عن طر قٌ ثغرات قٌع بها الكث رٌون من المطور نٌ .. مثل ترك اعداد display_errors= on .. أو وضع عمل ةٌ الربط مع قواعد الب اٌنات ف نفس الصفحة ..! أو السماح بعمل اتصال مع قواعد الب اٌنات بح ثٌ كٌون NoLocal ... هذه الأمور كث رٌا ما تعط ثغرات سٌتط عٌ الآخرون من خلالها اختراق موقعك !...انتبه لذلك .. أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  112. 112. التعامل مع الأخطاء Error Handling 2 ( تسج لٌ الأخطاء  أي خطأ مٌكن أن حٌدث أو حدث ... مٌكنن تخز نٌه وعرضه من ملف خارج أو من syslog .. وهذا الأمر ج دٌ ...و سٌهل عل تتبع الأخطاء الت قد تحدث وبدون عرضها للمستخدم نٌ .. لأنه س تٌم حفظها داخل file مع نٌ أو عرضها عن طر قٌ syslog .. وطر قٌة تفع لٌ هذا الأمر ..أولا الذهاب الى PHP.ini وعمل ال log_errors= On ... وهكذا تم تفع لٌه ..وقلنا هناك طر قٌت نٌ إما داخل ملف أو داخل ال syslog ... و مٌكن تحد دٌ ذلك عن طر قٌ error_log= /path/to/filename أو error_log= syslog أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  113. 113. التعامل مع الأخطاء Error Handling 2 ( تسج لٌ الأخطاء طبعا ..ك فٌ مٌكننا اضافة Custom Log error .. مٌكننا ذلك أ ضٌا باستخدام ال trigger_error() كل ما عل نٌا الق اٌم به هو كتابة اسم الخطأ ل تٌم حفظه داخل ال Log مثل : trigger_error(“This First Log Error”) الآن ..اذا كان عندك الموقع على س رٌفر واحد ..أو عٌمل على س رٌفر واحد ..فاستخدم ال File ..فهذا أفضل وأسرع من ال Syslog .. أما ف حالة وجود أكثر من س رٌفر...فقم باستخدام ال Syslog . أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  114. 114. التعامل مع الأخطاء Error Handling 3 ( تجاهل الأخطاء فدد بعددض الحددالات ...قددد تقددع بعددض الأخطدداء ..ولكنندد أرغددب بتجاهلهددا ..لأنهددا لددن تددأثر علددى العمددل للكددود أو أندده خطددأ مٌكددن حصوله فد بعدض الأح دٌان ..وبعدد دقدابق مٌكدن أن عٌمدل ...مثدل خطددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددأ $fp= fopen($file, $mode); ... اذا مدا كدان الملدف موجدود ..رح عٌط نٌددا . Warning .. ولكددن ممكددن كٌددون موجددود وصددار خطأ من الس رٌفر ..وهذا أمر ممكدن أن حٌددث ..فممكدن أتجداهلوا عدددددددددن طر دٌددددددددق وضدددددددددع اشدددددددددارة ال @ ...بهدددددددددذا الشدددددددددكل $fp= @fopen($file, $mode); ...هندا سد تٌجاهل الخطدأ ... داخددددددددددددددل ال PHP.ini ... مٌكنددددددددددددددك وضددددددددددددددع الخاصدددددددددددددد ةٌ track_errors= On وهدذا سدد حٌفظ أخددر خطدأ داخددل متغ دٌدر اسددددمه $php_errormsg حتددددى ولددددو قمددددت باسددددتخدام @... ^_^ أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  115. 115. التعامل مع الأخطاء Error Handling 4 ( التعامل مع الأخطاء لقد تدم شدرح طر قٌدة التعامدل مدع الأخطداء ^_^..أ دٌن ..انظدر الدى هدذا المثدال : )انظدر الدى موضوع Error Handling trigger_error() & set_error_handler أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  116. 116. أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  117. 117. Handling External Errors جم عٌ ما تكلمنا عنه سابقا ...ف الحق قٌة ل سٌ Handling Errors ..بشكل فعل .. !!! والسبب ف ذلك هو أننا فقط قمنا بقرابة الأخطاء ..أو تعلمنا أنواع الأخطاء ..ولكن هل قمنا باستغلال هذه المعرفة فعل اٌ ف تغ رٌٌ مخطط س رٌ الكود مثلا ..حتى نتحاشى هذه الأخطاء ؟ ..الجواب لا ... لذلك سننتقل الآن الى المرحلة الثان ةٌ وه Handling External Errors ... وبما أننا نعلم الأخطاء تصن فٌاتها ..ومقدار الضرر أو التأث رٌ على الكود... عل نٌا الآن ...أن نتعلم ك فٌ مٌكننا تفادي وقوع مثل هذه الأخطاء ... لنبدأ ^____^ أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  118. 118. Handling External Errors لتوض حٌ الفكرة من هذا الموضوع ..س تٌم طرح مثال ..وس تٌم الس رٌ بنابا عل هٌ حتى نصل لمرحلة ..نكون قد أخذنا جم عٌ الاحتمالات الممكنة ..ه اٌ بنا :؛:,:؛:,:؛ أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  119. 119. Handling External Errors 1 ) أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  120. 120. Handling External Errors 1 ) أ ) قباسلا لاثملا قٌبطت جباتن .. ةٌلامتحا عم الأخطاء الناتجة ...من تنف ذٌ الكود ..سأقوم باستدعاء ال function عن طر قٌ هذه الجملة أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  121. 121. Handling External Errors 1 ) ب ) أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  122. 122. Handling External Errors لقد رأ تٌ من تطب قٌ المثال السابق ..ك فٌ أنه اذا لم تقم بتوقع بعض الأخطاء ماذا مٌكن أن حٌدث ..وك فٌ ه النتابج ..وحتى صعوبة ا جٌاد الخطأ ....لذلك لنقوم بتطو رٌ هذا الكود قل لٌا ... ^^ للنطلق الى 2 *__________^ .... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  123. 123. Handling External Errors 2 ) ًناثلا ءزجلا .. طرش ةلمج ةفاضا دعب دوكلا لكش ... لنرى معا ..نت جٌة تطب قٌ هذا المثال *_* -- < أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  124. 124. Handling External Errors 2 ) أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  125. 125. Handling External Errors 3 ) ثلاثلا ءزجلا : دوكلا بٌترت .. ردق ءاطخلأا ىدافتت ثٌحب الامكان ..بأقل مجهود ممكن ...لاحظ النت جٌة ---ف الشر حٌة التال ةٌ ..بعد قرابة الكلام ال الصورة ^^ أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  126. 126. Handling External Errors 3 ) أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  127. 127. Handling External Errors من الأمور الجم لٌة ف التعامل مع الأخطاء ..وهو بالغالب ما تٌم التعامل به ب نٌ المبرمج نٌ المحترف نٌ ..وهو ارجاع الخطأ على شكل رقم ..ول سٌ على شكل نص ...مثل هذا الشكل فٌضل استخدامه ..وخصوصا عندما كٌون هناك تداخل كث رٌ أو امكان ةٌ حدوث أخطاء كث رٌة –طبعا الرقم - 1 مش ثابت هذا رقم متغ رٌ حسب الخطأ انت بتعرفوا – وهذا الأسلوب مٌكننا التحكم به كمثال ولاحظ ك فٌ س صٌبح شكل الكود –المثال توض حٌ -ً أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  128. 128. Handling External Errors س تٌم تقط عٌ الكود الى جزب نٌ ...حتى نستط عٌ اظهاره بشكل واضح ف الشرابح .. أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  129. 129. Handling External Errors بدلا ..من ارجاع الخطأ على شكل نص ..قمنا بوضع - .. 1 ...وهذه الحركة البس طٌة ..ستسهل عل نٌا عمل ةٌ التحكم بالأخطاء ..لاحظ طر قٌة الاستدعاء هنا ..وك فٌ ةٌ التعامل معه ...-شرح المثال ف الشر حٌة التال ةٌ- أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  130. 130. Handling External Errors ف هذا المثال ...قمنا أولا بالتحقق ..هل المتغ رٌ $result .. حٌتوي مصفوفة ..والسبب ف ذلك ..أن الب اٌنات الت سترجع ف المثال هذا ان طبق بشكل صح حٌ هو مصفوفة ... اذا نعم اطبع رسالة الترح بٌ مع محتو اٌت هذه المصفوفة ...واذا كان الناتج 0 عٌن هذا ناتج من ماذا ؟؟؟ عٌن انو انتهى الدوران وما لقى اش ...ول ه بتمثل return false; ...ط بٌ والحالة الثالثة ؟ وال ه - 1 ..هاي الحالة تم وضعها داخل جملة ال else ...لأن كل هذا المثال لا وٌجد به احتمال ةٌ الى لوقوع 3 أخطاء ... اذن ستقول لماذا لم أستخدم النص ..؟؟ ..انظر المثال التال .... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  131. 131. Handling External Errors أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  132. 132. Handling External Errors لقد قمت بنسخ المثال بشكله الصح حٌ ..داخل مجلد اسمه PHP .. داخل مجلد سٌمى 1 ... ^____^ .... بعدما تعرفنا وتكلمنا عن موضوع مهم جدا...وتكلمنا ك فٌ مٌكننا تدارك الأخطاء ..وطر قٌة ترت بٌها بح ثٌ ظٌهر الكود بأسهل طر قٌة ممكنة ..وبأقل وقت وأكثر جودة ... لكن كما لحظت ..بتحس انو ف عجقة كث رٌ بتص رٌ بالكود ...وحتى وانت بتفكر ..ك فٌ ممكن تتحكم بتسلسل الأخطاء !! ..ط بٌ ممكن نقلل من هذا الاش ...؟ الجواب ..طرحته ال PHP 5 ... عن طر قٌ صد قٌنا المعروف try, catch, finally ...^_^ والت تسمى Exceptions أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  133. 133. بسم الله الرحمن الرح مٌ ) اقرأ باسم ربك الذي خلق، خلق الإنسان من علق، اقرأ وربك الأكرم الذي علم بالقلم، علم الإنسان ما لم عٌلم( صدق الله العظ مٌ قٌول صلى الله عل هٌ وسلم: )من سلك طر قٌاً لٌتمس ف هٌ علماً ، سهّل الله له به طر قٌاً إلى الجنّة( )مسلم(. أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  134. 134. Exceptions ال Exceptions عبارة عن آل ةٌ رابعة للتحكم بالأخطاء وادارتها ..ووس لٌة رابعة لحل المشكلات الت قد تنتج عن طر قٌ أي خطأ غ رٌ متوقع ... هناك 3 كلمات مفتاح ةٌ رب سٌ ةٌ لتستخدم ال Exceptions وه 1 ) Try : أقوم ف هذا البلوك بوضع الكود الذي حٌتمل أن قٌع به الخطأ )ال بتوقع انو صٌ رٌ ف خطأ( 2 ) Catch : وف هذا البلوك تٌم وضع الحل لمعالجة الخطأ ..أو ما أر دٌ أن حٌدث ان حصل خطأ ما ... 3 ) Finally : ف هذا البلوك أقوم بوضع الكود الذي أر دٌه أن نٌفذ بجم عٌ الأحوال ..حصل خطأ أم لا ) PHP 5.5 ) أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  135. 135. Exceptions http://php.net/manual/en/language.exceptions.php أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  136. 136. Data Validation هناك قاعدة رب سٌ ةٌ عندنا بالبرمجة ..وه لا تثق أبدا بالمستخدم نٌ ... و عٌن هذا أنك ح نٌ تقوم ببرمجة موقع مع نٌ مثلا ..وستستقبل منه ب اٌناتت ..ا اٌك أن تثق به ..وا اٌك أن تثق أن الب اٌنات الت س دٌخلها ..ه بالضرورة صح حٌة أو ل سٌت خب ثٌة ... لذلك .. وٌجد هناك ش ءً سٌمى Data Validation أي التحقق من صحة الب اٌنات المدخلة ..أو تجر دٌها وفحصها لحما ةٌ الموقع من أي ب اٌنات ضارة ... قٌسم ال Validation الى قسم نٌ ... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  137. 137. Data Validation 1 وه عمل اٌت التحقق : Client Side Validation ) الت تتم على صع دٌ المستخدم نٌ – على أجهزتهم – ول سٌ على الس رٌفر ... و كٌون هذا عن طر قٌ ال JS ومكاتبها غالبا ... 2 ) Server Side Validation : وهنا تٌم التحقق من الب اٌنات على صع دٌ الس رٌفر ..وهذا مهم جدا... أي أنها عمل ةٌ التحقق من الب اٌنات قبل الق اٌم بالعمل اٌت الأساس ةٌ أو المطلوبة لأي عمل .. أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  138. 138. Data Validation ان ال Client Side Validtion ... مف دٌ جددا لتلافد وقدوع الأخطاء الغ رٌ مقصودة من قبل المستخدم نٌ ..مثل بدلا مدن أن كٌتددب عمددره بالأرقددام أدخددل حددرف ..الددخ...فهددو سٌدداعد المسدددخدم علدددى التأكدددد أن المعلومدددات التددد قدددام بادخالهدددا صددح حٌة ...فدد ذات الوقددت ..-قبددل مددا تددروح المعلومددات علددددددددددددددددددددددددددددددى السدددددددددددددددددددددددددددددد رٌفر وترجددددددددددددددددددددددددددددددع- .. ولاكدددن هدددذا الأمدددر لوحدددده لا كٌفددد ... وهدددذه ان اعتمددددت كأسددلوب للحما دٌدة بدددون السدد رٌفر ..فتأكددد أن موقعددك أسددهل موقددع للمخددرب نٌ ^^....جددرب أكتددب كددود بعتمددد علددى هددذا النوع من التحقق ... وبعد ذلك قم بالضغط علدى Disable js الموجودة بأي متصفح ...وانظر ماذا س حٌدث لحما تٌك.. أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  139. 139. Data Validation بالنسبة ل ..أقوم بوضع نوع نٌ من الحما ةٌ ...الأول من جهة المستخدم والثان ةٌ من جهة الس رٌفر ...وبهذا أكون قد ضمنت تلاف الأخطاء الغ رٌ المقصودة من المستخدم نٌ أو مساعدتهم على الاخت اٌر الصح حٌ...وأ ضٌا قمت بحما ةٌ الس رٌفر من الأخطاء المقصودة قدر الامكان ... سأتكلم الآن عن بعض الآل اٌت البس طٌة لحما ةٌ المواقع من أكثر المخرب نٌ ..^_____^ أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  140. 140. Data Validation هناك الكث رٌ من الأمور البس طٌة والت قد لا نلق لها بالا ... وتكون من أكثر الأمور الت سٌتخدمها المخرب نٌٌ ..وسنتلكم عن أهم الأمور للحما ةٌ من هذه الأمور وخصوصا ال injection أو حقن المواقع ... لنبدأ معا ^____________________^ أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  141. 141. Data Validation $_SERVER["PHP_SELF"] كث رٌا من الأح اٌن ..قد نحتاج استخدام $_SERVER["PHP_SELF"] هذه عبارة عن Super Global variable ... وه تع دٌ لنا اسم الصفحة ال متواجد ف هٌا حال اٌ .. وكث رٌا ما نراها ف ال action ..ولكن ما علاقة هذه بالمخرب نٌ ؟ ... نحن نستخدم هذا المتغ رٌ كما قلنا ف ال action عٌن لارسال الب اٌنات الت تم تعببتها مثلا بفورم مع اٌ ..الى نفس الصفحة ال أنا متواجد ف هٌا ... وبهذه الطر قٌة مٌكنن عرض الأخطاء بنفس الصفحة ال أنا ف هٌا – هذا كمثال ...- لنشاهد مثال على هذه العمل ةٌ ... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  142. 142. Data Validation $_SERVER["PHP_SELF"] لو قمت بسؤالك ...ما رأ كٌ بهذا الفورم البس طٌ ؟ .. أعد النظر ؟ ...هل هناك أي خطر مع نٌ قد صٌ بٌنا من هذا الكود ؟ .... الجواب هو نعم .... هذا الكود عرضة للتخر بٌ بسهولة ...ولا تتعجب من ذلك ...والسبب هو استخدام $_SERVER["PHP_SELF"] ... هذه ستسمح للمخرب نٌ ..بالتخر بٌ ...ولكن ك فٌ ... ؟؟ هذا المتغ رٌ مٌكن ان سٌتخدمه الهاكر ..أو المخرب نٌ بمعنى أدق ...عن طر قٌ اضفافة / ... ومن ثم كتابة كود XSS ... لنتابع ... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  143. 143. Data Validation $_SERVER["PHP_SELF"] XSS ل رادصتخا ًده Cross-site scripting .. وهدو أحدد أنددواع الضددعف التدد تتواجددد وللأسددف عددادة فدد تطب قٌددات الو دٌب ...وهد تمكدن المخدرب نٌ علدى حقدن Client Side Script ... ومدددن خدددلال ذلدددك دٌددتم عدددرض مدددا حقدددن الدددى مسدددددددددددددددددددددددددددددددددددددددددددددددددتخدم نٌ آخدددددددددددددددددددددددددددددددددددددددددددددددددر نٌ ... الآن مددددددددددددددا علاقددددددددددددددة هددددددددددددددذا الموضددددددددددددددوع بددددددددددددددال $_SERVER["PHP_SELF"] ... ان الأمدددددددددددر بسددددددددددد طٌ ..لنتسلسل الآن قل لٌا ...ف الفورم السابق –الذي تم عرضده بالشددددر حٌة السددددابقة- لددددو افترضددددنا أن اسددددم الصددددفحة هددددو test.php فدددددددددددإن فددددددددددد ال Action سددددددددددد كٌون هدددددددددددو Action=“test.php” ... وبعدددددد هدددددذه العمل دٌددددة ..لنقدددددوم باضافة XSS ف الرابط...مثل ..... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  144. 144. Data Validation $_SERVER["PHP_SELF"] لو قمت باضافة هذه ال XSS الى ال URL الخاص بك %22%3E%3Cscript%3Ealert('AneesHacked You')%3C/script%3E لتصبح بالشكل التال : ماذا س حٌدث ؟؟؟!! ...... ان الذي س حٌدث هو اخراج رسالة مكتوب ف هٌا لقد اخترقت ...لن هذا الذي كتب ..س تٌرجم الى <script>alert(“…”)</script> وبهذا بمجرد ضغطك على انتر على هذا الرابط ..سترى ذلك ...لاحظ شاشة المخرجات .. أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  145. 145. Data Validation $_SERVER["PHP_SELF"] ماذا بعد ذلك ؟ ... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  146. 146. Data Validation $_SERVER["PHP_SELF"] لا تكمددن خطددورة هددذا النددوع مددن اخددراج هددذه الرسددالة ..ولكن هذا كان لتوضد حٌ المثدال ... ولكدن مداذا مٌكنند أن أصنع .. مٌكن تضدم نٌ أي سدكربت داخلهدا مثدل اندك تعمددددل redirect ... للمسددددتخدم نٌ علددددى ملددددف آخددددر موجود خارج الس رٌفر ..وهذا الملدف ممكدن أن حٌتدوي أكواد خب ثٌة أو انو وٌخذ معلومات المستخدم .. و حٌظها عندددددددددددددددددددددددددددددددددددددددددددددددددددو ...الددددددددددددددددددددددددددددددددددددددددددددددددددخ ... اذن فهذا الموضوع ..له أهم ةٌ ف عالمنا كو بٌ ... إذن ما الحل بعد كل هذا الكلام ؟ ... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  147. 147. Data Validation $_SERVER["PHP_SELF"] & using htmlspecialchars Htmlspecialchars زومرلا لٌوحت ىلع موقت ةلاد هذه الخاصة بال html أو الجافا سكربت ... الى Html entits , وهذا عٌن عمل ةٌ منع للمخرب نٌ من استخدام الحقن ..لأنه حتى ولو قام بالحقن ..فستقوم هذه الدالة بتحو لٌها الى رموز....لاحظ شكل الفورم ك فٌ س صٌبح النتابج --- <<<< أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  148. 148. Data Validation $_SERVER["PHP_SELF"] & using htmlspecialchars من الطبع ..أنت تتسابل لماذا لم تظهر ..بعد استخدام هذه الدالة ..الجواب قلنا انه بالتحو لٌ ..بح ثٌ س صٌبح ال XSS الذي قام بوضعه على هذا الشكل : &quot;&gt;&lt;script&gt;alert(„Aneeshacked you')&lt;/script&gt; أتمنى من الله تعالى ..أن تكون الفكرة قد وصلت ... ^ _____^ أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  149. 149. Data Validation htmlspecialchars بعد ان تعرفت على هذه الدالة ..فقم باستخدامها مع هذه الحالة ...دابما ...وهذا أمر مهم جدا ...وأ ضٌا قم باستخدام هذه الدالة مع أي عمل ةٌ Input بتص رٌ من طرف المستخدم ... اجعلها حابط الصد الأول لك ..قبل ما ما دخل على قاعدة الب اٌنات او تعمل شرط ..قبل ما تعمل أي عمل ةٌ على الس رٌفر استخدمها لتحم معلومات وتحم موقعك وتحم المستخدم نٌ الذ نٌ عندك ... والآن لننطلق الى حما ةٌ أخرى ... أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  150. 150. Data Validation Using Trim & stripslashes Trim وأ تادغارفلا وأ روطدسلا فذدحل مدختدست نأ ندكمٌ ةلادلا هذه tab الزابددددة ..أو الددد مدددش محتاج نٌهدددا ..وتدددم ادخالهدددا مدددن قبدددل المسدددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددتخدم .. وال stripslashes تسدددتخدم لحدددذف ال الموجدددودة بدددأي عمل دٌددة ادخدددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددال ... بهددددددات نٌ العمل تٌدددددد نٌ بالاضددددددافة الددددددى الدالددددددة السددددددابقة .. Htmlspecialchars مٌكننددددا حما دٌدددة الموقددددع الخدددداص بنددددا مددددن عمل اٌت التخر بٌ ....المتعمدة من قبل المخرب نٌ **( طبعددا هددذا لا عٌندد حما دٌدة مطلقددة ...تددذكر أن التقن دٌدات تتطددور ...والعلددم تٌطددور ..والأشددخاص تٌطددورون وأسددال بٌهم تتطددور ... لكن هناك أمور أساس ةٌ جٌب اتباعها حتى ترتق أنت بالدفاع ... والآن ... لنقوم بتط بٌق مثال باستخدام هذه الخصابص مجتمعة .. أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com
  151. 151. Data Validation Using Trim & stripslashes& htmlspeialcharsin function test for post data … أن سٌ حكمت أبو حم دٌ anees_hikmat@yahoo.com

×