SlideShare una empresa de Scribd logo
1 de 197
Descargar para leer sin conexión
بسم الله الرحمن الرح مٌ 
دورة PHP لما بعد المستوى المبتدئ 
تقد مٌ : أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com 
دورة مجان ةٌ للجم عٌ, لا جٌوز استخدامها للأغراض التجار ةٌ .... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
المقدمة 
الحمد لله الذي بحمده تتم النعم, الحمد لله رب العالم نٌ.. 
بفضل من الله تعالى وتوف قٌه أبدأ ال وٌم دورة جد دٌة. وه دورة PHP لما بعد المستوى المبتدئ,ف هذه الدورة 
إن شاء الله, سنقوم بالترك زٌ على المرحلة الثان ةٌ من 
مراحل التطور لمبرمج نٌ ال PHP , كث رٌ منا 
وللأسف لم نعلم ك فٌ ومتى وأ نٌ مٌكن البدء والتعلم 
لاكتساب مهارات جد دٌة غ رٌ الأمور الاساس ةٌ الت نتعلمها بكثرة, وف كث رٌ من الأح اٌن ... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
المقدمة 
كطلاب أو كمبرمج نٌ ف أول الطر قٌ نكتف بالأمور الاساس ةٌ , أو بالأمور الت تنتج 
المشار عٌ الت نرغب ...ولكن أغلب هذه المشار عٌ ف هٌا من نقاط الضعف الكث رٌ , والت لا مٌكن تجاهلها , مع صعوبة كب رٌة ف تحد ثٌ هذه المنتجات , أي أنه ف الغالب ل سٌت 
توافق ةٌ ولا مرنة ولا آمنة... 
وهنا بإذن الله تعالى , سنحاول معا أن نرتق قل لٌا لنكون قر بٌ نٌ من الانتقال الى المستوى 
المحترف للبرمجة ف لغة ال PHP ... 
هذا المستوى بٌدأ من بعد الانتهاء من مفاه مٌ ال OOP , وهذا لا عٌن ذلك أنك اذا لم تصل 
مستوى ال OOP أنك لن تستط عٌ قرابتها ...ولكن السبب ف ذلك هو أن الكث رٌ تٌوقف 
عند هذه المرحلة ..ولا سٌتط عٌ أن تٌابع التطور لمهاراته البرمج ةٌ ... 
وفقنا الله وإ اٌكم الى خ رٌ العمل .... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
القناعــة .. راس الغنى : 
رأ تٌ القناعة رأس الغنى ..... فصرت بأذ اٌلها متمسك 
فلا ذا رٌان على بابه ..... ولا ذا رٌان به منهمك 
فصرت غن اٌ بلا درهم ..... أمر على الناس شبه الملك 
للإمام الشافع رحمه الله.. 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
أسال بٌ تطو رٌ وتطب قٌ البرمج اٌت 
- 1 - 
Coding Style 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Coding Style 
عل كٌ أن تعلم عز زٌي المبرمج, أنك مهما امتكلت من 
تقن اٌت برمج ةٌ, ومهارة ف استخدام ال PHP Syntax 
أو PHP Function .. فان هذا لا عٌن أنه ج دٌ, وهذا 
لا عٌن أن المبرمج نٌ الآخر نٌ أو أنت بنفسك 
..ستستط عٌ التطو رٌ أو التعد لٌ على ما كتبت من كود.. 
جٌب عل كٌ عز زٌي المبرمج أن تقوم بعمل اندماج ب نٌ 
الكود الخاص بك , وطر قٌة كتابة هذا الكود ... ل صٌبح 
كود سهل, مرن ... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Coding Style معلومات عالطا رٌ 
 أولا: عل نٌا أن نعلم أنه لا وٌجد معا رٌٌ مثال ةٌ لطر قٌة 
تصم مٌ الكود بشكل جذاب ... نعم لا وٌجد معا رٌٌ 
مثال ةٌ, ولكن هناك أسال بٌ اتفق عل هٌا ل سٌ رٌ عل هٌا 
المبرمج نٌ, لتعط جانب من المثال ةٌ, مقترنة بإسلوب 
كل مبرمج, وك فٌما فٌضل المبرمج ذلك , فهو نٌدرج 
تحت احدى الأسال بٌ ... 
 ثان اٌ: جٌب أن تعلم , أنه جٌب عل كٌ كتابة الكود بأبسط 
أسلوب ممكن, وهذا لا عٌن أن كٌون بس طٌ بقدر لا 
نٌفذ احت اٌجته , أو أن لا قٌوم بوظابفه ..أو أن صٌبح 
غ رٌ قابل للتطو رٌ .... بس طٌ ولكن مرن 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
لنبدأ معا - 1 - Coding Style 
عند تصم مٌ أي كود , جٌب عل كٌ مراعاة النقاط التال ةٌ: 
 المسافة البادبة 
 طول السطر 
 الفراغات 
 مراعاة البن ةٌ الترك بٌة والطر قٌة القواعد ةٌ لل ال SQL 
هذه الأمور ه الأهم , وه من الأسال بٌ الت تعط جانب من المثال ةٌ ف كتابة الكود ... 
*( بعد معرفة هذه النقاط ..سننطلق الى مستوى آخر ف تصم مٌ الكود ... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
المسافة البادبة Coding Style 
المقصود بالمسافة البادبة, ه تلك المسافة الت تسبق 
أي سطر برمج ... وه مهمة جدا, رغم بساطتها, 
فه تعط سهولة رابعة ف تتبع الكود, واكتشاف 
الأخطاء حتى والكث رٌة الش وٌع –مثل نس اٌن وضع { 
ف نها ةٌ block مع نٌ - , والآن سنرى مثال نٌ , الأول 
س كٌون بدون علامات بادبة والآخر بها ... ولاحظ 
أ هٌما أسهل بالقرابة والفهم .... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
المسافة البادبة Coding Style 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
المسافة البادبة Coding Style 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
المسافة البادبة Coding Style 
 الآن بالنسبة للمسافة البادبة ..ورأ نٌا طر قٌة استخدامها ..وفابدتها الرابعة ..مع 
بساطتها ... 
عل كٌ ان تعلم انه هناك أنواع لها : 
الأول : Hard Tab : عندما تقوم بالضغط على زر tab س ظٌهر مسافة مع نٌة, 
تختلف من محرر نصوص الى آخر, وتكمن س بٌته ف هذه النقطة... 
الثان :ً Soft Tab : أ ضٌا نٌطلق عن الضغط على زر Tab ولكنك هنا تكون قد 
قمت باعداده على وضع عدد مع نٌ من الفراغات .. وهنا كٌون الطول عبارة 
عن فراغات ..لذلك لا تٌأثر من محرر نصوص الى آخر ...وف الغالب فٌضل 
استخدام هذا النوع. 
الثالث: Spaces : عند استخدامك لل Spaces العاد ةٌ فهذا عٌن ازاحة بمقدار 
فراغ واحد فقط ... وهو ثابت لا تٌغ رٌ ... )و مٌكن اعتبار Soft tab نٌدرج 
تحت هذا المسمى ..ولكن مع شرط الضغط على زر Tab .. 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
طول السطر Coding Style 
 عندما كٌون السطر البرمج طو لٌ جدا , فإنه صٌعب 
تتبعه وقرابته , وهذا قد سٌبب مشكلة ..ق تتبع الكود, 
قرابته, بالاضافة الى شعور بالملل خصوصا ف وجود 
العد دٌ من الأسطر الت تكون بهذا الشكل .. 
لذلك تذكر دابما أنه عل كٌ فصل السطر الطو لٌ الى 
عدة أسطر ... وهذا جٌعل من الكود الخاص بك 
...سهل وسلس للقرابة ... لننظر الفرق ب نٌ الكتابة 
بسطر واحد وعدة أسطر .. 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
طول السطر Coding Style 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
طول السطر Coding Style 
 طبعا ...وبشكل عام لا تدع السطر البرمج تٌجاوز ال 
80 حرف مع فراغ ... 
وذلك لأن معا رٌٌ ال وٌنكس مثلا تستقبل 80 حرف 
لغا اٌت الطباعة , وإن تجاوز هذا العدد ..تصبح 
الخطوط عن الطباعة غ رٌ قابلة للقرابة ... 
عل كٌ ان تراع ذلك بالنسبة للمبرمج نٌ من ح ثٌ 
القرابة , وبالنسبة لتعامل البرمج اٌت المخلتفة مع طول 
الأسطر ... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
إن ب تٌا خٌلو من كتاب هو ب تٌ بلا روح 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
الفراغات Coding Style 
 نعم , الفراغات ...لا تتعجب من ذلك ... 
تلعب الفراغات دورا كب رٌا جدا ف الترك بٌة المنطق ةٌ 
للكود , ودورها كب رٌ ف تبس طٌ وتسه لٌ الرؤ اٌ لأي 
كود قد قمت بكتابته ... 
ان استغلالك السل مٌ لهذه الفراغات ...س جٌع من الكود 
الخاص بك ...رابع المنظر وسهل القرابة .. 
والآن لننظر الى أمثلة توضح ذلك .... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
الفراغات Coding Style 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Coding Style *SQL* 
نحن نعلم أن ال SQL ...تستخدم بكثرة جدا حول العالم 
وف تطب قٌات ولغات برمجة كث رٌة ... ومن ضمنها ال 
PHP ... ونعلم أن لل SQL ..مجموعة قواعد خاصة 
للكتابة بها ..وأمور أخرى تسهل عل نٌا قرابة جمل 
الاستعلام الخاصة بها ..وكما نعلم فإن ال SQL تحتوي 
على جمل استعلام معقدة ..وهذا قد شٌكل خوف لدى 
الكث رٌ من المبرمج نٌ من كتابتها بشكل سهل للقرابة 
..ول سٌ عدم علمهم ..وهذا ش ءً خاطا ..جم عٌ ما قد 
ذكرناه سابقا .. مٌكننا استخدامه ف التعامل مع أوامر ال 
SQL داخل ال PHP ... لنرى ذلك بمثال عمل .... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Coding Style *SQL* 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Coding Style *SQL* 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
سٌتط عٌ الش طٌان أن كٌون ملاكاً والقزم 
عملاقاً والخفاش نسراً والظلمات نوراً 
. . لكن أمام الحمقى والسذج فقط . 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Coding Style -2- 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Coding Style -2- 
تحدددثنا فدد المسددتوى الأول عددن الأمددور الرب سٌدد ةٌ 
التددد تمثدددل الكدددود بشدددكل عدددام ..فددد أي مكدددان داخدددل 
المحرر ..والآن سننطلق الى جزب ةٌ أخرى ...وقد قمدت 
بفصلها لغا اٌت التطب قٌ ...أي بعدد تطب قٌدك وتنف دٌذك لمدا 
جاء ف Coding Style -1- ... باستطاعتك أن تكمدل 
..وهذا ش ءً مهم للتعلم ..عل دٌك بتطب دٌق مدا قدرأت حتدى 
لا تدددددددددددددددددددددددددذهب قرابتدددددددددددددددددددددددددك سددددددددددددددددددددددددددى ... 
والآن لنبدأ مع الجزء الثان .... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Coding Style -2- 
 الجمل الشر طٌة والدوران ... 
جم عٌنا عٌلم ما ه الجمل الشرط ةٌ, وما هو الدوران 
..ولكن ك فٌ تٌم تنس قٌ هذه الأجزاء ؟ ...وك فٌ مٌكنن جعلها أسهل بالقرابة والتعد لٌ ...الخ 
هذا ما سنج بٌ عنه بإذن الله تعالى .. 
 ف لغة ال PHP .. مٌكنك كتابة الجملة الشرط ةٌ 
بالشكل التال :ً 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Coding Style -2- 
إن قمت بتدق قٌ النظر ف الكود السابق ..فستلاحظ أن 
الجملة الشرط ةٌ جابت بدون استخدام ..وهذه الص غٌة 
..مع أنها متاحة بال PHP ...الى أنها غ رٌ محبذة 
..والصح حٌ أن تقوم باستخدام جملة الشرط أو الدوران 
مع {} – Braces -- ...وهذا جٌعل العمل ةٌ التنظ مٌ ةٌ 
أسهل , وأسرع للفهم والتعد لٌ... 
لاحظ طر قٌة الكتابة الصح حٌة .. 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Coding Style -2- 
لكن الآن ..وبعد انتهابنا من النقطة الأولى ...هل 
مٌكنن وضع {} ..أ نٌما أشاء ؟؟!! .. 
الجواب : هناك ثلاثة تصام مٌ لطر قٌة ترت بٌ ووضع ال 
Braces .. 
1 ( ال BSD : توضع ال Braces هنا على أسطر 
منفصلة تحت كلمة الشرط مباشرة ...مثال: 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Coding Style -2- 
2 ) لا GNU : تكون هنا ال Braces أ ضٌا أسفل 
الجملة الشر طٌة ..ولكن مع مسافة قل لٌة ..بح ثٌ تأت ال Braces ب نٌ كلمة الشرط و الشرط ..مثال: 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Coding Style -2- 
3 ) لا K&R : بهذا التصم مٌ .. كٌون ال Braces ف نفس السطر مع جملة 
الشرط ...مثل: 
والآن السؤال القوي ^_^ : أي التصام مٌ هو الأفضل ؟؟!! 
والجواب بكل بساطة ...رح ندخل بنقاش لن نٌته ..استخدم التصم مٌ ال بعجبك 
... لكن شخص اٌ ..أفضل ال K&R ... هو الأروع بالنسبة ل .. 
وأستخدم ال BSD عند استخدام ال Function وهذا جٌعل من الكود الخاص ب سهل القرابة ...لنشاهد مثالا .... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Coding Style -2- 
*( هذا التصم مٌ الذي أحب استخدامه .... وأنت لك الخ اٌر ف أسلوبك ... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Coding Style -2- 
 لا نع ملكتنس نلآاو coding style لجمل الدوران .. 
كث رٌ منا وللأسف قد لا جٌد فرقا ف استخدام أي جملة 
دوران ..لاتمام المهمة ..ومع أن هذا غ رٌ خاطا قواعد اٌ 
...لكنه خاطا منطق اٌ ..وإلا ..فلماذا تم انشاء هذه الجمل 
..فكنا اكتف نٌا بجملة دوران واحدة وانته نٌا ؟! 
لكل جملة دوران ..مكان فٌضل استخدام ص غٌة ولا فٌضل 
استخدام آخرى ..وهذا جٌعل الكود أسهل ف التعد لٌ 
واضافة الشروط مثلا ...وأسهل ف القرابة ومعرفة 
المحتوى من الدوران ..بشكل أسرع ..والآن لننظر ونقارن 
ب نٌ While –For -Foreach ^_^ .... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Coding Style -2- 
 لا While : بالنسبة لجملة الدوران هذه ...فلا تستخدمها اذا أمكن 
اسددتخدام ال For أو Foreach ..وهددذا شدد ءً مهددم ... وهنددا لا 
أنفدد أن جملددة الدددوران هددذه مهمددة ..ولكددن هندداك أولو دٌدة لترت دٌدب 
الكدود بح دٌدث ظٌهددر بشدكل أفضددل... هددذه الجملدة كٌثددر اسددتخدامها 
عند عدم المعرفة متى س نٌته الدوران ..بشدكل خداص ..فأحتاجده 
أن سٌتمر حتى حدوث أمر مع نٌ ..أو الوصدول الدى Null ...الدخ 
..مف دٌة جدا ف التعامل مع ناتج استرجاع جمدل الاسدتعلام لقواعدد 
الب اٌندددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددات ... 
طبعا لماذا قلنا أنه فٌضل استخدام for & foreach اذا أمكن ذلك 
...السددبب فدد درجددة التعق دٌدد ..لأنددك ان احتجددت الددى كتابددة شددرط 
داخل جملدة الددوران هدذه ..سد زٌ دٌ بشدكل ملحدوظ مسدتوى التعق دٌد 
وصعوبة التتبع ... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Coding Style -2- 
 ال For : جملددة الدددوران هددذه تسددتخدم فدد حالددة معرفددة 
البدا ةٌ والنها ةٌ لجملة الدوران ...جملة الدوران هذه أقل 
درجدددة مدددن التعق دٌددد فددد حدددال تحقدددق هدددذا الشدددرط ... 
 ال Foreach : جملددة الدددوران هددذه راااابعددة جدددا ^_^ 
..لكددن فدد التعامددل مددع المصددفوفات .. اذن هددذه الجملددة 
نسدددتخدمها فددد حدددال وجدددود مصدددفوفات ..ولا نسدددتخدم 
ح نٌها ال For أو while .. لأن أدابها أفضل ف ذلك .. 
والآن لنرى مجموعة من الأكواد كأمثلة ..... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Coding Style -2- 
 مددن الأمددور الج دٌددة أ ضٌددا ..اسددتخدام ال Break & continuoue ... وذلدددك ج دٌددد جددددا بالنسدددبة لدددلأداء .. 
فلمدداذا مددثلا أقددوم باكمددال الدددوران اذا وصددلت الددى ق مٌددة 
مع نٌددة –وهدد التدد أحتاجهددا – مثددل لمددا احكدد بدددي 3 
أعداد زوج ةٌ فٌصدل ب نٌهمدا 4 أرقدام ...مجدرد مدا لق دٌت 
ال 3 أعددددداد ..أقددددوم بانهدددداء الدددددوران ..وهددددذا منطق دٌدددا 
أفضل..واستغلال للمصادر المتاحة بشكل أكبر.. 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
تجنب الحلقات المتداخلة Coding Style -2- 
 لتجعل أداء الكود الخاص بك ..أفضل .. حاول قدر 
الامكان ..التقل لٌ من استخدام الحلقات المتاخلة –مثل 
استخدام InsteadLoop - .... وهنا لا أنف استخدامها ...فه تلعب دورا مهما ف كث رٌ من 
الأح اٌن ..لكن هناك مواقف لا داع لاستخدامها 
..والعد دٌ منا إما للعجلة أو عدم الانتباه .. لا رٌعى لها 
بالا ... لنرى مثالا ..عن أخطاء مٌكن أن نقع بها 
^_^... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
تجنب الحلقات المتداخلة Coding Style -2- 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
تجنب الحلقات المتداخلة Coding Style -2- 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
مددددددددددددددددددددددددددن مكددددددددددددددددددددددددددارم الأخددددددددددددددددددددددددددلاق .... قددددددددددددددددددددددددددال : 
لما عفدوت ولدم أحقدد علدى أحدد ..... أرحدت نفسد مدن هدم العدداوات 
إنددد أح دٌدد عددددوي عندددد رؤ تٌددده ..... لأدفدددع الشدددر عنددد بالتح دٌددات 
وأظهر البشر للإنسان أبغضه ..... كما إن قد حشى قلب مودات 
الإمام الشافع رحمه الله .. 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
توض حٌ الأسماء Coding Style -2- 
 مددن الأمددور المهمددة هدد اعطدداء تسددم ةٌ دق قٌددة أقددرب مددا 
كٌددون لوظ فٌددة متغ دٌدر مددا ..أو اسددم فانكشددن معدد نٌ ..أو 
كلاس معد نٌ ..الدخ ... وهدذا الأمدر مف دٌد جددا فد قرابدة 
الكود , وسهولة تعد لٌه ...وسهولة الوصول الى المتغ رٌ 
واسدددددددددددددددددددددددددددددددددددددددددددددددتخدامه ..الدددددددددددددددددددددددددددددددددددددددددددددددخ.. 
هددذا الأمددر مهددم جدددا ..و قٌددع بدده الكث دٌدر مددن المبددرمج نٌ 
المبتدددددددددددددددب نٌ ... عل دٌدددددددددددددك مراعدددددددددددددداة ذلددددددددددددددك ... 
لنرى مثالا ...^_^ 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
توض حٌ الأسماء Coding Style -2- 
لاحظ ف المثال الصح حٌ ... أنن عندما قرأت اسم الفنكشن ..علمت أنه س رٌجع مصفوفة .. 
وس سٌتقبل متغ رٌ مٌثل حجم مع نٌ ...وال retval ..تعن المتغ رٌ الذي س حٌوي النتابج من العمل ةٌ 
.... هل لاحظت سهولة التحل لٌ ..ب نٌ الأول والثان ^_^ 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
المتغ رٌات Coding Style -2- 
 كما نعلم جم عٌا أن هناك Scope .. لكل متغ رٌ ..خارج 
هذا ال Scope )نطاق( لن تستط عٌ الوصول ال هٌ .. عٌتبر 
متغ رٌ م تٌ %_@... هذا موضوع معروف ..لكن ما 
سأرغب ف ذكره ال وٌم هنا هو الآت .. مٌكننا تقس مٌ ح اٌة 
المتغ رٌ الذي نقوم بتعر فٌه الى 3 أقسام, وه : 
1 ) Truly-Global : وهو المتغ رٌٌ الذي عٌ شٌ لفترة 
طو لٌة وف مساحة كب رٌة جدا من الكود الذي قد قمت 
بكتابته ...أي مٌكنك استخدامه و نٌ ما تروح –ف الغالب- 
ولكن هذا الأمر ل سٌ بج دٌ ...وعل كٌ تجنبه وذلك بسبب... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
المتغ رٌات Coding Style -2- 
 السبب الأول: هذا المتغ رٌ ..بما أنه عٌمل بأغلب 
السكربت الذي قمت بكتابته ..فهذا عٌن أنه تٌعرض 
لكث رٌ من التعد لٌ والتغ رٌٌ لق مٌته ..وهذا جٌعل أمر تتبع 
ق مٌته ..أمرا صعبا . 
 الثان :ً إذا قمت بتعر فٌ متغ رٌ اسمه $X مثلا 
..واستخدمت NameSpaceLib ..وكانت تستخدم 
هذه المكتبة نفس اسم المتغ رٌ $X ...فإن هذا س حٌدث 
نوعا من التصادم ..وكلما زاد عدد التصادم ..زادت 
المشاكل ..والأخطاء الت ستظهر و صٌعب تتبعها .. 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
المتغ رٌات Coding Style -2- 
 الآن ملاحظددة عنددد كتابتددك اسددم المتغ دٌدر الددذي سدد كٌون 
Truly-Global ... جٌدددددب أن كٌدددددون جم دٌددددع أحرفددددده 
Capital Letters .. مثدددددل AUTH_PATH ...$ 
وهددذه مددن قواعددد ال Coding style لهددذا النددوع مددن 
المتغ دٌددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددرات .. 
الآن قددد سٌددأل أحددد الشددباب ^_^ ...المشدداكل التدد تددم 
ذكرهددددا ..هددددل لهددددا حددددل ؟ ..الجددددواب ببسدددداطة نعدددددم 
...لنسددتعرض مثددال بسدد طٌ معددا .. بٌدد نٌ ك دٌدف مٌكننددا أن 
نتخلص من مثل هذه المشاكل ..مدع الوصدول الدى نفدس 
الهدف ... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
المتغ رٌات Coding Style -2- 
 لنأخددددذ مددددثلا ..عمل دٌدددة شددددابعة الانتشددددار .. خٌطددددا بهددددا 
المبتدب نٌ كث رٌ .. – طبعا أنا كنت أوقع ف ^_^ - المهم 
... هددو عمل دٌدة الددربط مددع قاعدددة الب اٌنددات ..لنددرى هددذا 
المثال ... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
المتغ رٌات Coding Style -2- 
 الحل الأفضل من السابق س كٌون ف استخدام ... Classes 
..لاحظ هنا أنن حققت نفس الغرض بأمان أكثر 
طبعا بالنسبة ل ...أقوم بكتابة كود الربط مع قواعد الب اٌنات داخل Abstract Class .. رٌثه 
الكلاس الأخرى .. 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
المتغ رٌات Coding Style -2- 
2 ) Long-Lived Variables : وهذا النوع من المتغ رٌات 
دورة ح اٌته طو لٌة ..ولكن لا تصل الى درجة ال Global 
... و سٌمى هذا النوع من المتغ رٌات باسم وصف دٌل على 
وظ فٌته طوال البرنامج .. 
3 ) Temporary Variables : تستخدم هذه المتغ رٌات 
داخل ح زٌ أو نطاق برمج صغ رٌ ..بح ثٌ ؤٌدي وظ فٌة 
مع نٌة و نٌته بعدها ..وهذا الاسم جٌب أن كٌون..قص رٌ أو 
موجز ...مثل جمل الدوران ..غالبا ما نستخدم الرمز 
,$j,$k,$i كمثال لمتغ رٌات ف جمل الدوران ..الخ ... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
المتغ رٌات ذات الكلمات المتعددة Coding Style -2- 
 من الأمور المهمدة فد تصدم مٌ أي كدود ... هد طر قٌدة 
كتابدددة المتغ دٌددرات .. وهدددذا عرفنددداه .. لكدددن مددداذا عدددن 
المتغ رٌات الت تتكون من أكثر من مقطدع مثدل تعر دٌف 
متغ رٌ مٌثل هذه الجملة Number Elements ... هدذه 
الجملة الت رأ نٌاها ... ما ه أفضل طر قٌة لتمثل عل هٌ 
كإسدددددددددددددددددددددددددددم متغ دٌددددددددددددددددددددددددددر برمجددددددددددددددددددددددددددد ؟ً .. 
للجدواب عدن ذلدك .. هندداك مدرسدتان وضدعت كدل منهددا 
حل لهذه المشكلة .......لننظر الى هذه الحلول... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
المتغ رٌات ذات الكلمات المتعددة Coding Style -2- 
 المدرسة الأولى: تكلمت هذه المدرسة عن ال 
Methodology التال ةٌ : 
camel caps 
 السؤال الآن ما هو مبدأ عملها ... 
بكل بساطة هو ف أن تقوم بوضع فواصل الكلمات أحرف 
Capital وهذا مٌثل مقطع جد دٌ ف الاسم .. 
اذا ف جملتنا السابقة س كٌون شكل الجملة على التال : 
$numElements - تذكر لا وٌجد ش ءً مثال 100 -% 
.. 
أمثلة أخرى .. getData() - buildSomeWidget() 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
المتغ رٌات ذات الكلمات المتعددة Coding Style -2- 
 المدرسة الثان ةٌ: تتكلم هذه المدرسة عن ال 
Methodology التال ةٌ : 
a.k.a. studly caps (Using underscores ( to break words 
 هذه المدرسة تقول أنه من الأفضل أن تقوم بالفصل ب نٌ 
المتغ رٌات المتعددة المقاطع ب ) _ ( .. وهذا عٌن أن 
جملتنا ستصبح بالشكل التال :ً 
$num_elements – set_price---get_data 
 بالنسبة ل أفضل استخدام هذا الأسلوب ... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
المتغ رٌات ذات الكلمات المتعددة Coding Style -2- 
 قلت ف نها ةٌ الشر حٌة الثان ةٌ أنن أفضل استخدام 
الأسلوب الثان وهو ) _ ( .. والسبب ف ذلك: 
1 ( لقد تكمنا ف الدروس السابقة عن المتغ رٌات ال 
Global وقلنا أنه من قواعد كتابة هذه المتغ رٌات أن 
تكون أحرفها جم عٌا Capital .. اذن فماذا س حٌدث لو 
كان اسم المتغ رٌ هذا من أكثر من مقطع ؟ هذه أول 
مشكلة .. $NUMELEMENT انظر ك فٌ ستصبح 
جملتنا ... لن نستط عٌ تم زٌٌ المقطع الأول عن الثان بسهولة ..إنه أمر مزعج ^_^ 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
المتغ رٌات ذات الكلمات المتعددة Coding Style -2- 
2 ( السبب الثان :ً سهولة القرابة عند وجود فواصل 
مثل _ ) ( أسهل بالقرابة من الكلمات المتلاصقة 
3 ( السبب الثالث: المبرمج نٌ الذ نٌ تٌحدثون اللغات 
الأخرى – أي أن اللغة الانجل زٌ ةٌ ل سٌت لغتهم الأم – 
س تٌعرفوا على الكلمات بشكل أوضح من استخدام الكلمات 
المتلاصقة ... 
4 ( لأن أنا بفضل هذا الأسلوب : P ^_^ 
*( هناك من لا فضل هذا الأسلوب أ ضٌا ..ابحث وانظر 
وقارن ب نٌهم ..واختر ما نٌاسبك .. 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Coding Style -2-Function Name 
 سنتحدث الآن بإذن الله تعالى عن كتابة ال Function Name ... 
لنتذكر ما أخذنا سو اٌ .. سأستخدم BSD ..كنظام لتحد دٌ 
بدا ةٌ ونها ةٌ هذا الفانكشن ..وسأقوم بتعر فٌ اسم 
الفانكشن ..اذا كان من جزء واحد بأحرف صغ رٌة 
..وإذا كان أكثر من جزء باستخدام) _ (.. ل صٌبح 
الفانكشن عندنا بهذا الشكل ... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
مداخلة سر عٌة: هناك ش ءً اسمه جودة الاسم 
البرمج ) (Quality Names 
وهذا عٌن أن أي كود تقوم بكتابته, وف أي لغة 
برمجة كانت, جٌب أن تكون مفهومه من قبل الآخر نٌ, 
و جٌب أن تكون المتغ رٌات أو الفانكشن أو او الكلاس 
كلها ذات معان ودلابل لما ستقوم به من عمل . 
إن الالتزام بهذا المعنى عٌط صاحبه مهن ةٌ ف العمل, 
و جٌعل من التعل مٌات الصعبة ش ءً مفهوم قدر 
الامكان, وهذا ما مٌ زٌ المبرمج المبتدئ عن المتوسط 
عن المحترف ... مدى احترافهم للكود بالاضافه الى 
مدى الاحتراف ف تصم مٌه .. 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Coding Style -2-Class Name 
 كما للفانكشن ... من قواعد ...فهناك أ ضٌا للكلاس .. 
ان قواعد كتابة اسم الكلاس ..لا تختلف عن الجافا .. 
)طبعا ل سٌ الزام اٌ( .. ومن هذا عٌن انه لتسم ةٌ كلاس مع نٌ 
1 : جٌب ان كٌون الحرف الأول من اسم الكلاس Capital .. 
2 : مٌكنك استخدام القواعد الت تم ذكرها مثل استخدام 
studlycap, or camel cap 
تذكر: لا وٌجد ش ءً مثال 100 % ولا ش ءً ملزم 100 ... % 
لكن هناك أمور لو سرت بها ستجعلك أقرب من غ رٌك لأن تكون 
مثال اٌ ...ولا عٌن استخدام أسلوب بدلا من آخر أن ذلك خطأ 
..وأنك غ رٌ محترف ... لاكن انظر لحسنات وس بٌات كل اسلوب 
واختر ما تراه الأفضل... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Coding Style -2-Method Name 
 الآن سنتلكم عن طر قٌة كتابة الاسم للم ثٌود .. قد نٌظر البعض 
و قٌول الم ثٌود ..ه ذاتها الفانكشن... فأقول له أنك أصبت .. 
ولكن ل سٌ بشكل مطلق .. لأن هذه التسم ةٌ لم تخرج عبثا ..!!! 
..اذاً؟..... 
إذا كتب الفانكشن داخل كلاس ...ح نٌها سٌمى م ثٌود .. 
ومن هنا أ ضٌا وٌجد امر جم لٌ ف التصم مٌ ... وهو وجود 
طر قٌ للتصم مٌ بح ثٌ تم زٌ من خلال النظر الم ثٌود عن الفانكشن 
.. 
استخدم هنا الحرف الأول Capital بعد الكلمة الأولى ف كل 
مقطع.. ومن ثم استخدم النظام الذي تحب ... Camel,or Studly cap .. 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
مثال على الكلاس والم ثٌود Coding Style -2- 
لاحظ: أن أول حرف بكل كلمة بعد 
الاولى ف الم ثٌود ه Capital 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
تناسق التسم ةٌ Coding Style -2- 
 من الأمور المهمة ف تصم مٌ الكود .. مراعاة التناسق 
ب نٌ الأسماء... خصوصا التسم ةٌ للأمور الت ستؤدي 
وظ فٌة لنفس العنصر ان كانت بالنقصان أو الز اٌدة 
كمثال .. 
مثال: 
شاهد ك فٌ أن المتغ رٌات على نسق واحد .. 
فقمت بذكر الغرض من هذا المتغ رٌ , ثم لمن –أو شرح لمن هذه 
المهمة- 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
أسماء الأعمدة ف قواعد الب اٌنات وأسماء المتغ رٌات Coding Style -2- 
 إن من الأمور الجم لٌة أثناء كتابة الكود أثناء التعامل 
مع قواعد الب اٌنات .. هو كتابة أسماء المتغ رٌات بنفس 
أسماء الاعمدة ..وهذا سٌهل عل نٌا كث رٌا عمل ةٌ التعد لٌ 
أو التطو رٌ على الكود.. لذلك قم بكتابة أسماء 
المتغ رٌات الت تتعامل مع الأعمدة بنفس الص غٌة 
حرف اٌ...شاهد هذا المثال: أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
نها ةٌ ال Coding style -2- 
بفضل من الله تعالى ... انته نٌا الآن مدن ال Coding Style 2 .. 
ولقد تكلمنا عن كث رٌ من الأمور المهمدة فد كتابدة الكدود .. والتد تددؤثر عل دٌده بشددكل واضددح... وتظهددر مدددى احتددراف المبددرمج ... 
كل ما تم ذكره سابقا .كان تٌحدث عدن المحاولدة قددر الامكدان فد جعل الكود أبسدط ..أسدهل .. أكثدر قددرة علدى القرابدة ..خصوصدا 
لمطدددددددددددددددددددددددددددددددور نٌ البرمج دٌددددددددددددددددددددددددددددددات الجددددددددددددددددددددددددددددددددد .. 
والآن سددننتقل بددإذن الله تعددالى الددى الجددزء الثالددث والأخ دٌدر مددن ال 
Coding Style .. بح ثٌ سنتكلم به ..ك فٌ مٌكننا أن نمنع الخلدط 
ب نٌ الرموز المختلفة بالكود ..مثل فتح تداغ معد نٌ وإنهابده ..وضدع 
كود Html & PHP معا ...الخ 
لنذهب سو اٌ ^_______^ 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Coding Style -3- 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Coding Style -3-Short Tag 
 أول موضوع سنتكلم عنه ..هو تجنب استخدام ال 
Short tag وخصوصا ف موضوعنا عن صفحات 
ال PHP ... 
نحن نعلم أن ال PHP مٌكنك البدأ بها وإنهابها بعدة 
طرق ... مثل <?php?> .. هذا التاغ هو ال 
Standard tag ... لكن من الطرق الأخرى مثلا ه <? ?> ... هذه الطر قٌة .. مٌكن استخدامها أ ضٌا ف ال 
PHP .. ولكن هذا س ءً ..وإن سألتن لماذا ..سأقول 
لك .. انظر الشر حٌة التال ةٌ ^____^ 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Coding Style -3-Short Tag 
لاحظ: هنا قمت باستخدام هذا التاغ لتعر فٌ أن المستند XML Normal 
ما الجد دٌ ..؟؟؟ ف حال وجودها مع كود PHP .. سٌتخدم نفس ال الص غٌة للتاغ ...مثل 
ف هذه الحالة لن عٌمل ال xml بشكله الطب عٌ ... لأن ال PHP س قٌوم بعمل interrupt لل 
header ..وبعاملو كأنو Block ... 
دابما قم بكتابة الكود بشكله الصح حٌ .. هنا أن تختصر ..ل سٌ أمرا ج دٌا .. قم بكتابة الكود 
كالتال :ً 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Coding Style -3-PHP & html 
 لا تازٌمم مهأ ىدحا نإ PHP ...هدو امكان دٌة تضدم نٌ 
كددددددود ال PHP داخددددددل كددددددود ال html والعكددددددس ... 
ولاكددن هددذه قددد تسددبب لنددا مشددكلة فدد Coding Style 
..فقد تز دٌ من صعوبة قرابة الكود .. عوضا عن الخلط 
ب نٌ النوع نٌ ..قد سٌبب بعض الأخطداء الغ دٌر مقصدودة 
..اذن مدددددددددددددددددددددددددددددددددددددددددددددددددددا الحدددددددددددددددددددددددددددددددددددددددددددددددددددل؟ 
الحدددل باسدددتخدام تصدددم مٌ ج دٌددد لهدددذا الندددوع مدددن الكدددود 
..وك دٌدددف كٌددددون ذلددددك ..؟! .. لنددددرى أولا أمثلددددة علددددى 
النوع نٌ ...ف الشر حٌة التال ةٌ ^____________^ 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Coding Style -3-PHP & html 
اٌ سلام ... طبعا فرق ... الثان أحلى 100000 مرة ^_^ .. الكود لما كٌون 
صح حٌ ..وتنجزه .. أنت أول من فٌرح لذلك ^_^ . 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Coding Style -3-PHP & html 
أظدددن ان الفدددرق أصدددبح واضدددحا ..بعدددد المثدددال نٌ السدددابق نٌ 
..وباختصار .. حاول قددر الامكدان أن لا تجعدل ال echo or print ه مدن تقدوم بطباعدة ال html ..بدل اجعدل كدل 
مدددددددددددددددددددددن اللغتددددددددددددددددددددد نٌ تقدددددددددددددددددددددوم بمهامهدددددددددددددددددددددا ... 
قلنددا أن مددن اهددم مزا دٌدا ال PHP امكان دٌدة تضددم نٌها داخددل ال 
Html والعكددس .. اذن اسددتغلها بالشددكل الصددح حٌ ..ضددمن 
الاثنان ..ودون أن تجعلهما تٌداخلان قدر الامكان ... 
ملاحظددة: <?= ?> التدد قمددت باسددتخدامها بالمثددال الأول فدد الشر حٌة السابقة .. تعن <?phpecho “$username” ?> 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Coding Style -3-Parentheses -()- 
 ان من الأمور الت سٌبب الخلط بها ..مصدابب برمج دٌة 
..ال – )( - .. والسدددبب فددد ذلدددك ..أنهدددا تلعدددب دورا 
رب سٌدد اٌ فدد تحد دٌدد أولو دٌدات سدد رٌ العمددل .. وهددذا شدد ءً 
نعلمدددددددددددددددددددددددددددددددددددددددددددددددددده جم عٌددددددددددددددددددددددددددددددددددددددددددددددددددا ... 
لدددذلك فددد تصدددم مٌ الكدددود ..فقدددد روعددد ذلدددك أ ضٌدددا .. 
هناك حكمدة تقدول ) اسدتخدم ال )( بحكمدة وتدروي .. ( 
بحكمدددة ..مفهومدددة ...وتدددروي؟؟ .. تدددروي تعنددد أن لا 
تكثر باستخدامها بح ثٌ تصبح بشكل مدزعج ..وان كدان 
التسلسل صدح حٌ ...لدنلاحظ الأمثلدة فد الشدر حٌة التال دٌة 
^_______^ 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Coding Style -3-Parentheses -()- 
المثال الثالث ..ف الشر حٌة التال ةٌ ..... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Coding Style -3-Parentheses -()- 
لقد لاحظت بكل تأك دٌ ... الفرق ب نٌ الأمثلة الثلاثة ...وقد لاحظت الفرق ب نٌ تتبع كل منها.. 
!ن المثال الأول .. صٌعب تتبعه الا بخبرة برمج ةٌ ..وذلك بسبب عدم وجود الأقواس ..وهذا س رٌهق اي 
شخص س قٌرأ الكود بعد ذلك ..حتى ولو كنت أنت .. 
وف المثال الثالث: صٌعب تتبعه بسبب وضع ال )( بشكل لا طٌاق ...هذا الشكل كب رٌ جدا .. صٌعب تتبعه 
وقرائته ... 
ف المثال الثان : كان الاستخدام معتدل وبحكمه ... بح ثٌ ل سٌ بقل لٌ ول سٌ بكثر ... 
ممكن تقول ..كل هاي الأمور اش مش مهم ... لكل هذا لا قٌل أهم ةٌ عن البرمجة ..خصوصا عندما تتطور 
حتى تكتب كود من متوسط الى كب رٌ ...ستلاحظ الفرق ... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
)التوث قٌ( Coding Style -3-Documentation 
عٌد التوث قٌ من أهم الأمور ف تصم مٌ أي كود, وذلك لتسه لٌ فهم 
الكددود لددك أو لغ دٌدرك حتددى تسددتط عٌ أو سٌددتط عٌ أي مبددرمج آخددر 
التعد لٌ عل هٌ والتعامل معه, وهذا مهم جدا ف الشدركات , لأنده لا 
وٌجد موظف س بٌقى للأبد ف شركته الت عٌمدل بهدا ...لدذلك تهدتم 
بالتوث قٌ , حتى اذا جداء موظدف جد دٌد , اسدتطاع أن كٌمدل العمدل 
..وهكدذا لا تٌوقدف تطدو رٌ البرندامج ..ولا تٌوقدف عمدل الشددركة , 
ولو تخ لٌنا العكس , وهو عددم وجدود توث دٌق ..مداذا سد حٌدث؟ بكدل 
بسدداطة سدد قٌوم أي مبددرمج أو موظددف ..بقرابددة الكددود كامددل حتددى 
سٌتط عٌ أن فٌهمه, وهذا عمل شبه مستح لٌ خصوصا فد البدرامج 
العملاقة , والت قدد تحتدوي مبدات الألدوف مدن الأسدطر ...وحتدى 
الملا دٌددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددد نٌ... 
تذكر أنك بدون توث قٌ ...لست مبرمج ج دٌ لأن الكدود الخداص بدك 
سدددددددددددددددددددددددددددددددددددددددد كٌون قل دٌدددددددددددددددددددددددددددددددددددددددل الجددددددددددددددددددددددددددددددددددددددددودة 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
نٌقسدددددددددددم التوث دٌددددددددددق الدددددددددددى قسدددددددددددم نٌ رب سٌددددددددددد نٌٌ: 
الأول: Inline comments : هددذا النددوع مددن التوث دٌدق 
قٌوم على شرح مخطط س رٌ تنف ذٌ الكدود , والهددف منده 
هو تعز زٌ قدرة المبرمج نٌ على التعدد لٌ أو التحدد ثٌ أو 
تصدددددددددددددددددددددح حٌ التعل مٌدددددددددددددددددددددات البرمج دٌددددددددددددددددددددة .. 
الثدددان :ً API documentation : وهدددذا الندددوع مدددن 
التوث دٌدق للأشددخاص الددذ نٌ رٌ دٌددون اسددتخدام الكددلاس أو 
الفانكشدددددددددددن بددددددددددددون قرابدددددددددددة الكدددددددددددود بذاتددددددددددده... 
والآن : لنبدأ بشرح كل تصن فٌ منهم ....^_^ 
)التوث قٌ( Coding Style -3-Documentation 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
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
Coding Style -3-Inline comments 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Coding Style -3-API Documentation 
خٌتلف نوع أو الهدف من هذا التوث قٌ عن ال inline .., فالهدف 
من هذا التوث قٌ ..ل سٌ شرح التعل مٌات البرمج ةٌ بالتحد دٌ ...وانما 
شرح للمبرمج نٌ ..ك فٌ س تٌعامل مع هذا الكود .. ولذلك بالأصل 
سم API .. والت ه اختصار ل 
Application Programinginterface .. وهذا لا عٌن الواجهات أو التصام مٌ الت تظهر لل وٌزر .. عٌن ه ل سٌت 
GUI ... 
ال API .. عبارة عن اسلوب مٌكنك من استخدام فانكشن مع نٌة 
تم تعر فٌها من قبل –لهذا الغرض- ل سٌتط عٌ المبرمج نٌ الآخر نٌ 
من استخدامها – وهذا الكلام تستخدمه نظم التشغ لٌ ..حتى 
تستط عٌ التعامل مع البرامج المختلفة ..و سٌمح لك بكتابة الفانكشن 
من الصفر 
طبعا هذا بشكل موجز.. الآن نعود لموضوعنا وهو توث قٌ هذا 
الكلام ...... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
وٌجددد 3 أمددور رب سٌدد ةٌ جٌددب أن حٌتو هٌددا هددذا التوث دٌدق 
وهددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددد :ً 
1 ( جٌدب أن قٌددم هدذا التوث دٌق مقدمدة سدر عٌة للمسدتخدم 
..حتدددى عٌلدددم أن هدددذه المكتبدددة أو الفانكشدددن ..ستناسدددب 
احت اٌجاتددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددده أم لا ... 
2 ( جٌدددب أن قٌددددم توث دٌددق كامدددل عدددن جم دٌددع الكدددلاس 
والفانكشددن مددن نددوع Public ..و جٌددب أن حٌتددوي علددى 
شدرح لجم دٌع Input &output ) . Parameters( 
3 ( جٌب أن تحتوي على شرح أو أمثلة لك فٌ دٌة اسدتخدام 
هذه الفانكشن. 
Coding Style -3-API Documentation 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Coding Style -3-API Documentation 
بالإضافة الى ما سبق ..فإنه بامكانك التكلم أ ضٌا عن 
1 ) Protected م ثٌود المستخدمة ووضع توث قٌ 
مناسب لها .. 
2 ( وضع امثلة لطر قٌة الوراثة من هذه الكلاس وك فٌ ةٌ 
اضافة وظ فٌة جد دٌة )فانكشن( الى هذا الكلاس .. 
وغالبا ما تكون هذه الاضفات مف دٌة ..لك ولمن س تٌخدم 
هذا التوث قٌ –انتبه غالبا- 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Coding Style -3-API Documentation 
أخ رٌا ..بالإضافة الى المعلومدات التد سدبق ذكرهدا .. جٌدب 
أن قٌدم مجموعة من الاضافات عن مطور هذا البرندامج أو 
الكود .. ف بٌدأ أو التوث دٌق باسدم المطدور ..وعل دٌك مراعدة مدا 
لٌدددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددد :ً 
1 ( جٌدب أن كٌددون التوث دٌدق inline with code ...وهددذا 
جٌعل مدن التوث دٌق قابدل للتحدد ثٌ, و ضٌدمن وجدوده دابمدا .. 
2 ( جٌددب أن كٌددون التوث دٌدق المكتددوب ..بلغددة سددهلة ..بع دٌددة 
عن المزاح قددر الامكدان ..لتجعدل المسداعدة بسد طٌة وسدهلة 
وسدددددددددددددددددددددددددددددددددر عٌة قددددددددددددددددددددددددددددددددددر الامكدددددددددددددددددددددددددددددددددان 
3 ( جٌدددب أن كٌدددون هدددذا التوث دٌددق مكتدددوب باحتراف دٌددة قددددر 
الامكان ..ومع ذلك الحفاظ على سدهولة قرابدة الفرومدات... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Coding Style -3-API Documentation 
 ىمست ردصملا ةحوتقم ةادأ كانه PHPDocumentor 
هذه الأداة تت حٌ لك انشاء توث قٌ من خلال تحل لٌ السورس 
كود وال بلوك الموجودة داخل كود ال PHP .. هذا 
التوث قٌ الناتج ..س كٌون API ... 
 شكل ال API س كٌون كالتال :ً 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Coding Style -3-API Documentation 
 لا ضعب نع حرشأس نلآا tag .. 
أولا: انتبه أنه هناك قواعد لكابتها ..كما ترى .. 
عل نٌا أولا وضع @ ثم .. اسم التاغ ... ثم الق مٌة ... 
مثلا : تاغ ال author .. كٌتب به معلومات عن الناشر .. )المطور( ..الخ 
شاهد مثال عمل ف الشر حٌة التال ةٌ... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Coding Style -3-API Documentation 
 عند البدء بالتوث قٌ ..أول بلوك )ال header ( كٌتب 
به هذه المعلومات : 
اذا لاحظت ...فإنه تم وضع نبذة مختصرة عن الصفحة )أول سطر – Short Description - ( وقد 
تكلمت ف هٌ .. أن هذا أول مثال على موضوع ال API ... 
ثم وصف مطول ... وهنا مٌكنك وضع معلومات وتفاص لٌ أكثر عن موضوع الصفحة .. 
ثم اسم ال Package ..هذا الاسم مهم ..لان س وٌرث الى جم عٌ بلوك ..ف مٌا بعد .. 
ثم معلومات المطور ..وهو أن سٌ ... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Coding Style -3-API Documentation 
 الآن لنخصص الأمثلة أكثر قل لٌا ... ولنقم بتوث قٌ فانكشن داخل ال 
API .... )بامكانك الاطلاع على المز دٌ من موقع 
http://phpdoc.org/ 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
نها ةٌ الجزء الأول من الدورة ... 
أسال بٌ التطو رٌ وتطب قٌ البرمج اٌت ) Coding Style) 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
الحمد لله الذي بحمده تتم النعم ...الحمد لله رب العالم نٌ 
الحمدددد لله عددددد مدددا كدددان ...وعددددد مدددا كٌدددون ..وعددددد 
الحركددددددددددددددددددددددددددددددددددددددددددات والسددددددددددددددددددددددددددددددددددددددددددكون.. 
اللهددم علمنددا مددا نٌفعنددا ...وانفعنددا بمددا علمتنددا انددك أنددت 
العلددددددددددددددددددددددددددددددددددددددددددددددد مٌ الحكددددددددددددددددددددددددددددددددددددددددددددددد مٌ ... 
أشهد أن لا اله الا الله ..... وأشدهد أن محمدد رسدول الله 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
أسال بٌ تطو رٌ وتطب قٌ البرمج اٌت 
- 2 - 
Error Handling 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
مقدمة عن Error Handling 
 أول كلمددة فدد هددذا الموضددوع ..هدد ... سٌددتح لٌ وجددود 
برنامج بلا أخطاء ... و سٌتح لٌ أن تجد برندامج أو كدود 
مثال 100 % وخال من الثغرات ...عل كٌ تدذكر ذلدك 
..ولكن ..كلما ازددت مهارة ف كتابة الكود الخاص بك 
..قلددت ثغراتدددك ..وزاد احترافدددك .. وسددتتعلم بكدددل دٌددوم 
..شددددددد ءً جد دٌددددددد ..لتغطددددددد بددددددده تلدددددددك الثغدددددددرات .. 
فدد عددالم البرمجددة فددإن الأخطدداء تددأت ..مددن أمددر نٌ .. 
................^________^....تدددابع فددد الشدددر حٌة 
التال ةٌ.... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
مقدمة عن Error Handling 
الأمر الأول: وهو الخطأ الناتج عن خلل خارج ..مثل عدم 
نجاح عمل ةٌ الاتصال مع قواعد الب اٌنات ..مع أنه مطلوب 
لاتمام العمل ...وتسمى هذه External errors 
الأمر الثان :ً وهو الخطأ المنطق ..وتسمى بالغالب ب bugs 
.. هذه الأخطاء تقوم بتعط لٌ س رٌ عمل البرنامج المنطق ..أو خلل ف نتابجه ... وهذا سٌمى 
Code logic errors 
إن أغلب الأخطاء ف عالم البرمجة من هذان الصنفان .. 
ولا هٌمن الآن Syntax Error ..لأنه تٌم معالجته أثناء 
البرمجة ...وإلا فلن عٌمل البرنامج أصلا... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
مقدمة عن Error Handling 
 إن هذان الصنفان.. عٌبران قسمان ف عالم البرمجة 
والتحري عن الأخطاء والثغرات) Bugs ...) 
إن الخطأ الواقع من جراء External Error ... غالبا 
ما حٌدث تدم رٌ ف س رٌ عمل البرنامج ..خصوصا اذا 
كان اعتماده عل هٌ شرطا أساس اٌ ... فإن لم كٌن المبرمج 
..آخذا لاحت اٌطات برمج ةٌ ..لهذا النوع من الأخطاء 
.. عٌن برنامج ضع فٌ أو مرضٌ ... ومثال ذلك قاعدة 
الب اٌنات ...فلا جٌب على المبرمج أن فٌترض ..أن 
عمل ةٌ الربط مع قواعد الب اٌنات ..دابما صح حٌة ! 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
مقدمة عن Error Handling 
أما الخطدأ المتعلدق ب Code logic errors فهدذا هدو 
المصدد بٌة بددذاتها ^_* ... والسددبب فدد ذلددك ..هددو عدددم 
معرفددة أ دٌدن وقددع الخطددأ بالتحد دٌدد ..)أي صددعوبة تحد دٌدد 
موقددع الخطددأ( ... وهددذا عكددس الخطددأ الندداتج عددن أمددر 
خددارج ...هددذا الخطددأ Code logic errors هددو 
المسبب لوجود Bugs ..الت مدن خلالهدا ...قدد تسدتط عٌ 
اختددراق أي نظددام أو تدددم رٌه ..أو السدد طٌرة عل دٌده ...فدد حددال اسددتطعت الوصددول ال دٌده ... لددذلك انتبدده ..مددن هددذا 
النوع من الأخطاء.. 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
مستو اٌت الأخطاء Error Handling 
ف لغة ال PHP ... تنقسم الأخطاء الى ثلاثة مستو اٌت 
وه : 
1 ) E_NOTICE : وه الأخطاء الصغ رٌة والت لا 
توقف عمل البرنامج .. وهدف هذا المستوى هو 
مساعدتك على التعرف على أماكن وجود الثغرات أو 
الأخطاء الممكنة ف الكود الخاص بك .. 
NonFatalError,Its Minor 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
مستو اٌت الأخطاء Error Handling 
2 ) E_WARNING : وه الأخطاء الت لا تؤثر 
على مخطط س رٌ عمل الكود .. ولكن تخبرك بأن هنا 
خطأ مؤثر قد وقع .. 
NonFatalRun time Error ... 
من الأمثلة على ذلك .. 
fopen(welcome.txt) 
ف حال عدم وجود الملف المسمى ب 
Welcome.txt ... فإنه س خٌرج لنا Warning ... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
مستو اٌت الأخطاء Error Handling 
3 ) E_ERROR : هذا النوع من الأخطاء وٌقف التنف ذٌ 
للكود ...مثل عمل ةٌ استدعاء كلاس ..غ رٌ موجود ... 
تقوم ال PHP على تقد مٌ فانكشن سٌمى 
trigger_error() ..هذا الفانكشن سٌمح لل وٌزر 
بانشاء أخطابه الخاصة داخل السكربت ..وهذا الفانكشن 
بامكانه تقد مٌ ثلاثة أنواع من الأخطاء للمستخدم نٌ 
.. مٌكنهم من خلالها التحكم أو انشاء أخطابهم الخاصة 
وه ... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
() 
trigger_error Error Handling 
 أولا: E_USER_ERROR : وهو Fatal Error ..وهذا 
عٌن أنه سوف قٌوم با قٌاف تنف ذٌ الكود ..اذا وقع هذا 
الخطأ ... 
 ثان اٌ: E_USER_WARNING : وهذا NonFatal 
..أي لن وٌقف تنف ذٌ البرنامج ..ولكن س حٌدث خلل به 
..والخطأ س كٌون من نوع WARNING .. 
 ثالثا: E_USER_NOTICE : وهذا النوع هو الحالة 
الافتراض ةٌ للفانكشن trigger_error() ..وهذا الخطأ لا 
وٌقف تنف ذٌ البرنامج ..ولا ؤٌثر على مخطط التنف ذٌ ..-الا 
ف حالات مع نٌة- 
الآن لننطلق الى الأمثلة ^____^ 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
() 
trigger_error Error Handling 
 مثال 1 - -E_USER_NOTICE : 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
() 
trigger_error Error Handling 
 مثال 2 - -E_USER_WARNING : 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
() 
trigger_error Error Handling 
 مثال 3 - -E_USER_ERROR : 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Error Handling trigger_error() & set_error_handler 
مثددددددال 4 : فدددددد هددددددذا المثدددددددال سنسددددددتخدم ان شدددددداء الله دالددددددة اسدددددددمها 
set_error_handler هدددذه الدالدددة عٌرفهدددا المسدددتخدم حتدددى سٌدددتط عٌ 
التحكم بالأخطاء عن طر قٌ فانكشن قام ببنابه ..أي 
Custom Fanction ... هدذه الدالدة تسدتقبل 2 paramters ..الأول هدو 
الفانكشن الذي قمت ببنابه ... والثان هو نوع الخطأ الدذي سأسدتخدمه .. 
مثدددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددال : 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Error Handling trigger_error() & set_error_handler 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Error Handling trigger_error() & set_error_handler 
فددد المثدددال السدددابق ..قمندددا بصدددناعة فانكشدددن خددداص بندددا ..وقدددوم 
بطباعة ما نحتداج مدن أخطداء ... وأ ضٌدا اسدتطعنا أن نوقدف تنف دٌذ 
الكدددود مدددن وجدددود خطدددأ Warning عدددن طر دٌددق اسدددتخدام الدالدددة 
die() ... والآن شددددددددددددددددددددددددددددددددددددددددرح للمتغر دٌدددددددددددددددددددددددددددددددددددددددات: 
أول متغ رٌ هو : $errno : وهذا المتغ رٌ حٌتوي على رقم الخطأ 
الددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددذي حدددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددث .. 
ثان متغ رٌ : errstr $ : وهدذا المتغ دٌر حٌتدوي علدى ندص الخطدأ 
..وهدددددددددددددددذا أٌخدددددددددددددددذه مدددددددددددددددن الدالدددددددددددددددة trigger_error . 
ثالدددث متغ دٌددر: errfile $ : وهدددذا المتغ دٌددر سددد قٌوم بطباعدددة امتدددداد 
الملددددف مددددع الاسددددم الخدددداص بددددالملف الددددذي وقددددع بدددده الخطددددأ.. 
ورابددع متغ دٌدر: $errLine : وهددذا المتغ دٌدر سدد حٌتوي رقددم السددطر 
الدددددددددددددددددددددددددددددددددددددذي احتدددددددددددددددددددددددددددددددددددددوى الخطدددددددددددددددددددددددددددددددددددددأ .... 
*( ملاحظة: أسماء المتغ دٌرات هدذه مٌكدن تعدد هٌا كمدا تر دٌد, وأن 
ترت بٌ الأماكن كٌون حسب التسلسل الذي تم ذكره 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Error Handling trigger_error() & set_error_handler 
أمددا الدالددة set_error_handler فقددد احتددوت أولا 
على اسم الفانكشن الذي قمندا ببنائده ... ومدن ثدم ندوع 
الخطددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددأ .. 
ثدددددددددددم أكلمندددددددددددا كمدددددددددددا بالأمثلدددددددددددة السدددددددددددابقة .... 
لاحظ ك فٌ أن التسلسل مهم ..والتطب قٌ مهم جدا .. 
^_____________________________^ 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
More Info About Error Handling 
لمز دٌ من التفاص لٌ حول موضوع الأخطاء وأنواعها : 
http://php.net/manual/en/errorfunc.constants.php 
ومن ثم ....لنتابع ^_^ 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Error Handling E_ALL 
E_ALL هددد تصدددن فٌ حٌتدددوي علدددى جم دٌددع أندددواع 
الاخطاء ..-باستثناء E_STRICT - تقوم باضافتها أندت 
بشدددكل دٌدددوي – هدددذا الكدددلام قبدددل PHP 5.4 ... - 
قلنا أن E_ALL .. تحتوي جم عٌ الأخطاء ..وهذا عٌند أنده مٌكندك الدتحكم بالأخطدداء التد ترغدب برؤ تٌهددا أم لا 
..وهدددددددددددددذا الحركدددددددددددددة لا تشدددددددددددددمل E_ERROR .. 
هندداك ملددف اسددمه PHP.ini ..هددذا الملددف حٌتددوي علددى 
اعدادات تشدغ لٌ لأي سدكربت PHP .. و دٌتم قرابتده أولا 
من جهة الس رٌفر ..قبل التنف ذٌ.... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
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
Error Handling E_ALL & error_reporting 
http://php.net/manual/en/function.error-reporting.php 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
التعامل مع الأخطاء Error Handling 
 تكلمنا ف الشرابح السابقة عن الأخطاء ..والآن سنتلكم عن 
طر قٌة معالجة أو التعامل مع هذه الأخطاء ..ف ال PHP ..هناك 
أربعة خ اٌرات للتعامل مع الأخطاء .. 
1 ( عرض الخطأ .. 
2 ( تسج لٌ الخطأ 
3 ( تجاهل الخطأ 
4 ( العمل بنابا على الخطأ ..ومعالجته ... 
طبعا كل منها أهم ةٌ أو وظ فٌة ..وقد تستخدمها ف مواقف مختلفة 
أثناء تطو رٌك للمواقع ..فعرض الأخطاء مهم ف تصح حٌ الكود 
ومتابعة تطو رٌ العمل ..وتسج لٌه .. فٌ دٌن ف حما ةٌ الموقع من 
أي هجوم محتمل ..أو اصلاحه ف أسرع وقت ممكن ,و مٌكننا 
أ ضٌا تجاهل بعض الأخطاء , أو لا مٌكنك ذلك ..جم عٌ هذه 
الأمور ش ءً مهم لتطو رٌ منتجاتك الرقم ةٌ ^_____^ 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
التعامل مع الأخطاء Error Handling 1 ( عرض الأخطاء 
عرض الأخطاء من الأمور المهمة جدا لأي مطور 
وذلك ل سٌتط عٌ تتبع الخطأ ومعالجته, ولذلك لنستط عٌ 
تفع لٌ هذا الخ اٌر جٌب عل نٌا الذهاب الى 
display_errors داخل ال PHP.ini ..ووضع الحالة 
on ( ... display_errors= on ( ...وطبعا تٌم 
عرض الأخطاء على المتصفح...)طبعا عند تفع لٌ هذه 
الخاص ةٌ تٌم عرضها على المتصفح ..والا ستذهب الى 
Log file ... ) 
طبعا ..هذه النقطة مف دٌة جدا للمطور ..ولكنها س بٌة 
أ ضٌا ف بعض الأح اٌن .. 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
التعامل مع الأخطاء Error Handling 1 ( عرض الأخطاء 
ان عرض الأخطاء على الموقع – لل End user - أمر 
س ءً جدا ..والسبب ف ذلك : 
1 ( جٌعل من شكل الموقع س ءً .. 
2 ( و جٌعل المستخدم شٌعر بالخوف من استخدام هذا 
الموقع – قٌلل من الموثوق ةٌ- 
3 ( ان عرض الأخطاء .. كٌشف عن تفاص لٌ خاصة بالكود 
... وهذا الأمر قد سٌتغل من قبل الأشخاص المخرب نٌ 
...مثل الهكرز 
*( ملاحظة: هكرز : كان مصلح دٌل على أناس ماهر نٌ 
تقن اٌ سٌعون الى اكتشاف الثغرات ..حتى تعالج ..لكن الآن 
المفهوم تغ رٌ وأصبح قٌصد به التخر بٌ ف غالب الامر... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
التعامل مع الأخطاء Error Handling 1 ( عرض الأخطاء 
كث رٌ من المواقع الت تٌم اختراقها ..تكون عن طر قٌ 
ثغرات قٌع بها الكث رٌون من المطور نٌ .. 
مثل ترك اعداد display_errors= on .. 
أو وضع عمل ةٌ الربط مع قواعد الب اٌنات ف نفس 
الصفحة ..! 
أو السماح بعمل اتصال مع قواعد الب اٌنات بح ثٌ كٌون 
NoLocal ... 
هذه الأمور كث رٌا ما تعط ثغرات سٌتط عٌ الآخرون 
من خلالها اختراق موقعك !...انتبه لذلك .. 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
التعامل مع الأخطاء Error Handling 2 ( تسج لٌ الأخطاء 
 أي خطأ مٌكن أن حٌدث أو حدث ... مٌكنن تخز نٌه 
وعرضه من ملف خارج أو من syslog .. وهذا الأمر 
ج دٌ ...و سٌهل عل تتبع الأخطاء الت قد تحدث وبدون 
عرضها للمستخدم نٌ .. لأنه س تٌم حفظها داخل file مع نٌ 
أو عرضها عن طر قٌ syslog .. 
وطر قٌة تفع لٌ هذا الأمر ..أولا الذهاب الى PHP.ini 
وعمل ال log_errors= On ... وهكذا تم تفع لٌه 
..وقلنا هناك طر قٌت نٌ إما داخل ملف أو داخل ال syslog 
... و مٌكن تحد دٌ ذلك عن طر قٌ 
error_log= /path/to/filename أو 
error_log= syslog 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
التعامل مع الأخطاء Error Handling 2 ( تسج لٌ الأخطاء 
طبعا ..ك فٌ مٌكننا اضافة Custom Log error 
.. مٌكننا ذلك أ ضٌا باستخدام ال trigger_error() كل 
ما عل نٌا الق اٌم به هو كتابة اسم الخطأ ل تٌم حفظه داخل 
ال Log مثل : 
trigger_error(“This First Log Error”) 
الآن ..اذا كان عندك الموقع على س رٌفر واحد ..أو 
عٌمل على س رٌفر واحد ..فاستخدم ال File ..فهذا 
أفضل وأسرع من ال Syslog .. 
أما ف حالة وجود أكثر من س رٌفر...فقم باستخدام ال 
Syslog . 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
التعامل مع الأخطاء Error Handling 3 ( تجاهل الأخطاء 
فدد بعددض الحددالات ...قددد تقددع بعددض الأخطدداء ..ولكنندد أرغددب 
بتجاهلهددا ..لأنهددا لددن تددأثر علددى العمددل للكددود أو أندده خطددأ مٌكددن 
حصوله فد بعدض الأح دٌان ..وبعدد دقدابق مٌكدن أن عٌمدل ...مثدل 
خطددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددأ 
$fp= fopen($file, $mode); ... اذا مدا كدان الملدف موجدود 
..رح عٌط نٌددا . Warning .. ولكددن ممكددن كٌددون موجددود وصددار 
خطأ من الس رٌفر ..وهذا أمر ممكدن أن حٌددث ..فممكدن أتجداهلوا 
عدددددددددن طر دٌددددددددق وضدددددددددع اشدددددددددارة ال @ ...بهدددددددددذا الشدددددددددكل 
$fp= @fopen($file, $mode); ...هندا سد تٌجاهل الخطدأ ... 
داخددددددددددددددل ال PHP.ini ... مٌكنددددددددددددددك وضددددددددددددددع الخاصدددددددددددددد ةٌ 
track_errors= On وهدذا سدد حٌفظ أخددر خطدأ داخددل متغ دٌدر 
اسددددمه $php_errormsg حتددددى ولددددو قمددددت باسددددتخدام @... 
^_^ 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
التعامل مع الأخطاء Error Handling 4 ( التعامل مع الأخطاء 
لقد تدم شدرح طر قٌدة التعامدل مدع الأخطداء ^_^..أ دٌن ..انظدر الدى هدذا المثدال : )انظدر الدى 
موضوع Error Handling trigger_error() & set_error_handler 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Handling External Errors 
جم عٌ ما تكلمنا عنه سابقا ...ف الحق قٌة ل سٌ Handling Errors ..بشكل فعل .. !!! والسبب ف ذلك هو أننا فقط 
قمنا بقرابة الأخطاء ..أو تعلمنا أنواع الأخطاء ..ولكن هل 
قمنا باستغلال هذه المعرفة فعل اٌ ف تغ رٌٌ مخطط س رٌ 
الكود مثلا ..حتى نتحاشى هذه الأخطاء ؟ ..الجواب لا ... 
لذلك سننتقل الآن الى المرحلة الثان ةٌ وه Handling External Errors ... وبما أننا نعلم 
الأخطاء تصن فٌاتها ..ومقدار الضرر أو التأث رٌ على 
الكود... عل نٌا الآن ...أن نتعلم ك فٌ مٌكننا تفادي وقوع 
مثل هذه الأخطاء ... لنبدأ ^____^ 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Handling External Errors 
لتوض حٌ الفكرة من هذا الموضوع ..س تٌم طرح مثال 
..وس تٌم الس رٌ بنابا عل هٌ حتى نصل لمرحلة ..نكون قد 
أخذنا جم عٌ الاحتمالات الممكنة ..ه اٌ بنا :؛:,:؛:,:؛ 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Handling External Errors 
1 ) 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Handling External Errors 
1 ) أ ) قباسلا لاثملا قٌبطت جباتن .. ةٌلامتحا عم 
الأخطاء الناتجة ...من تنف ذٌ الكود ..سأقوم باستدعاء ال 
function عن طر قٌ هذه الجملة 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Handling External Errors 
1 ) ب ) 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Handling External Errors 
لقد رأ تٌ من تطب قٌ المثال السابق ..ك فٌ أنه اذا لم تقم 
بتوقع بعض الأخطاء ماذا مٌكن أن حٌدث ..وك فٌ ه النتابج ..وحتى صعوبة ا جٌاد الخطأ ....لذلك لنقوم 
بتطو رٌ هذا الكود قل لٌا ... ^^ 
للنطلق الى 2 *__________^ .... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Handling External Errors 
2 ) ًناثلا ءزجلا .. طرش ةلمج ةفاضا دعب دوكلا لكش ... 
لنرى معا ..نت جٌة تطب قٌ هذا المثال *_* -- < 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Handling External Errors 
2 ) 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Handling External Errors 
3 ) ثلاثلا ءزجلا : دوكلا بٌترت .. ردق ءاطخلأا ىدافتت ثٌحب 
الامكان ..بأقل مجهود ممكن ...لاحظ النت جٌة ---ف الشر حٌة التال ةٌ ..بعد قرابة الكلام ال الصورة ^^ 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Handling External Errors 
3 ) 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Handling External Errors 
من الأمور الجم لٌة ف التعامل مع الأخطاء ..وهو بالغالب 
ما تٌم التعامل به ب نٌ المبرمج نٌ المحترف نٌ ..وهو ارجاع 
الخطأ على شكل رقم ..ول سٌ على شكل نص ...مثل 
هذا الشكل فٌضل استخدامه ..وخصوصا عندما كٌون هناك 
تداخل كث رٌ أو امكان ةٌ حدوث أخطاء كث رٌة –طبعا الرقم - 
1 مش ثابت هذا رقم متغ رٌ حسب الخطأ انت بتعرفوا – 
وهذا الأسلوب مٌكننا التحكم به كمثال ولاحظ ك فٌ 
س صٌبح شكل الكود –المثال توض حٌ -ً 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Handling External Errors 
س تٌم تقط عٌ الكود الى جزب نٌ ...حتى نستط عٌ اظهاره 
بشكل واضح ف الشرابح .. 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Handling External Errors 
بدلا ..من ارجاع الخطأ على شكل نص ..قمنا بوضع 
- .. 1 ...وهذه الحركة البس طٌة ..ستسهل عل نٌا عمل ةٌ 
التحكم بالأخطاء ..لاحظ طر قٌة الاستدعاء هنا ..وك فٌ ةٌ 
التعامل معه ...-شرح المثال ف الشر حٌة التال ةٌ- 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Handling External Errors 
ف هذا المثال ...قمنا أولا بالتحقق ..هل المتغ رٌ $result .. 
حٌتوي مصفوفة ..والسبب ف ذلك ..أن الب اٌنات الت سترجع ف المثال هذا ان طبق بشكل صح حٌ هو مصفوفة 
... اذا نعم اطبع رسالة الترح بٌ مع محتو اٌت هذه 
المصفوفة ...واذا كان الناتج 0 عٌن هذا ناتج من ماذا ؟؟؟ 
عٌن انو انتهى الدوران وما لقى اش ...ول ه بتمثل 
return false; ...ط بٌ والحالة الثالثة ؟ وال ه - 1 
..هاي الحالة تم وضعها داخل جملة ال else ...لأن كل 
هذا المثال لا وٌجد به احتمال ةٌ الى لوقوع 3 أخطاء ... 
اذن ستقول لماذا لم أستخدم النص ..؟؟ ..انظر المثال 
التال .... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Handling External Errors 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Handling External Errors 
لقد قمت بنسخ المثال بشكله الصح حٌ ..داخل مجلد اسمه PHP .. 
داخل مجلد سٌمى 1 ... ^____^ .... 
بعدما تعرفنا وتكلمنا عن موضوع مهم جدا...وتكلمنا ك فٌ مٌكننا 
تدارك الأخطاء ..وطر قٌة ترت بٌها بح ثٌ ظٌهر الكود بأسهل 
طر قٌة ممكنة ..وبأقل وقت وأكثر جودة ... 
لكن كما لحظت ..بتحس انو ف عجقة كث رٌ بتص رٌ بالكود 
...وحتى وانت بتفكر ..ك فٌ ممكن تتحكم بتسلسل الأخطاء !! 
..ط بٌ ممكن نقلل من هذا الاش ...؟ 
الجواب ..طرحته ال PHP 5 ... عن طر قٌ صد قٌنا المعروف 
try, catch, finally ...^_^ والت تسمى Exceptions 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
بسم الله الرحمن الرح مٌ 
) اقرأ باسم ربك الذي خلق، خلق الإنسان من علق، اقرأ 
وربك الأكرم الذي علم بالقلم، علم الإنسان ما لم عٌلم( 
صدق الله العظ مٌ 
قٌول صلى الله عل هٌ وسلم: )من سلك طر قٌاً لٌتمس ف هٌ 
علماً ، سهّل الله له به طر قٌاً إلى الجنّة( )مسلم(. 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Exceptions 
ال Exceptions عبارة عن آل ةٌ رابعة للتحكم بالأخطاء 
وادارتها ..ووس لٌة رابعة لحل المشكلات الت قد تنتج عن 
طر قٌ أي خطأ غ رٌ متوقع ... 
هناك 3 كلمات مفتاح ةٌ رب سٌ ةٌ لتستخدم ال Exceptions 
وه 1 ) Try : أقوم ف هذا البلوك بوضع الكود الذي حٌتمل أن 
قٌع به الخطأ )ال بتوقع انو صٌ رٌ ف خطأ( 
2 ) Catch : وف هذا البلوك تٌم وضع الحل لمعالجة 
الخطأ ..أو ما أر دٌ أن حٌدث ان حصل خطأ ما ... 
3 ) Finally : ف هذا البلوك أقوم بوضع الكود الذي أر دٌه 
أن نٌفذ بجم عٌ الأحوال ..حصل خطأ أم لا ) PHP 5.5 ) 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Exceptions 
http://php.net/manual/en/language.exceptions.php 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Data Validation 
هناك قاعدة رب سٌ ةٌ عندنا بالبرمجة ..وه لا تثق أبدا 
بالمستخدم نٌ ... و عٌن هذا أنك ح نٌ تقوم ببرمجة 
موقع مع نٌ مثلا ..وستستقبل منه ب اٌناتت ..ا اٌك أن تثق 
به ..وا اٌك أن تثق أن الب اٌنات الت س دٌخلها ..ه بالضرورة صح حٌة أو ل سٌت خب ثٌة ... 
لذلك .. وٌجد هناك ش ءً سٌمى Data Validation 
أي التحقق من صحة الب اٌنات المدخلة ..أو تجر دٌها 
وفحصها لحما ةٌ الموقع من أي ب اٌنات ضارة ... 
قٌسم ال Validation الى قسم نٌ ... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Data Validation 
1 وه عمل اٌت التحقق : Client Side Validation ) 
الت تتم على صع دٌ المستخدم نٌ – على أجهزتهم – 
ول سٌ على الس رٌفر ... و كٌون هذا عن طر قٌ ال JS 
ومكاتبها غالبا ... 
2 ) Server Side Validation : وهنا تٌم التحقق من 
الب اٌنات على صع دٌ الس رٌفر ..وهذا مهم جدا... أي أنها 
عمل ةٌ التحقق من الب اٌنات قبل الق اٌم بالعمل اٌت الأساس ةٌ 
أو المطلوبة لأي عمل .. 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Data Validation 
ان ال Client Side Validtion ... مف دٌ جددا لتلافد وقدوع 
الأخطاء الغ رٌ مقصودة من قبل المستخدم نٌ ..مثل بدلا مدن 
أن كٌتددب عمددره بالأرقددام أدخددل حددرف ..الددخ...فهددو سٌدداعد 
المسدددخدم علدددى التأكدددد أن المعلومدددات التددد قدددام بادخالهدددا 
صددح حٌة ...فدد ذات الوقددت ..-قبددل مددا تددروح المعلومددات 
علددددددددددددددددددددددددددددددى السدددددددددددددددددددددددددددددد رٌفر وترجددددددددددددددددددددددددددددددع- .. 
ولاكدددن هدددذا الأمدددر لوحدددده لا كٌفددد ... وهدددذه ان اعتمددددت 
كأسددلوب للحما دٌدة بدددون السدد رٌفر ..فتأكددد أن موقعددك أسددهل 
موقددع للمخددرب نٌ ^^....جددرب أكتددب كددود بعتمددد علددى هددذا 
النوع من التحقق ... وبعد ذلك قم بالضغط علدى Disable js الموجودة بأي متصفح ...وانظر ماذا س حٌدث لحما تٌك.. 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Data Validation 
بالنسبة ل ..أقوم بوضع نوع نٌ من الحما ةٌ ...الأول 
من جهة المستخدم والثان ةٌ من جهة الس رٌفر ...وبهذا 
أكون قد ضمنت تلاف الأخطاء الغ رٌ المقصودة من 
المستخدم نٌ أو مساعدتهم على الاخت اٌر 
الصح حٌ...وأ ضٌا قمت بحما ةٌ الس رٌفر من الأخطاء 
المقصودة قدر الامكان ... 
سأتكلم الآن عن بعض الآل اٌت البس طٌة لحما ةٌ المواقع 
من أكثر المخرب نٌ ..^_____^ 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Data Validation 
هناك الكث رٌ من الأمور البس طٌة والت قد لا نلق لها بالا 
... وتكون من أكثر الأمور الت سٌتخدمها المخرب نٌٌ 
..وسنتلكم عن أهم الأمور للحما ةٌ من هذه الأمور 
وخصوصا ال injection أو حقن المواقع ... 
لنبدأ معا ^____________________^ 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Data Validation $_SERVER["PHP_SELF"] 
كث رٌا من الأح اٌن ..قد نحتاج استخدام 
$_SERVER["PHP_SELF"] هذه عبارة عن 
Super Global variable ... وه تع دٌ لنا اسم 
الصفحة ال متواجد ف هٌا حال اٌ .. وكث رٌا ما نراها ف ال action ..ولكن ما علاقة هذه بالمخرب نٌ ؟ ... 
نحن نستخدم هذا المتغ رٌ كما قلنا ف ال action عٌن لارسال الب اٌنات الت تم تعببتها مثلا بفورم مع اٌ ..الى 
نفس الصفحة ال أنا متواجد ف هٌا ... وبهذه الطر قٌة 
مٌكنن عرض الأخطاء بنفس الصفحة ال أنا ف هٌا – 
هذا كمثال ...- لنشاهد مثال على هذه العمل ةٌ ... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Data Validation $_SERVER["PHP_SELF"] 
لو قمت بسؤالك ...ما رأ كٌ بهذا الفورم البس طٌ ؟ .. أعد النظر ؟ ...هل هناك أي خطر مع نٌ قد صٌ بٌنا 
من هذا الكود ؟ .... 
الجواب هو نعم .... هذا الكود عرضة للتخر بٌ بسهولة ...ولا تتعجب من ذلك ...والسبب هو استخدام 
$_SERVER["PHP_SELF"] ... هذه ستسمح للمخرب نٌ ..بالتخر بٌ ...ولكن ك فٌ ... ؟؟ 
هذا المتغ رٌ مٌكن ان سٌتخدمه الهاكر ..أو المخرب نٌ بمعنى أدق ...عن طر قٌ اضفافة / ... ومن ثم 
كتابة كود XSS ... لنتابع ... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
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
Data Validation $_SERVER["PHP_SELF"] 
لو قمت باضافة هذه ال XSS الى ال URL الخاص بك 
%22%3E%3Cscript%3Ealert('AneesHacked You')%3C/script%3E 
لتصبح بالشكل التال : 
ماذا س حٌدث ؟؟؟!! ...... ان الذي س حٌدث هو اخراج 
رسالة مكتوب ف هٌا لقد اخترقت ...لن هذا الذي كتب 
..س تٌرجم الى <script>alert(“…”)</script> 
وبهذا بمجرد ضغطك على انتر على هذا الرابط ..سترى 
ذلك ...لاحظ شاشة المخرجات .. 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Data Validation $_SERVER["PHP_SELF"] 
ماذا بعد ذلك ؟ ... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Data Validation $_SERVER["PHP_SELF"] 
لا تكمددن خطددورة هددذا النددوع مددن اخددراج هددذه الرسددالة 
..ولكن هذا كان لتوضد حٌ المثدال ... ولكدن مداذا مٌكنند أن أصنع .. مٌكن تضدم نٌ أي سدكربت داخلهدا مثدل اندك 
تعمددددل redirect ... للمسددددتخدم نٌ علددددى ملددددف آخددددر 
موجود خارج الس رٌفر ..وهذا الملدف ممكدن أن حٌتدوي 
أكواد خب ثٌة أو انو وٌخذ معلومات المستخدم .. و حٌظها 
عندددددددددددددددددددددددددددددددددددددددددددددددددددو ...الددددددددددددددددددددددددددددددددددددددددددددددددددخ ... 
اذن فهذا الموضوع ..له أهم ةٌ ف عالمنا كو بٌ ... إذن 
ما الحل بعد كل هذا الكلام ؟ ... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Data Validation $_SERVER["PHP_SELF"] & using htmlspecialchars 
Htmlspecialchars زومرلا لٌوحت ىلع موقت ةلاد هذه 
الخاصة بال html أو الجافا سكربت ... الى Html entits , وهذا عٌن عمل ةٌ منع للمخرب نٌ من استخدام 
الحقن ..لأنه حتى ولو قام بالحقن ..فستقوم هذه الدالة 
بتحو لٌها الى رموز....لاحظ شكل الفورم ك فٌ س صٌبح 
النتابج --- <<<< 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Data Validation $_SERVER["PHP_SELF"] & using htmlspecialchars 
من الطبع ..أنت تتسابل لماذا لم تظهر ..بعد استخدام هذه الدالة ..الجواب قلنا انه 
بالتحو لٌ ..بح ثٌ س صٌبح ال 
XSS الذي قام بوضعه على هذا الشكل : 
&quot;&gt;&lt;script&gt;alert(„Aneeshacked you')&lt;/script&gt; 
أتمنى من الله تعالى ..أن تكون الفكرة قد وصلت ... ^ 
_____^ أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Data Validation htmlspecialchars 
بعد ان تعرفت على هذه الدالة ..فقم باستخدامها مع هذه 
الحالة ...دابما ...وهذا أمر مهم جدا ...وأ ضٌا قم 
باستخدام هذه الدالة مع أي عمل ةٌ Input بتص رٌ من 
طرف المستخدم ... اجعلها حابط الصد الأول لك ..قبل 
ما ما دخل على قاعدة الب اٌنات او تعمل شرط ..قبل ما 
تعمل أي عمل ةٌ على الس رٌفر استخدمها لتحم معلومات وتحم موقعك وتحم المستخدم نٌ الذ نٌ 
عندك ... والآن لننطلق الى حما ةٌ أخرى ... 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Data Validation Using Trim & stripslashes 
Trim وأ تادغارفلا وأ روطدسلا فذدحل مدختدست نأ ندكمٌ ةلادلا هذه 
tab الزابددددة ..أو الددد مدددش محتاج نٌهدددا ..وتدددم ادخالهدددا مدددن قبدددل 
المسدددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددتخدم .. 
وال stripslashes تسدددتخدم لحدددذف ال  الموجدددودة بدددأي عمل دٌددة 
ادخدددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددددال ... 
بهددددددات نٌ العمل تٌدددددد نٌ بالاضددددددافة الددددددى الدالددددددة السددددددابقة .. 
Htmlspecialchars مٌكننددددا حما دٌدددة الموقددددع الخدددداص بنددددا مددددن 
عمل اٌت التخر بٌ ....المتعمدة من قبل المخرب نٌ 
**( طبعددا هددذا لا عٌندد حما دٌدة مطلقددة ...تددذكر أن التقن دٌدات تتطددور 
...والعلددم تٌطددور ..والأشددخاص تٌطددورون وأسددال بٌهم تتطددور ... 
لكن هناك أمور أساس ةٌ جٌب اتباعها حتى ترتق أنت بالدفاع ... 
والآن ... لنقوم بتط بٌق مثال باستخدام هذه الخصابص مجتمعة .. 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
Data Validation Using Trim & 
stripslashes& htmlspeialcharsin function test for post data … 
أن سٌ حكمت أبو حم دٌ 
anees_hikmat@yahoo.com
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة
PHP Advance 101 دورة

Más contenido relacionado

La actualidad más candente

لا تكرر نفسك DRY (Don't Repeat yourself)
لا تكرر نفسك DRY (Don't Repeat yourself)لا تكرر نفسك DRY (Don't Repeat yourself)
لا تكرر نفسك DRY (Don't Repeat yourself)anees abu-hmaid
 
باللغة العربية jQuery دورة
 باللغة العربية jQuery دورة باللغة العربية jQuery دورة
باللغة العربية jQuery دورةanees abu-hmaid
 
تعلم HTML CSS و JavaScript
تعلم HTML CSS و JavaScriptتعلم HTML CSS و JavaScript
تعلم HTML CSS و JavaScriptMolham Al-Maleh
 
بالعربيةAngular js(ar)تحميل كتاب دورة لتعلم
بالعربيةAngular js(ar)تحميل كتاب دورة لتعلم بالعربيةAngular js(ar)تحميل كتاب دورة لتعلم
بالعربيةAngular js(ar)تحميل كتاب دورة لتعلم NoureddineHassi
 
كتاب تعلم Html5 css3
كتاب تعلم Html5 css3كتاب تعلم Html5 css3
كتاب تعلم Html5 css3titifcom
 
Text Formatting+(HTML5)
Text Formatting+(HTML5)Text Formatting+(HTML5)
Text Formatting+(HTML5)Ahmed Hassan
 
Noor-Book.com تعلم HTML و CSS 2 .pdf
Noor-Book.com  تعلم HTML و CSS 2 .pdfNoor-Book.com  تعلم HTML و CSS 2 .pdf
Noor-Book.com تعلم HTML و CSS 2 .pdfAshrafDabbas1
 
الدرس السادس عشر
الدرس السادس عشرالدرس السادس عشر
الدرس السادس عشرAnas Aloklah
 
معالجة النصوص
معالجة النصوصمعالجة النصوص
معالجة النصوصMoselhy Hussein
 
الجزء الثاني قبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبها
الجزء الثاني قبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبهاالجزء الثاني قبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبها
الجزء الثاني قبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبهاanees abu-hmaid
 
Web development تطوير و تصميم المواقع
Web development تطوير و تصميم المواقعWeb development تطوير و تصميم المواقع
Web development تطوير و تصميم المواقعiLink sa
 
معالج النصوص
معالج النصوصمعالج النصوص
معالج النصوصguest0ee7b20
 
عرض درس معالج النصوص
عرض درس معالج النصوصعرض درس معالج النصوص
عرض درس معالج النصوصبثينة راشد
 
الدرس الرابع عشر
الدرس الرابع عشرالدرس الرابع عشر
الدرس الرابع عشرAnas Aloklah
 
مواضيع متقدمة في JavaScript
مواضيع متقدمة في JavaScriptمواضيع متقدمة في JavaScript
مواضيع متقدمة في JavaScriptMolham Al-Maleh
 
مذكرة في لغة Html 2
مذكرة في لغة Html   2مذكرة في لغة Html   2
مذكرة في لغة Html 2خالد مراد
 

La actualidad más candente (16)

لا تكرر نفسك DRY (Don't Repeat yourself)
لا تكرر نفسك DRY (Don't Repeat yourself)لا تكرر نفسك DRY (Don't Repeat yourself)
لا تكرر نفسك DRY (Don't Repeat yourself)
 
باللغة العربية jQuery دورة
 باللغة العربية jQuery دورة باللغة العربية jQuery دورة
باللغة العربية jQuery دورة
 
تعلم HTML CSS و JavaScript
تعلم HTML CSS و JavaScriptتعلم HTML CSS و JavaScript
تعلم HTML CSS و JavaScript
 
بالعربيةAngular js(ar)تحميل كتاب دورة لتعلم
بالعربيةAngular js(ar)تحميل كتاب دورة لتعلم بالعربيةAngular js(ar)تحميل كتاب دورة لتعلم
بالعربيةAngular js(ar)تحميل كتاب دورة لتعلم
 
كتاب تعلم Html5 css3
كتاب تعلم Html5 css3كتاب تعلم Html5 css3
كتاب تعلم Html5 css3
 
Text Formatting+(HTML5)
Text Formatting+(HTML5)Text Formatting+(HTML5)
Text Formatting+(HTML5)
 
Noor-Book.com تعلم HTML و CSS 2 .pdf
Noor-Book.com  تعلم HTML و CSS 2 .pdfNoor-Book.com  تعلم HTML و CSS 2 .pdf
Noor-Book.com تعلم HTML و CSS 2 .pdf
 
الدرس السادس عشر
الدرس السادس عشرالدرس السادس عشر
الدرس السادس عشر
 
معالجة النصوص
معالجة النصوصمعالجة النصوص
معالجة النصوص
 
الجزء الثاني قبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبها
الجزء الثاني قبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبهاالجزء الثاني قبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبها
الجزء الثاني قبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبها
 
Web development تطوير و تصميم المواقع
Web development تطوير و تصميم المواقعWeb development تطوير و تصميم المواقع
Web development تطوير و تصميم المواقع
 
معالج النصوص
معالج النصوصمعالج النصوص
معالج النصوص
 
عرض درس معالج النصوص
عرض درس معالج النصوصعرض درس معالج النصوص
عرض درس معالج النصوص
 
الدرس الرابع عشر
الدرس الرابع عشرالدرس الرابع عشر
الدرس الرابع عشر
 
مواضيع متقدمة في JavaScript
مواضيع متقدمة في JavaScriptمواضيع متقدمة في JavaScript
مواضيع متقدمة في JavaScript
 
مذكرة في لغة Html 2
مذكرة في لغة Html   2مذكرة في لغة Html   2
مذكرة في لغة Html 2
 

Destacado

دورة CSS3 باللغة العربية
دورة CSS3 باللغة العربيةدورة CSS3 باللغة العربية
دورة CSS3 باللغة العربيةanees abu-hmaid
 
Canvas دورة باللغة العربية
Canvas دورة باللغة العربيةCanvas دورة باللغة العربية
Canvas دورة باللغة العربيةanees abu-hmaid
 
باللغة العربية JSON دورة
  باللغة العربية JSON دورة   باللغة العربية JSON دورة
باللغة العربية JSON دورة anees abu-hmaid
 
دورة دروبال 7 باللغة العربية
دورة دروبال 7 باللغة العربيةدورة دروبال 7 باللغة العربية
دورة دروبال 7 باللغة العربيةanees abu-hmaid
 
Ecmascript 6 (ES6) جافا سكربت (6)
Ecmascript 6 (ES6) جافا سكربت (6)Ecmascript 6 (ES6) جافا سكربت (6)
Ecmascript 6 (ES6) جافا سكربت (6)anees abu-hmaid
 
أساسيات لغة Php بالعربي
أساسيات لغة Php بالعربيأساسيات لغة Php بالعربي
أساسيات لغة Php بالعربيtahsal99
 
دورة تعلم بسهوله PHP
دورة تعلم  بسهوله PHP دورة تعلم  بسهوله PHP
دورة تعلم بسهوله PHP abdelkrim abdellaoui
 
Php database - 3
Php   database - 3Php   database - 3
Php database - 3osman do
 
تعلم البرمجة في 3 ساعات و 20 دقيقة و 55 ثانية
تعلم البرمجة في 3 ساعات و 20 دقيقة و 55 ثانيةتعلم البرمجة في 3 ساعات و 20 دقيقة و 55 ثانية
تعلم البرمجة في 3 ساعات و 20 دقيقة و 55 ثانيةanees abu-hmaid
 
تنسيق الشيفرة البرمجية (Coding Style)
تنسيق الشيفرة البرمجية (Coding Style)تنسيق الشيفرة البرمجية (Coding Style)
تنسيق الشيفرة البرمجية (Coding Style)anees abu-hmaid
 
مقدمة عن بايثون / جانقو
مقدمة عن بايثون / جانقومقدمة عن بايثون / جانقو
مقدمة عن بايثون / جانقوlunarhalo
 
رحلة في السيليكون فالي
رحلة في السيليكون فاليرحلة في السيليكون فالي
رحلة في السيليكون فاليlunarhalo
 
مقدمة
مقدمةمقدمة
مقدمةtahsal99
 
المختصر السريع فى البرمجة غرضية التوجية فى Php
المختصر السريع فى البرمجة غرضية التوجية فى Phpالمختصر السريع فى البرمجة غرضية التوجية فى Php
المختصر السريع فى البرمجة غرضية التوجية فى PhpPrmigo
 
PHP Web service - وب سرویس
PHP Web service - وب سرویسPHP Web service - وب سرویس
PHP Web service - وب سرویسParsa Kafi
 
اللغة الإنجليزية والمشاكل البرمجية ومهارة البحث
اللغة الإنجليزية والمشاكل البرمجية ومهارة البحثاللغة الإنجليزية والمشاكل البرمجية ومهارة البحث
اللغة الإنجليزية والمشاكل البرمجية ومهارة البحثanees abu-hmaid
 
بناء تطبيقات ويب 2.0. دروس مستفادة و نصائح موجهة
 بناء تطبيقات ويب 2.0. دروس مستفادة و نصائح موجهة  بناء تطبيقات ويب 2.0. دروس مستفادة و نصائح موجهة
بناء تطبيقات ويب 2.0. دروس مستفادة و نصائح موجهة lunarhalo
 

Destacado (20)

دورة CSS3 باللغة العربية
دورة CSS3 باللغة العربيةدورة CSS3 باللغة العربية
دورة CSS3 باللغة العربية
 
Canvas دورة باللغة العربية
Canvas دورة باللغة العربيةCanvas دورة باللغة العربية
Canvas دورة باللغة العربية
 
باللغة العربية JSON دورة
  باللغة العربية JSON دورة   باللغة العربية JSON دورة
باللغة العربية JSON دورة
 
jQuery UI (Effect)
jQuery UI (Effect) jQuery UI (Effect)
jQuery UI (Effect)
 
Js dom & JS bom
Js dom & JS bomJs dom & JS bom
Js dom & JS bom
 
دورة دروبال 7 باللغة العربية
دورة دروبال 7 باللغة العربيةدورة دروبال 7 باللغة العربية
دورة دروبال 7 باللغة العربية
 
Ecmascript 6 (ES6) جافا سكربت (6)
Ecmascript 6 (ES6) جافا سكربت (6)Ecmascript 6 (ES6) جافا سكربت (6)
Ecmascript 6 (ES6) جافا سكربت (6)
 
أساسيات لغة Php بالعربي
أساسيات لغة Php بالعربيأساسيات لغة Php بالعربي
أساسيات لغة Php بالعربي
 
دورة تعلم بسهوله PHP
دورة تعلم  بسهوله PHP دورة تعلم  بسهوله PHP
دورة تعلم بسهوله PHP
 
Php database - 3
Php   database - 3Php   database - 3
Php database - 3
 
تعلم البرمجة في 3 ساعات و 20 دقيقة و 55 ثانية
تعلم البرمجة في 3 ساعات و 20 دقيقة و 55 ثانيةتعلم البرمجة في 3 ساعات و 20 دقيقة و 55 ثانية
تعلم البرمجة في 3 ساعات و 20 دقيقة و 55 ثانية
 
تنسيق الشيفرة البرمجية (Coding Style)
تنسيق الشيفرة البرمجية (Coding Style)تنسيق الشيفرة البرمجية (Coding Style)
تنسيق الشيفرة البرمجية (Coding Style)
 
Php mysql ppt
Php mysql pptPhp mysql ppt
Php mysql ppt
 
مقدمة عن بايثون / جانقو
مقدمة عن بايثون / جانقومقدمة عن بايثون / جانقو
مقدمة عن بايثون / جانقو
 
رحلة في السيليكون فالي
رحلة في السيليكون فاليرحلة في السيليكون فالي
رحلة في السيليكون فالي
 
مقدمة
مقدمةمقدمة
مقدمة
 
المختصر السريع فى البرمجة غرضية التوجية فى Php
المختصر السريع فى البرمجة غرضية التوجية فى Phpالمختصر السريع فى البرمجة غرضية التوجية فى Php
المختصر السريع فى البرمجة غرضية التوجية فى Php
 
PHP Web service - وب سرویس
PHP Web service - وب سرویسPHP Web service - وب سرویس
PHP Web service - وب سرویس
 
اللغة الإنجليزية والمشاكل البرمجية ومهارة البحث
اللغة الإنجليزية والمشاكل البرمجية ومهارة البحثاللغة الإنجليزية والمشاكل البرمجية ومهارة البحث
اللغة الإنجليزية والمشاكل البرمجية ومهارة البحث
 
بناء تطبيقات ويب 2.0. دروس مستفادة و نصائح موجهة
 بناء تطبيقات ويب 2.0. دروس مستفادة و نصائح موجهة  بناء تطبيقات ويب 2.0. دروس مستفادة و نصائح موجهة
بناء تطبيقات ويب 2.0. دروس مستفادة و نصائح موجهة
 

Similar a PHP Advance 101 دورة

بعض اساسيات البرمجة
بعض اساسيات البرمجةبعض اساسيات البرمجة
بعض اساسيات البرمجةmadani zamzami
 
أريد تعلم البرمجة لكنني لا أعرف من أين أبدأ.pdf
أريد تعلم البرمجة لكنني لا أعرف من أين أبدأ.pdfأريد تعلم البرمجة لكنني لا أعرف من أين أبدأ.pdf
أريد تعلم البرمجة لكنني لا أعرف من أين أبدأ.pdfNadiaMohamedSherif
 
خوارزمية القيصر .pptx
خوارزمية القيصر                              .pptxخوارزمية القيصر                              .pptx
خوارزمية القيصر .pptxMohammadHassan537429
 
Www.kutub.info 18703
Www.kutub.info 18703Www.kutub.info 18703
Www.kutub.info 18703Imad Modi
 
HTML 5 - CSS 3 Arabic Book
HTML 5 - CSS 3 Arabic BookHTML 5 - CSS 3 Arabic Book
HTML 5 - CSS 3 Arabic BookiTawy Community
 
أردوينو بالعربي
أردوينو بالعربيأردوينو بالعربي
أردوينو بالعربيAhmedKazim7
 
HTML - L4.pdfHTML - L4.pdfHTML - L4.pdfHTML - L4.pdf
HTML - L4.pdfHTML - L4.pdfHTML - L4.pdfHTML - L4.pdfHTML - L4.pdfHTML - L4.pdfHTML - L4.pdfHTML - L4.pdf
HTML - L4.pdfHTML - L4.pdfHTML - L4.pdfHTML - L4.pdfMohamedMostafa897436
 
Internet educational book links
Internet educational book linksInternet educational book links
Internet educational book linksSabry Shaheen
 
الدرس الثاني عشر
الدرس الثاني عشرالدرس الثاني عشر
الدرس الثاني عشرAnas Aloklah
 
Important topics in civil engineering-Eng.hassan hammami
Important topics  in civil engineering-Eng.hassan hammamiImportant topics  in civil engineering-Eng.hassan hammami
Important topics in civil engineering-Eng.hassan hammamiBahzad5
 
Difference between asp and php
Difference between asp and phpDifference between asp and php
Difference between asp and phpSpy Seat
 
سلسلة تعلم البرمجة بلغة C / C++ - 1
سلسلة تعلم البرمجة بلغة C / C++  - 1سلسلة تعلم البرمجة بلغة C / C++  - 1
سلسلة تعلم البرمجة بلغة C / C++ - 1بندر المجلاد
 
مع الامثله البرمجه بسكراتس.اساسيات البرمجه
مع الامثله البرمجه بسكراتس.اساسيات البرمجهمع الامثله البرمجه بسكراتس.اساسيات البرمجه
مع الامثله البرمجه بسكراتس.اساسيات البرمجهMohamed Alashram
 
مقدمة في البرمجة
مقدمة في البرمجةمقدمة في البرمجة
مقدمة في البرمجةgueste902d
 

Similar a PHP Advance 101 دورة (20)

c++ for loops
c++ for loopsc++ for loops
c++ for loops
 
بعض اساسيات البرمجة
بعض اساسيات البرمجةبعض اساسيات البرمجة
بعض اساسيات البرمجة
 
أريد تعلم البرمجة لكنني لا أعرف من أين أبدأ.pdf
أريد تعلم البرمجة لكنني لا أعرف من أين أبدأ.pdfأريد تعلم البرمجة لكنني لا أعرف من أين أبدأ.pdf
أريد تعلم البرمجة لكنني لا أعرف من أين أبدأ.pdf
 
خوارزمية القيصر .pptx
خوارزمية القيصر                              .pptxخوارزمية القيصر                              .pptx
خوارزمية القيصر .pptx
 
Www.kutub.info 18703
Www.kutub.info 18703Www.kutub.info 18703
Www.kutub.info 18703
 
الدرس 1.pdf
الدرس 1.pdfالدرس 1.pdf
الدرس 1.pdf
 
HTML 5 - CSS 3 Arabic Book
HTML 5 - CSS 3 Arabic BookHTML 5 - CSS 3 Arabic Book
HTML 5 - CSS 3 Arabic Book
 
كتاب تعلم Html5 و css3
كتاب تعلم Html5 و css3كتاب تعلم Html5 و css3
كتاب تعلم Html5 و css3
 
01 Introduction in C++
01 Introduction in C++01 Introduction in C++
01 Introduction in C++
 
الدرس 2.pdf
الدرس 2.pdfالدرس 2.pdf
الدرس 2.pdf
 
أردوينو بالعربي
أردوينو بالعربيأردوينو بالعربي
أردوينو بالعربي
 
HTML - L4.pdfHTML - L4.pdfHTML - L4.pdfHTML - L4.pdf
HTML - L4.pdfHTML - L4.pdfHTML - L4.pdfHTML - L4.pdfHTML - L4.pdfHTML - L4.pdfHTML - L4.pdfHTML - L4.pdf
HTML - L4.pdfHTML - L4.pdfHTML - L4.pdfHTML - L4.pdf
 
Internet educational book links
Internet educational book linksInternet educational book links
Internet educational book links
 
Dynamo
DynamoDynamo
Dynamo
 
الدرس الثاني عشر
الدرس الثاني عشرالدرس الثاني عشر
الدرس الثاني عشر
 
Important topics in civil engineering-Eng.hassan hammami
Important topics  in civil engineering-Eng.hassan hammamiImportant topics  in civil engineering-Eng.hassan hammami
Important topics in civil engineering-Eng.hassan hammami
 
Difference between asp and php
Difference between asp and phpDifference between asp and php
Difference between asp and php
 
سلسلة تعلم البرمجة بلغة C / C++ - 1
سلسلة تعلم البرمجة بلغة C / C++  - 1سلسلة تعلم البرمجة بلغة C / C++  - 1
سلسلة تعلم البرمجة بلغة C / C++ - 1
 
مع الامثله البرمجه بسكراتس.اساسيات البرمجه
مع الامثله البرمجه بسكراتس.اساسيات البرمجهمع الامثله البرمجه بسكراتس.اساسيات البرمجه
مع الامثله البرمجه بسكراتس.اساسيات البرمجه
 
مقدمة في البرمجة
مقدمة في البرمجةمقدمة في البرمجة
مقدمة في البرمجة
 

Más de anees abu-hmaid

شرح طريقة تصميم الأنظمة - من مستخدم إلى مليون مستخدم )System Design)
شرح طريقة تصميم الأنظمة - من مستخدم إلى مليون مستخدم )System Design)شرح طريقة تصميم الأنظمة - من مستخدم إلى مليون مستخدم )System Design)
شرح طريقة تصميم الأنظمة - من مستخدم إلى مليون مستخدم )System Design)anees abu-hmaid
 
لا تتداول العملات الرقمية ولا تشتريها قبل أن تقرأ هذه الكلمات
لا تتداول العملات الرقمية ولا تشتريها قبل أن تقرأ هذه الكلماتلا تتداول العملات الرقمية ولا تشتريها قبل أن تقرأ هذه الكلمات
لا تتداول العملات الرقمية ولا تشتريها قبل أن تقرأ هذه الكلماتanees abu-hmaid
 
نقاط تقنية مفيدة لمستخدمين شبكة الإنترنت
نقاط تقنية مفيدة لمستخدمين شبكة الإنترنتنقاط تقنية مفيدة لمستخدمين شبكة الإنترنت
نقاط تقنية مفيدة لمستخدمين شبكة الإنترنتanees abu-hmaid
 
Web performance - الجزء السادس
Web performance - الجزء السادسWeb performance - الجزء السادس
Web performance - الجزء السادسanees abu-hmaid
 
Web performance - الجزء الخامس
Web performance - الجزء الخامسWeb performance - الجزء الخامس
Web performance - الجزء الخامسanees abu-hmaid
 
Web performance - الجزء الرابع
Web performance - الجزء الرابعWeb performance - الجزء الرابع
Web performance - الجزء الرابعanees abu-hmaid
 
Web performance - الجزء الثالث
Web performance - الجزء الثالثWeb performance - الجزء الثالث
Web performance - الجزء الثالثanees abu-hmaid
 
Web performance - الجزء الثاني
Web performance - الجزء الثانيWeb performance - الجزء الثاني
Web performance - الجزء الثانيanees abu-hmaid
 
Web performance - الجزء الأول
Web performance - الجزء الأولWeb performance - الجزء الأول
Web performance - الجزء الأولanees abu-hmaid
 
قبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبها - الجزء الأول
قبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبها - الجزء الأولقبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبها - الجزء الأول
قبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبها - الجزء الأولanees abu-hmaid
 
كيف تقرأ كتابا - خطوات لتحسين القراءة
كيف تقرأ كتابا - خطوات لتحسين القراءةكيف تقرأ كتابا - خطوات لتحسين القراءة
كيف تقرأ كتابا - خطوات لتحسين القراءةanees abu-hmaid
 
وهم الأمان - مخاطر الإنترنت والتعامل مع الابتزاز
وهم الأمان - مخاطر الإنترنت والتعامل مع الابتزازوهم الأمان - مخاطر الإنترنت والتعامل مع الابتزاز
وهم الأمان - مخاطر الإنترنت والتعامل مع الابتزازanees abu-hmaid
 
Coding review guide مراجعة الشيفرة البرمجية
Coding review guide مراجعة الشيفرة البرمجيةCoding review guide مراجعة الشيفرة البرمجية
Coding review guide مراجعة الشيفرة البرمجيةanees abu-hmaid
 
Node.js course باللغة العربية
Node.js course باللغة العربيةNode.js course باللغة العربية
Node.js course باللغة العربيةanees abu-hmaid
 
الخصوصية وموقعها من الإعراب
الخصوصية وموقعها من الإعرابالخصوصية وموقعها من الإعراب
الخصوصية وموقعها من الإعرابanees abu-hmaid
 
الإسلام والتقنية Islam & IT
الإسلام والتقنية Islam & ITالإسلام والتقنية Islam & IT
الإسلام والتقنية Islam & ITanees abu-hmaid
 

Más de anees abu-hmaid (16)

شرح طريقة تصميم الأنظمة - من مستخدم إلى مليون مستخدم )System Design)
شرح طريقة تصميم الأنظمة - من مستخدم إلى مليون مستخدم )System Design)شرح طريقة تصميم الأنظمة - من مستخدم إلى مليون مستخدم )System Design)
شرح طريقة تصميم الأنظمة - من مستخدم إلى مليون مستخدم )System Design)
 
لا تتداول العملات الرقمية ولا تشتريها قبل أن تقرأ هذه الكلمات
لا تتداول العملات الرقمية ولا تشتريها قبل أن تقرأ هذه الكلماتلا تتداول العملات الرقمية ولا تشتريها قبل أن تقرأ هذه الكلمات
لا تتداول العملات الرقمية ولا تشتريها قبل أن تقرأ هذه الكلمات
 
نقاط تقنية مفيدة لمستخدمين شبكة الإنترنت
نقاط تقنية مفيدة لمستخدمين شبكة الإنترنتنقاط تقنية مفيدة لمستخدمين شبكة الإنترنت
نقاط تقنية مفيدة لمستخدمين شبكة الإنترنت
 
Web performance - الجزء السادس
Web performance - الجزء السادسWeb performance - الجزء السادس
Web performance - الجزء السادس
 
Web performance - الجزء الخامس
Web performance - الجزء الخامسWeb performance - الجزء الخامس
Web performance - الجزء الخامس
 
Web performance - الجزء الرابع
Web performance - الجزء الرابعWeb performance - الجزء الرابع
Web performance - الجزء الرابع
 
Web performance - الجزء الثالث
Web performance - الجزء الثالثWeb performance - الجزء الثالث
Web performance - الجزء الثالث
 
Web performance - الجزء الثاني
Web performance - الجزء الثانيWeb performance - الجزء الثاني
Web performance - الجزء الثاني
 
Web performance - الجزء الأول
Web performance - الجزء الأولWeb performance - الجزء الأول
Web performance - الجزء الأول
 
قبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبها - الجزء الأول
قبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبها - الجزء الأولقبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبها - الجزء الأول
قبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبها - الجزء الأول
 
كيف تقرأ كتابا - خطوات لتحسين القراءة
كيف تقرأ كتابا - خطوات لتحسين القراءةكيف تقرأ كتابا - خطوات لتحسين القراءة
كيف تقرأ كتابا - خطوات لتحسين القراءة
 
وهم الأمان - مخاطر الإنترنت والتعامل مع الابتزاز
وهم الأمان - مخاطر الإنترنت والتعامل مع الابتزازوهم الأمان - مخاطر الإنترنت والتعامل مع الابتزاز
وهم الأمان - مخاطر الإنترنت والتعامل مع الابتزاز
 
Coding review guide مراجعة الشيفرة البرمجية
Coding review guide مراجعة الشيفرة البرمجيةCoding review guide مراجعة الشيفرة البرمجية
Coding review guide مراجعة الشيفرة البرمجية
 
Node.js course باللغة العربية
Node.js course باللغة العربيةNode.js course باللغة العربية
Node.js course باللغة العربية
 
الخصوصية وموقعها من الإعراب
الخصوصية وموقعها من الإعرابالخصوصية وموقعها من الإعراب
الخصوصية وموقعها من الإعراب
 
الإسلام والتقنية Islam & IT
الإسلام والتقنية Islam & ITالإسلام والتقنية Islam & IT
الإسلام والتقنية Islam & IT
 

PHP Advance 101 دورة

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