لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

153
Arab British Academy for Higher Education. PHP Course www.abahe.co.uk 1 ﻟﻐﺔPHP

Transcript of لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Page 1: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

1

PHPلغة

Page 2: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

2

احملتويات مقدمة

PHPما هي لغة الـ PHPالـ ملفات لتحريرWindows XPإعدادات

IIS سرفرل ل PHP 4.4.2 لغة الـةفاضإ تركيب برنامج السيرفر الشخصي

PHP مدخل إلى الـ PHPالمتغيرات في الـ

البيانات أنواع المعامالت الثوابت PHP في الـ الوقت والتاريخدوال

العبارات الشرطية عبارات التكرار

PHPالصور في لغة الـ التعامل مع النماذج

المصفوفات التحكم بالنصوص وادراج الملفات

قواعد البيانات التعامل مع الملفات والمجلدات

معالجة األخطاء أمثلة متنوعة

Page 3: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

3

مقدمةت هــذه الــصفحا HTML هــي لغــة ظهــور االنترنيــتكانــت اللغــة المــستخدمة حــين

الوقــت، أصــبحنا مــع مــرورو. كانــت تحتــوي علــى روابــط للتنقــل مــن معلومــة ألخــرى .. ظهرت تقنيات مختلفة لتحسين الوضعف! بحاجة إلى المزيد

:اللغات إلى نوعين رئيسيينهذه مكن تقسيم وي

:للغات جهة العميلـ ا أوال

ص مـن القـر) المعلومـة(يطلب المستخدم صفحة معينة، يتم جلب هذه الصفحة بترجمة هذه الصفحة إلى معلومـات ) المتصفح(للجهاز الخادم ثم يقوم العميل الصلب .لدى جهاز المستخدم تظهر

الـسرعة فـي التنفيـذ وعيبـه أن المـصمم لـيس لديـه وميزة هذا النوع من اللغات ه ! كامل في نوعية المتصفح المستخدم لترجمة ما كتبه من أكواد تحكم

):لخادم ا( مزود للغات جهة الـ ا ثانيا

يطلب المستخدم صفحة معينة، يتم جلب هـذه الـصفحة أو المعلومـة مـن القـرص للجهاز الخـادم ثـم يقـوم الجهـاز الخـادم بترجمـة المعلومـات المطلوبـة وتحويلهـا الصلبكبـر األتحكم الـميزة هذا النوع من اللغـات هـو . ثم يرسلها للعميل HTMLـ ال إلى لغة

الوقــت المطلــوب لكــن يوجــد عيــوب تتمثــل فــي زيــادة،م للترجمــةفــي البرنــامج المــستخد .لوصول االستجابة

.وسنستعرض اآلن هذه اللغات بشكل سريع

HTML : اختصار لـHyper Text Markup Language لغـة ترميـز عنيالتي ت تــدعم جميــع المتــصفحات . األولــى علــى الــشبكةة هــذه اللغــة هــي اللغــ. الــنص التــشعبيمــع وجــود بعــض الوســوم القليلــة التــي قــد تكــون م األساســية لهــذه اللغــةالموجــودة الوســو

Page 4: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

4

يحــدث عــادة بــسبب إضــافة المزيــد مــن الوســوم هــذا . خــرآمدعومــة مــن متــصفح دون الـشركة المـصنعة للمتـصفح وبالتـالي تكـون بشكل سريع أو بـسبب أن الوسـم منـتج مـنولكـن . لهـاركات المنافـسة تدعمـه بقيـة الـش داعمة له فـي بقيـة منتجاتهـا أيـضا بينمـا ال

فالجملـة التـي يكتبهـا مـصمم الموقـع أدت إلـى ظهـور لغـات أخـرى محدودية هـذه اللغـةلنفــرض أنــه كتــب الوقــت ! كــل وقــت ســتظهر كمــا كتبهــا لــدى جميــع المــستخدمين وفــي

الجملــــة، مــــاذا ســــيحدث عنــــدما يطلــــع و الــــذي يــــشير إلــــى وقــــت كتابتــــه لهــــذه4.30 بينمـا .رابعـة والنـصفالساعة تشير إلى ال ساعة ؟ ستظلالمستخدم على صفحته بعد

.متحرك يتغير بتغير الزمن أو بتغير المستخدم كان بإمكاننا أن نجعل هذا المحتوى

أنها ال تفصل المحتوى عن التنسيق بينما يوجـد حلـول HTMLالـ خر للغة العيب اآل تمامـا لكـن بـدمجها مـع عن هذه اللغـةباالستغناءالحل قد ال يكون و. أخرى تقوم بذلك

لغـات أخــرى مثــل لغـات البرمجــة الخفيفــة الجافــا سـكريبت وشــبيهاتها أو لغــات البرمجــة PHP, ASP… الثقيلة

DHTML : اختصارها Text Markup Language Dynamic Hyper التيظهـرت هـذه اللغـة كحـل لثبـات المحتـوى . تشير إلى لغـة ترميـز الـنص التـشعبي الكليـة

ــــ يــــضيف بعــــض الحركــــة حيــــث أصــــبح بإمكــــان المــــصمم أن. HTMLـ فــــي لغــــة ال. بخيـال المـصمم فقـط األمثلة على مثل هذه اإلضـافات كثيـرة جـدا ومحـدودة. لصفحته

تغيــــر لــــون أو يمكنــــك أن تجعــــل إحــــدى مكونــــات صــــفحتك تــــستدير باتجــــاه معــــين، يع أنتــستط: تــأثير األمــواج أو الخلفيــة الــشبه شــفافة، باختــصارفتــضيالعناصــر، أو

هـذه اللغـة تعتبـر مـن .تجعل كل عنـصر مـن عناصـر صـفحتك يتفاعـل مـع المـستخدم .ضايالعميل أ لغات جهة

Page 5: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

5

ActiveX Controls :ات صــغيرة يــمكونــات األكتيــف اكــس هــي عبــارة عــن برمجقامــت شــركة مايكروســوفت . أو الفيجــوال بيـسك++Cـ الــ يمكـن صــنعها بواســطة لغتـيبعض الوظائف التي قد يحتاجهـا مطـورو مواقـع الـشبكة بإنتاج هذه المكونات إلضافة

الرســـوم البيانيـــة، المؤقتـــات، االتـــصال بقواعـــد :هـــي بعـــض هـــذه الوظـــائف. العنكبوتيــةهـذه اللغـة ال .HTMLـ المكونـات إلـى صـفحات الـ يمكنـك إضـافة هـذهكمـا . البيانات ذلك على ما اعتبارها من لغات جهة العميل أو لغات جهة الخادم، حيث يعتمد يمكن

. هذا الكائن يقوم به

: CGIاختـصار لــ Interface Common Gateway التـي تـشير إلـى واجهـةتعتبر هذه اللغة من أقدم وأشهر اللغات المستخدمة لتطبيقات اإلنترنـت . البوابة العامةيمكنـك ! مدعومة في كل شركات االستضافة الحالية ستجد أن هذه اللغة. جهة الخادم

باستخدام أي لغة تقريبـا، إال أن أشـهر اللغـات المـستخدمة لـذلك CGIـ رامج الكتابة ب . هي لغة البيرل

CGI كون بمثابة الواجهة أو البوابة التي تربط الخادم بالبرنامجت .

الـشبكة العنكبوتيـة، مميزات هـذه اللغـة تتمثـل فـي الـدعم الواسـع لهـا علـى جميـع خـوادمالمزيـد مـن المبـالغ ر شـركة استـضافة معينـة أو دفـعهذا يعنـي أنـك لـن تـضطر الختيـا

. للحصول على دعم خاص لبرامجك

مـستوى األداء عنـدما تزيـد الطلبـات علـى الخـادم انخفـاض عيوب هذه اللغة تتمثـل فـي . عملية منفصلة لكل طلب حيث أن ذلك يتطلب إنشاء

:ASP اختــصار لـــActive Server Pages التــي تــشير إلــى صــفحات الخـــادمـ كمـا أنهـا تتخـذ نفـس أسـلوب الـ. PHPـ هذه اللغة تعتبر منـافس قـوي للغـة الـ. النشطةPHP ــ تكــونالتــي مــن حيــث أن أكــواد اللغــة فــي HTMLـ مدمجــة مــن أكــواد لغــة ال

. ملف واحد

Page 6: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

6

غيـر مفتوحـة المـصدر ممـا يعنـي واللغة تتمثـل فـي أنهـا لغـة غيـر مجانيـة، عيوب هذهالوقــت المناســب، باإلضــافة لمحدوديــة تطــوير اللغــة يــتم إصــالحها فــي أن األخطــاء ال

أنـــك ال تـــستطيع اســـتخدامها إال علـــى خـــادم يحتـــوي علـــى نظـــام والعيـــب األكبـــر هـــو .(IIS, PWS) برنامج خادم من إنتاج شركة مايكروسوفت التشغيل ويندوز مع

JSP : اختـصار لــ Java Server Pages التـي تـشير إلـى صـفحات الجافـا جهـةتعتمـد هـذه اللغـة علـى فـصل . يشير االسـم ي إحدى لغات جهة الخادم كماوه. الخادم

فـي jsp. صـفحات الجافـا جهـة الخـادم باالمتـداد تنتهـي. المحتـوى عـن طريقـة العـرضالجافـــا مـــن الخـــادم، يقـــوم الخـــادم بترجمـــة الكـــود وعنـــد طلـــب إحـــدى صـــفحات العـــادة

لــذاكرة ممــا يــسمح بإرســال الترجمــة موجــود فــي ا ويرســل النتيجــة، لكــن يظــل الكــود بعــدهذه الخاصية تعطـي للغـة قـوة عاليـة يعتمـد . الطلب النتيجة في فترة قياسية عند تكرار

. عليها في المشاريع الضخمة

حيــث يمكنــك االســتفادة مــن) االجافــ(تــستمد هــذه اللغــة قوتهــا مــن قــوة اللغــة األساســية . ى الشبكة العنكبوتيةالميزات الكثيرة التي تقدمها لغة الجافا في مشاريعك عل

أنها قد تستغرب من عدم انتشار هذه اللغة على مالها من مميزات، والسبب يكمن في .قد تكون صعبة بعض الشيء على من لم يعتد على البرمجة بلغة الجافا

ColdFusion :ـ هــذه إحــدى اللغــات المنافــسة للغــة الــPHP صــممت هــذه اللغــة مــنتم تطوير اللغة . ملية لتطبيقات الشبكة العنكبوتيةهدف واضح هو تقديم حلول ع أجلهـذه . اللغـة مدعومـة مـن قبـل أنظمـة تـشغيل مختلفـة (Allaire) . قبـل شـركة أليـر من

تنـتج الـشركة ! فـي الـسعرعـاأكثـر اللغـات ارتفا اللغة غير مجانيـة، بـل إنهـا تعتبـر مـن ثالثة مستويات من الحلول

. خصي المستوى األول مفيد لالستخدام الش

.الثاني يناسب الشركات ذات األعمال الصغيرة المستوى

Page 7: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

7

.الكبرى المستوى الثالث يناسب األعمال

. تهاقومن هذه اللغة يمكن دمجها مع تقنيات شبكية مختلفة ومتعددة تزيد

كمــا أن هنــاك بيئــة مرئيــة مقدمــة مــع اللغــة تــسمح لــك بكتابــة برامجــك فــي بيئــة أفــضل . وأسهل

لغـــة تتمثـــل فـــي إمكانيـــة دمجهـــا مـــع قاعـــدة عريـــضة جـــدا مـــن التقنيـــاتمميـــزات هـــذه ال .المتوفرة

. ما أما عيوبها فتتمثل في السعر المرتفع للغة باإلضافة لصعوبة تعلمها إلى حد

Perl :تـم تطـوير هـذه اللغـة باألسـاس مـن قبـل الري وول . (Larry Wall) ثـم تـم أن اللغـــة مفتوحـــة المـــصدر ممـــا تطويرهـــا مـــن قبـــل قاعـــدة عريـــضة مـــن المطـــورين إذ

, C, sed: تعتمد اللغة باألساس على لغات من أمثال. فرصة أكبر لتطويرها يعطي

awk وغيرها من اللغات .

. المطورين من حيث قدم اللغة و انتشارها الواسع بينphpـ تتغلب هذه اللغة على الرهـــا لخدمـــة أغـــراض تطوي تـــمهـــا تتغلـــب علـــى لغـــة البيـــرل مـــن ناحيـــة أنPHPـ لكـــن الـــ

. الشبكة فقط، مما يعني أنها األفضل لمثل هذا الغرض

PHP :علــــى شــــكل مجموعــــة مــــن األكــــواد التــــي قــــام شــــخص يــــدعىتها كانــــت بــــداي بتطويرهـــا لمراقبـــة األشـــخاص اللـــذين (Rasmus Lerdorf) راســـموس ليـــردورف

راســـموس ازداد اهتمـــام المطـــورين بهـــذه األكـــواد التـــي قـــام . الشخـــصي يـــزورون ملفـــهاألخيــر أن ينــشرها لالســتخدام العــام باســم أدوات Personal Home بتطويرهــا فقــرر

هـي أن نـشر والفكـرة (PHP = Personal Home Pages) المواقـع الشخـصيةبالمــصدر مغلقــا المــصدر علــى العامــة سيــسمح بتطويرهــا بــشكل أســرع مــن االحتفــاظ

.لدى راسموس فقط

Page 8: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

8

PHPما هي لغة الـ وقــد طورهــا Rasmus Lerdorf شــخص يــدعىللغــة علــى يــدظهــرت هــذه اخــضعت لــثالث عمليــات تنقــيح حتــى وصــلت إلــى النــاتج الــذي نــراه وأشــخاص آخــرين

. في أيدينا هذه األيام

ــم يــسبق لهــا مثيــل جــدااكــان انتــشارها ملحوظــ 2001فــي أول عــام و وبــسرعة لا الـــرقم فـــي زيـــادة مليـــون فـــي جميـــع أنحـــاء العـــالم وهـــذ5أصـــبحت يـــستخدمها حـــوالي

مستمرة يمكنك متابعتها ومعرفة عدد مستخدميها هذه األيام من خـالل الموقـع الرسـمي لغــة تنــدرج يوهــ php.usage/net.php.www://http لهــا علــى الرابطــة التاليــة

يمكنـك الوصـول للـشفرة المـصدرية أي open source تحت اللغـات مفتوحـة المـصدر . اده توزيعها بدون دفع أي مبلغلها واستعمالها وتعديلها وأع

PHP هــي اختــصار للــنص Personal Home Page ولكنهــا تــم تعــديلهاهـي لغـة نـصوص و.وهي فـي تطـوير مـستمر hyper text preprocessor لتصبح

ب ويمكن تنفيذها ضمن أكود الـ ي للوبرمجية في جانب الخادم وتم تصميمها خصيصاHTMLجـــة أخـــرى ويـــتم تفـــسيرها بواســـطة متـــرجم أو أو تنفـــذ وحـــدها كـــأي لغـــة برم

Compiler لتوليد ناتج عمليات المعالجة وغالبا يتم إخراج الناتج في شـكل صـفحاتHTML .

يعتبــر جــزء مــن البرمجيــات المثبتــة علــى خــادم Compilerهــذا المتــرجم أو الـــ تـــشغيل عديـــدة أنظمـــةيمكـــن تثبيتهـــا علـــى كمـــا . المستـــضيف للموقـــعServerب يـــالو

وأيـضا يمكـن تثبيتهـا مـع خـادم Apache مـع ملقـمةوهـي تعمـل كوحـدة نمطيـة فعاليـ

Microsoft IIS المتوفرة وهي تعمل أيضا مع أغلب قواعد البيانات.

للــوب فــي جانــب العديــد مــن اللغــات تــستخدم للتطــويرأمــا عــن منافــسيها فتوجــد أيــضا Cold fusion. و java server و perl و asp الخادم منها

Page 9: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

9

:المكانة األولى لما يميزها عن غيرها من نقاط قوة منها PHP تحتل الـ

تعتبـــر لغـــةPHP مـــن أســـهل لغـــات البرمجـــة تعلمـــا، فهـــي تريحـــك مـــن جميـــع مـن جهـة، Cتعقيدات إدارة الذاكرة وتعقيدات معالجـة النـصوص الموجـودة فـي مـن جهـة Perlوالكثير مـن الـضعف الموجـود فـي بينيـة وتـصميم لغـة البرمجـة

. أخرى

تمتلك لغةPHPمعظم قواعـد اللغـة مـأخوذة ف، وواضحة جداة بنية وقواعد ثابت لــصنع لغــة برمجــة عاليــة الــسهولة والــسالسة Perl و Java و Cمــن كــل مــن

.دون فقدان أي من القوة في اللغة

لغةPHP من اللغات المعروفة بسرعتها العالية في تنفيـذ البـرامج، حيـث تمـت مـصممة وهـي الروعـة، ى في منتهأداء من الصفر ليعطي PHPمترجم كتابة كنواة لمترجم، بحيث يمكن أن تضع هذه النواة في عـدة قوالـب أو أغلفـة أصال

CGI كبرنـــامج PHPلتعمـــل مـــع التقنيـــات المختلفـــة، فيمكنـــك تـــشغيل متـــرجم فــي IIS علــى مــزود PHP، ولكــن األفــضل هــو إمكانيــة تركيــب متــرجم مــثال، وتوجـــد ISAPIة وحـــدة إضـــافية تـــضاف إلـــى المـــزود عـــن طريـــق دوال صـــور

في صـورة وحـدة خارجيـة، أيضاApacheنسخة أخرى منه تركب على مزود بحيـث تـصبح Apache نـسخة مخصـصة للـدمج مـع شـفرة مـزود وتوجد أيضا

اآلن فـــي نفـــسه، وهـــي الطريقـــة األكثـــر اســـتخداماApacheجـــزء مـــن برنـــامج وهــي الطريقــة التــي تعطـــي UNIXتــي تعمــل علــى أنظمــة مــزودات الويــب ال

، حيــث يــصبح المتــرجم جــزء مــن المــزود، وبالتــالي PHPأفــضل أداء لمتــرجم ــــذاكرة بانتظــــار صــــفحات ــــه ســــيكون محمــــل فــــي ال ليقــــوم بترجمتهــــا PHPفإن

.األخرىبرامج الوعرضها للزوار مباشرة دون التأخير اإلضافي الذي تتطلبه

يــأتي متــرجمPHPبعــدد هائــل مــن الــدوال الجــاهزة االســتخدام فــي جميــع مــزود المجـــاالت، مـــن دوال المعالجـــة الرياضـــية والحـــسابية إلـــى دوال الوصـــول إلـــى

إلـــــى وصــــوال مـــــثالPHP، تــــوفر لــــك دوال FTPقواعــــد البيانــــات ومـــــزودات

Page 10: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

10

Oracle و MS SQL و PostgreSQL و MySQLمــزودات البيانــات ــــدوال نــــات، وهنالــــك أيــــضاوغيرهــــا مــــن مــــزودات قواعــــد البيا مجموعــــة مــــن ال

، ودوال أخــــرى إلرســــال واســــتقبال الملفــــات عــــن بعــــد XMLلمعالجــــة ملفــــات ، وهنالـــــك مجموعـــــة مـــــن الـــــدوال لمعالجـــــة وانتـــــاج FTPباســـــتخدام بروتوكـــــول

جميـع الـدوال الخاصـة بمعالجـة إضـافة إلـى ، ديناميكيـاFlashالصور وملفات . النصوص والمصفوفات

فعلـى الـرغم مـن أن هنالـك الكثيـر مـن نـسخ ابقاكما قلنـا سـ ،PHP التـي يعمـل تـشترك فـي النـواة األصـلية التـي تقـوم كل منها في بيئة مختلفة، إال أنها جميعا

تتـــصرف PHP لـــذا فـــإن جميـــع مترجمـــات PHPبالمعالجـــة الحقيقـــة لملفـــات أنـشأتهي بنفس الطريقة فيما يتعلق بتنفيذ الـسكريبتات، فـإذا كـان الـسكريبت الـذ

فيجـــب أن يعمـــل دون الحاجـــة IIS مـــع مـــزود Windowsيعمـــل علـــى نظـــام ـــى مـــزود ـــه إل ـــد نقل ـــة تغييـــرات عن ـــالطبع تظـــل بعـــض األمـــور Apacheألي ، ب

. وفرها بعض المزودات دون غيرهات التي البسيطة جدا

يـــوفرPHP الكثيـــر مـــن المزايـــا المتقدمـــة، ولكنـــه يـــوفر لـــك الطـــرق المناســـبة المــسموحة االتــصاالتعلــى هــذه المزايــا، فيمكنــك الــتحكم بعــدد لوضــع الحــدود

، أو الحجـــم األقـــصى للملفـــات التـــي يمكـــن إرســـالها عبـــر بقاعـــدة البيانـــات مـــثالالمتــصفح، أو الــسماح باســتخدام بعــض الميــزات أو إلغــاء اســتخدامها، كــل هــذا

. والذي يتحكم به مدير الموقعPHPيتم عن طريق ملف إعدادات

ع مترجم ييمكن توسPHP بسهولة واضافة الميـزات التـي تريـدها إليـه بلغـة C ،وحيـــث أن الـــشفرة البرمجيـــة للمتـــرجم مفتوحـــة فإنـــك تـــستطيع تغييـــر مـــا تريــــده

عمــل مباشــرة لتحــصل علــى النــسخة التــي تناســبك مــن المتــرجم، ويمكنــك أيــضابيتــه الوحــدات اإلضــافية التــي تركــب علــى المتــرجم لزيــادة ميزاتــه والوظــائف الم

بعمـل هـذه المهمـة وتحويـل مـسبقاPHPفيه، وفي قد قام فريـق تطـوير متـرجم إلـى مكتبـات مخصـصة لتـضاف Cكمية ضخمة مـن المكتبـات المكتوبـة بلغـة

Page 11: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

11

إلــــى المتــــرجم، ومنهــــا حــــصلنا علــــى جميــــع الميــــزات التــــي تحــــدثنا عنهــــا مثــــل . XMLالوصول إلى قواعد البيانات ومعالجة ملفات

Page 12: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

12

PHPالـ ملفات لتحريرWindows XPإعدادات ، HTML كما هي ملفات هي ملفات نصية بسيطة تماماPHPملفات

بأي برنامج كتابة نصوص يتيح لك كتابة الملفات PHPيمكنك كتابة سكريبت على النظام ويندوز، ولكن أغلبية Notepad مثل Plain Textالنصية البسيطة

ل عليهم عملية البرمجة عن طريق يستخدمون أدوات أخرى تسهPHPمبرمجي تلوين الشفرات البرمجية، وتسهل عملية البحث عن الملفات واستبدال المقاطع من

، على الرغم من أنك لن تحتاج إلى HomeSiteعدة ملفات في نفس الوقت، مثل يعتبر أمرا PHP في عمل ملفات Notepadالكثير من هذه الميزات إال أن استخدام

ال تتيح فتح Notepad وخاصة في الملفات الضخمة حيث أن مانوعا صعبا لألسطر، فإذا ظهرت لك الملفات الكبيرة، والمشكلة األكبر هي أنها ال توفر ترقيما

فلن تستطيع معرفة السطر 53رسالة الخطأ تشير إلى وجود خطأ في السطر .. 53وحتى من السطر األول إال إذا قمت بالعد يدوياNotepadالمطلوب في

سكريبتات بالبرنامج ال بكتابة البدء، يمكنك 652 ماذا لو كان الخطأ في السطر حسناالمتوفر اآلن إلى أن تحصل على برنامج آخر، يمكنك بالطبع فتح ملفاتك بأي

فهذا ال يعني بأنك ملزم باستخدام Notepadمحرر نصوص، فإذا كتبتها باستخدام Notepad حتى في هذا الملف في جميع ملفاتك أو .

اآلن قم بفتح محرر النصوص الذي اخترته وابدأ بكتابة PHPلعمل ملف بالوسوم الخاصة بها، ثم احفظ PHPالصفحة التي تريدها، وال تنسى إحاطة شفرات

حسب php. االمتدادالملف في أي مكان في دليل مزود الويب الخاص بك وأعطه فحة باستخدام المتصفح وستجد الصفحة وقد تمت مزود، ثم قم بزيارة الصالإعدادات

. ترجمتها وعرضها عليكتذكر بأنك يجب أن تزور الصفحة مرور بمزود الويب، وال يمكنك عرض

.الصفحة عن طريق فتحها كملف خارجي

Page 13: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

13

إال أنني أفضل أن نقوم بتجهيز نظام التشغيل قبل البدء بالتعامل مع صفحات الـ PHP التالية وذلك باتباع الخطوات: الخاص بنظامليزريضع القرص الن Windows في محرك األقراص.

إلى الـاذهب Control Panel وأختار Add or Remove Programs

ها منختارن حسب الشكل أعالهشاشة لنا تظهرInternet Information Services

إن نقــــــــرت علــــــــى Internet

Information Services مرتين وكأنكالعديـــد مـــن ملـــف، ســـتالحظ وجـــودتفـــتح

Frontpage الخــدمات ومــن ضــمنها

2000 Server Extensions للــذين . الفرونت بيجاستخدام يريدون

بعــــــد التحميــــــل يستحــــــسن إعــــــادة تــــــشغيل

Page 14: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

14

.صحيحة رالسيرفالكمبيوتر حتى تكون عملية تثبيت وتعريف

،فــي محــرك األقــراص مجلــد جديــد ســنالحظ ظهــور بعــد إعــادة التــشغيل Cســما ب

Inetpub ه سم ا مجلدهوبداخل wwwroot.

برنـامج الــافـتح Internet Explorer وضـع /localhost://http أن تجـد تحتـوي علـى ملفـات قـد ظهـرت وهـي wwwroot فـي مجلـد الملفـات الموجـودة

.مساعدة

Page 15: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

15

ــــــة ــــــت : مالحظــــــة هام فــــــي حــــــال كنخدم إعــــــــدادات خاصــــــــة بمــــــــزود تــــــــست

Lan Settingsاالنترنيـت فـي خيـار فــــــــــــي لوحــــــــــــة إعــــــــــــدادات االتــــــــــــصال باالنترنيت فيجب إزالة هذه اإلعـدادات حتـــــى تـــــتمكن مـــــن مـــــشاهدة الـــــصفحة

.أثناء عملك على الجهاز

Page 16: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

16

IIS فرريسل ل PHP 4.4.2 لغة الـةفاضإقاعــدة و asp الـــرفر اآلن يــدعم لغــةالخطــوات الــسابقة بنجــاح فالــسيإذا تمــت

: علينا القيام بالخطوات التاليةPHP 4.4.2 فقط ولتحميل Access البيانات

تحميله من الموقع عن طريق هذا الرابط: http://www.php.net/distributions/php-4.4.2-installer.exe

على الشكل التاليبعد تحميل البرنامج من الموقع يظهر لنا:

php-4.4.2-installer.exe

Page 17: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

17

نضغط على البرنامج ونبدأ التحميل.

Page 18: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

18

:Next ثم Standardمن اللوحة التالية نختار

: ثم نعدل المسار حسب الشكلBrowseتظهر لوحة نختار منها

Page 19: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

19

:Nextنضغط

:Nextبعد التعديل حسب الشكل أعاله نضغط

Page 20: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

20

.Next ثم 4 نختار الخيار رقم Windows Xp بما أننا نعمل على

...اآلن تصبح عملية اإلعداد للتحميل جاهزة

. يبدأ التحميل ويظهر لنا العداد الخاص بذلكNextعند ضغط

Page 21: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

21

Page 22: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

22

: على جھازكPHPفحص وتجريب الـ ا يمكننا التأكد من إتمام عملية التحميـل ونجاحهـا مـن خـالل المثـال التـالي حيـث يمكننـ

:وذلك كما يلي. PHP 4.4.2من خالله فتح ملف المعلومات الخاص بـ :نفتح ملف جديد في المفكرة ونكتب به الكود التالي فقط

<? Echo phpinfo(); ?>

: وذلك حسب الشكل التاليphpinfo.phpاآلن نحفظ الملف باسم

..!!الحظ المسار الذي تم حفظ الملف به

:افتح متصفحك اآلن واكتبhttp://localhost/phpinfo.php

:ستظهر لك الصفحة التالية

Page 23: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

23

في اإلصدارات األقدم ستكون بحاجة إلى بعض التعـديالت فـي الملـفphp.ini ـــ ولكــن فــي اإلصــدار . والمحــررات التــي ستــستعملهاphpلتحقيــق التوافــق بــين ال

. ى أي تعديل فهو يقوم بالمطلوب تلقائيا ال داعي إل4.4.2

:زيادة في التأكيد ننشئ ملف جديد على المفكرة ونضع عليه الكود البسيط التالي<? echo "Welcome Azzam"; ?>

php.1وليكن . phpوبالطبع نحفظ الملف بصيغة :نعود إلى المستعرض ونكتب العنوان

http://localhost/1.php

:فتظهر الصفحة على الشكل التالي

Page 24: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

24

.PHPنحن اآلن متأكدين من فعالية الـ

Page 25: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

25

APPSERVتركيب برنامج السريفر الشخصي

: عن طريق الرابط التاليAPPSERVقم بتحميل برنامج http://prog.arccn.net/modules.php?name=Downloads&d_op=getit&lid=3

:ستظهر لك أيقونة البرنامج على الشكل التالي

:عد انتهاء التحميل البرنامج بأيقونةاضغط على

سيبدأ التحميل وأنصحك بعدم تغيير أيا من خيارات معالج التثبيت أي تابع بشكل .روتيني إلى نهاية التحميل

Page 26: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

26

:صفح واكتببعد االنتهاء اذهب إلى المت

:wwwالمسار الخاص بملفاتنا من اآلن وصاعدا سيكون المجلد

سنرى أن ذلك ـ السيرفر ـ ضروري جدا في التعامل مع

تذكر ذلك ... النماذج وربط الصفحات وقواعد البيانات فيمكنك التعامل PHPأما بالنسبة لباقي ملفات الـ .... جيدا

).PHP 4.4.2( شرحه قمع ما سب

Page 27: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

27

PHP دخل إىل الـم HTMLمن الضروري أن أكرر إلى أهمية معرفتك عزيزي الطالب بلغات الـ

قبل دخولك في هذه اللغة، فإذا كنت غير متمكن منهما فأظن أنه حان JAVAو الـ الوقت لكي تحاول التعرف عليهما بشكل جيد ومن ثم تتابع في تعلم هذه اللغة

...الممتعة

علينا معرفتها قبل الدخول في هذه اللغة PHPلف هناك وسوم مهمة لبناء م :وهي

الوسوم زوج ?>php وهو مشابه لوسم ?> و<BODY> في لغة html php<?

?>

وهو يستخدم بنفس الطريقة السابقة ولكنه يكون ?> و <? زوج المختصريحتاج إلى كمية أقل من الكتابة بالطبع، و في وسم البداية، phpبدون الكلمة

.xmlنه يتعارض مع وسوم ولك ةاستخدام زوج الوسوم التالي :

<script language="php" > echo 'Hi It’s My First Page in PHP’; </script>

ولكن هذه الطريقة غير مستخدمة اآلن، حيث أنها تصعب عملية التمييز بين

HTML، وكذلك بالنسبة لبرامج كتابة ملفات HTML وباقي ملف PHPشفرات من التي تعطي تلوينا للشفرة فأغلبها ال يتعرف على هذا النوع من الشفرة ويعتبره جزء

. االعتياديHTMLملف

Page 28: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

28

هو استخدام زوج الوسوم PHPأفضل الطرق السابقة للتحويل إلى وضعية األول بالطبع، حيث أنه األكثر استخدامها، وال يحتوي على أية تعارضات كما أنه

مهما كانت إعداداتها، ولهذا السبب سنستخدمها PHPرجمات يعمل على جميع مت . مقرر الافي جميع األمثلة التي ستجدها في هذ

ـــ يال تحتــو وقــد html مــن نــصوص وكــود وعالمــات ولغــة phpيتكــون كــود ال . htmlعلى نصوص

ــــدادلكــــي يعمــــل الكــــود يجــــب أن يكــــون ــــف امت ــــأي php المل ــــداد أو ب مــــن امت .phtml و php3 مثالphpإمتدادات الـ

جـــري اتـــصاال مباشـــرا مـــع الـــسيرفر هـــذه يطلـــب صـــفحة فـــي اإلنترنـــت ننـــدما ع يقــوم الــسيرفر بتفــسير طلبــك ) يعنــي طلبيــة للــسيرفر( للــسيرفر requestالعمليــة تــدعي

الـــصفحة المطلوبـــة كجـــزء ممـــا يـــسمي إليـــكوالبحـــث عـــن الـــصفحة المطلوبـــة ويرســـل response) لــديك يقــوم بعــدها المتــصفح لــديك بأخــذ اإلنترنــتلمــستعرض ) اســتجابة

لكــــي يــــصبح صــــفحة صــــالحة ) compile( ارجــــع إليــــه ويقــــوم بتجميعــــه الــــذيالكــــود ) client to server(للعـرض هـذه العمليـة التـي حـصلت تـشبه نظريـة العميـل للخـادم

. بحيث أن المتصفح هو العميل والخادم هو السيرفر

البيانـــــات بينمـــــا يقـــــوم العميـــــل الخـــــادم يقـــــوم بعمليـــــة تخـــــزين وترجمـــــة وتوزيـــــع . البياناتواحضاربالعبور إلى السيرفر ) لديكاإلنترنتمستعرض (

Page 29: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

29

:مالحظة على الكتابة

الفاصلة المنقوطة، وطبعا) ;(يجب أن نكتب في نهاية كل سطر الرمز التالي وحلقات التكرار مثل ifستثناءات لكل قاعدة، فالمعامالت الشرطية مثل إيوجد

while كان السطر طويال إن ال نضع لها فاصلة منقوطة في نهاية السطر، أيضا بدون األسطر تفرق أن وأردتبحيث ال يمكن مشاهدته على الشاشة بشكل كامل

السطر أويبد) ;(وجود دالة في بداية السطر الثاني فيمكن أن ينتهي السطر بدون .الثاني كتكملة للسطر السابق

Page 30: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

30

PHPاملتغريات يف الـ أي هو وعاء يمكن أن . عن مكان أو محتوى تضع فيه قيمةعبارة هو المتغير

كيف نقوم بتعريف إذن). بيانات(هو مكان نحفظ به قيمة ف يحتوي على قيم معينة بتعريف متغير عن طريق نقوم PHPفي لغة ! متغير؟ وكيف نحدد قيم المتغير ؟

القيمة على ويحتوي name اسمه رامتغي نعرف أن نريد أننا لو قلنا فمثال$ الرمز :فسوف نقوم بالتالي) أمين(

$name = "أمين";

نعني ، حدودلها PHP المتغيرات في لغة أسماء يجب عليك االنتباه بأن لكنوقد األمر لنقوم بتسهيل ، غير مسموحه لتعريف المتغيراتوأحرف أسماءبذلك انه يوجد

.فقط) _(و ) أرقام(و ) أحرف ( وهوسنذكر المسموح منها

:مثال<html dir="rtl"> <?

$name = "أمين القاسم";

echo $name; ?>

Page 31: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

31

يمكن Numbers ي المتغيرات الرقميةأما ف، Textذا في حالة المتغيرات النصية ه : كالتالي)20(الذي يحمل القيمة ) Counter(تعريف متغير

<? $Counter = 17; ?>

تكـون فاإلجابـةمـاذا وضـعنا عالمـات التنـصيص هـذه؟ وهذه نقطة مهمـة وهـي لهي أن القيمة التي وضـعناها حرفيـة أي تتكـون مـن نـصوص وهنـاك أنـواع للمتغيـرات

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

.وضع عالمات التنصيص في تعريف المتغيرات النصية

:نقاط هامة في تسمية المتغيرات حـــرف ســـواء 255 المتغيـــرات فـــي كثيـــر مـــن لغـــات البرمجـــة ال تتعـــدى أســـماء

ال يوجــد حــدود PHP، وفــي لغــة الـــ أخــرىرقــام أو عالمــات أكانــت حــروف أو لن تحتاج إلى اكثر على عدد الخانات في تسمية المتغيرات، ولكن في الغالب

خانـــة لتـــسمية أي متغيـــر، الن المبالغـــة فـــي تـــسمية المتغيـــرات تـــسبب 15مـــن . من قيمتحتويهمشاكل في تذكر المتغيرات وما

(أو عالمــة ) يعنــي حــرف هجــائي(بدايــة كــل متغيــر يجــب أن تبــدأ بحــرف_ (Underscore ال تحسب من اسم المتغيرألنها$ ، مع تجاهل عالمة الـ .

فقــط، ) _( أو عالمــة األرقــام أن يحتــوي اســم المتغيــر علــى الحــروف أو يمكــنال يمكن كتابتها في اسـم & أو الـ /) , * , -, (+ العالمات األخرى مثل أما

.المتغير

المتغير)Name$ ( يختلف عن المتغيـر)(name$ الخـتالف حالـة حـرف الــ N وث مــشاكل فــي مــن اســم المتغيــرات بدقــة لتجنــب حــدالتأكــد، ولــذلك يجــب

خــاص فــي تــسمية أســلوب لــو كــان لــديك وبالتأكيــدالوصــول إلــى متغيــر معــين،

Page 32: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

32

ســــهل أات ت وتــــذكرها ســــتكون كتابــــة الــــسكربإليهــــاالمتغيــــرات لــــسهولة الوصــــول .بكثير

المتغيرات دالة على معانيها، بمعنى أنه لمتغير مثل أسماءيستحسن أن تكون ولمتغيــر مثــل اســم المــستخدم ،)$counter(عــداد الــزوار يستحــسن أن يكــون

)user$ .. ( الخ.

:التعامل مع المتغيرات

فائــدة المتغيــرات تكمــن فــي طريقــة اســتخدامها فــي كتابــة الــسكربت، وكمــا ذكرنــا :كما يلي) print(أو ) echo( الطباعة أمرسابقا أنه لطباعة متغير معين نستخدم

<? $name = "Azzam"; echo $name; ?>

، وفــــي الــــسطر )$name( إلــــى المتغيــــر (Azzam) القيمــــة إســــناديــــة ســــيتم فــــي البدا . القيمة المسندة إلى المتغيرباألحرىالثاني يتم طباعة المتغير، أو

:إذا طبقنا السكريبت السابق سنجد الناتج على الشكل التالي

Page 33: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

33

وال . والحـظ أيـضا المـسار الـذي كتبنـاه فـي المتـصفحphp.1الحظ أننا أسمينا الملـف .C:\Inetpub\wwwroot: ننسى أبدا أننا نقوم بتسجيل ملفاتنا في المجلد

:مثال على القيمة العددية

<? $Counter = 20; Print $Counter; ?>

Page 34: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

34

البياناتأنواع

الفـرق ا قيمتـين عدديـة ونـصية إلـى متغيـرين، وبينـبإسـناد السابقة قمنا األمثلةفي ال و بـشكل عـام يوجـد أكثـر مـن هـذين النـوعين مـن البيانـاتPHPبينهما، وفي لغة الــ

يقـوم بـالتعرف عليهـا لكـي يـتم PHPيتم تعريف نوعها من قبل المبـرمج إنمـا متـرجم الــ . عليهاالمختلفةإتمام العمليات

أرقــامinteger = أرقــام , string= نــصوص : مــن المتغيــرات وهــيأنــواع عــدة لــدينا. object= كــائن , array = مــصفوفة , Booleanر المتغيــ , Double= عــشريه

أمـــا بـــاقي . وســـوف نتنـــاول اآلن الحـــديث عـــن البيانـــات النـــصية والعدديـــة بـــشكل عـــام .األنواع فسنتركه لمراحل متقدمة

: والعدديةالبيانات النصية

، محتواهـابغض النظر عـن " " هي البيانات التي تكون بين عالمات التنصيص : أو رموز أو غيرها، ومثال ذلك كما ذكرنا سابقاأعدادوف أو فيمكن أن تكون حر

<? $name = "Ammar"; $number = "5.5"; ?>

المتغيرات التي تحتوي على بيانات نصية مع متغيرات من نفس النوع نحتـاج إلضافة : إلى عملية دمج بين المتغيرات، ولعمل ذلك نكتب

<? $total = $name . $number; ?>

Page 35: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

35

وضـع مـسافة أردنـا واذا$total إلـى المتغيـر الـسابقة القـيمإسنادفي هذه الحالة سيتم ثــم نقــوم ) $space(بــين المتغيــرين نــضيف متغيــر جديــد يحتــوي علــى المــسافة وهــو

:كالتاليبين المتغيرات بعملية الدمج <? $space = " "; $total = $name . $space . $number; ?>

:لعامة على الشكل التاليوتصبح الصيغة ا<? $name = "Ammar"; $number = "5.5"; $space = " "; $total = $name . $space . $number; Print $total; ?>

:والناتج

:يمكننا أيضا وضع المسافة بين الكلمات بالطريقة التالية<? $name = "Ammar"; $number = "5.5";

$total = $name . " " . $number;

Echo $total; ?>

Page 36: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

36

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

.المتغيرقبل اسم $ عالمة تقوم هذه وسوف ;gettype($var) الدالة باستخدام تقوم أن وهو بسيط جداواألمر :ل على ذلكالنأخذ مثو . بطباعة نوع المتغير الموجود لديكالدالة

<? $name = "Ammar"; $number = 5.5; Print gettype ($name); print "<br>"; print gettype ($number); ?>

: وسوف يكون الناتج كما يلي

الكــــسرية األعــــداد( و) Integerلــــصحيحة ااألعــــداد(نــــوعين لهــــا البيانــــات العدديــــة وDouble(وكمثال على النوعين ،:

<? $integer1 = 233; $integer2 = -29; $double1 = 5.27; $double2 = -4.6; ?>

Page 37: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

37

امــالتـاملع ):Numeric(التعامل مع البيانات العددية

بية، الحـــسا المعـــامالت وهـــي PHP فـــي لغـــة المعـــامالت مـــن أنـــواع ثـــالث لـــدينا . وسوف نتكلم عنها بالتفصيلالمنطقية المعامالت المقارنة،معامالت

:الحسابيةالمعامالت

:االعتيادية الحسابيةالمعامالت

المعامل االسم مثال المثال نتيجة

+ جمع 1+1 2

- طرح 1-1 0

* ضرب 3*2 6

/ قسمه 6/2 3

القسمه باقي 10%3 1 %

:إضافية ةمعامالت حسابي

المعامل مثال تساوي

$x = $x + 5 $x +=5 +=

$x = $x - 5 $x -=5 -=

$x = $x * 5 $x *= 5 *=

$x = $x / 5 $x /= 5 /=

$x = $x % 5 $x % = 5 %=

$x = $x + 1 $x++ ++

$x = $x - 1 $x-- --

Page 38: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

38

كواد وسوف ترى كيفية سـهولة عمـل بعـض مـن تمـارين العمليـات لنقم بكتابة بعض األ :االعتيادية الحسابية

<?

$x = 7;

$y = 3;

العمليات//$a = $x + $y;//عملية الجمع

$b = $x - $y;//عملية الطرح

$c = $x * $y;//عملية الضرب

$d = $x / $y;//عملية القسمة

$e = $x % $y;//عملية القسمة مع باقي

Print $a;

print "<br>";

Print $b;

print "<br>";

Print $c;

print "<br>";

Print $d;

print "<br>";

Print $e;

print "<br>";

?>

:فتظهر لنا النتائج على النحو التالي

Page 39: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

39

:واذا أردنا رؤية الناتج كعملية حسابية

<?

$x = 7;

$y = 3;

العمليات//$a = $x + $y;//عملية الجمع

$b = $x - $y;//عملية الطرح

$c = $x * $y;//عملية الضرب

$d = $x / $y;//عملية القسمة

$e = $x % $y;//عملية القسمة مع باقي

Print $x."+". $y. "=" .$a;

print "<br>";

Print $x."-". $y. "=".$b;

print "<br>";

Print $x."*". $y. "=".$c;

print "<br>";

Print $x."/". $y. "=".$d;

print "<br>";

Print $x."%". $y. "=".$e;

?>

Page 40: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

40

رة واضـحة اآلن بالنــسبة للعمليـات العاديــة أمـا العمليــات اإلضـافية فــسيتم أصـبحت الفكــالتعامل معها في سياق المادة وفـي الموضـع المناسـب لهـا إال أننـي سـأدرج مثـال لفهـم

.المغزى منها

المتغيــر إلــى نفــسه، بمعنــى تعريــف عمليــة حــسابية علــى إضــافة النقــاط هــي أول لــو كــان لــديك عــدد الــزوار س المتغيــر، مــثالمتغيــر معــين بحيــث تخــزن القيمــة فــي نفــ :، يمكنك كتابة ما يلي1وتريد في كل مرة أن يزود عدد الزوار بـ

<? $counter = $counter + 1; ?>

بت، ي في كل مرة يتم فيها تنفيذ الـسكر1بـ ) $counter( بالتالي سيتم زيادة المتغير :ليوبطريقة أخرى يمكن كتابة السطر السابق كالتا

<? $counter = $counter++; ?>

Page 41: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

41

ـــ ـــ ) 1 ( قــدرهاتعنــي زيــادة ++ وال تعنــي --علــى قيمــة المتغيــر األصــلية، وكــذلك ال . من القيمة األصلية 1طرح

الطريقـة بأسـلوبعلـى أي متغيـر ) غير الواحـد(وفي حالة الرغبة بزيادة أي عدد أخر : الثانية يمكن كتابة ما يلي

<? $counter +=4; ?>

علـــى قيمـــة المتغيـــر األصـــلية، وبالـــسالب كـــذلك بـــنفس 4وهـــذا يعنـــي زيـــادة مقـــدارها .األسلوب

Page 42: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

42

:المقارنةمعامالت

المعامل المعنى

= = يساوي

=! يساوي ال

= = = النوع يساوي ومن نفس

< من اكبر

=< ويساوي اكبر من

> من اصغر

=> ويساوي اصغر من

:المعامالت المنطقية

النتيجة االسم يكون صحيح عند مثال المعاملtrue true || false أو الطرفين صحيح أحد ||

true true OR false أو الطرفين صحيح أحد OR

false true && false && و الطرفين صحيحه كل

false true AND false AND و الطرفين صحيحه كل

false true xor true يس االثنانالطرفين صحيح ول أحد xor xor

false !true ال الطرف ليس صحيح !

Page 43: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

43

عنــد اســتخدام المعــامالت يقــوم المتــرجم بــالقراء مــن اليمــين إلــى اليــسار فــي الحــاالت ولكــن تخيــل لــدينا اكثــر مــن معامــل فــي ســطر ، وعنــد اســتخدام معامــل واحــدالعاديــة

،أخــذ مثــال علــى ذلــك لناألهميــة،برمجــي واحــد؟ هنــا يقــوم المتــرجم باالختيــار حــسب :التالية العملية لديك أنتخيل

تخيـل ولكـن 12 غمـوض وهـو أي النـاتج ؟؟؟ النـاتج واضـح ولـيس بـه وفما ه 8 + 4 20؟ الجـواب هـو الحـسابية العمليـةفمـا هـو نـاتج 2 * 8 + 4 التاليـة ة العمليلديكلو بإجبـار المتـرجم قـومن أن ويمكـن الجمـع ثـم عمليـة أوالن المترجم قـرأ عمليـة الـضرب أل

.األقواس باستخدام أوال عملية الجمع ةعلى قراء

بمعنى أخر يجب أن نفرق بـين العمليـات الحـسابية البـسيطة والمعقـدة وطريقـة التعامـل .مع كل منها للوصول إلى النتائج السليمة

هي المعامالت التي وماب حسب األهميةرتيالت التالي سوف تقوم بمعرفة الجدولفي )األسفل إلى األعلىمن (األخرى بشكل تلقائي قبل تنفذ

المعامل

++ , -- , (cast)

/ , * , %

+ , -

< , <= , => , >

= = , = = = , !=

&&

||

= , += , -= , /= , *= , %= , .=

AND

xor

OR

Page 44: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

44

الثوابت

اج إلى هذه نحتو ، مهما حصلبداأتغير ت وال ات متغيرهيالثوابت يمكننا القول أن لدينا أن تخيل :في أمور عديدة على سبيل المثال ال الحصرالنوع من المتغيرات

وال تتغير فسوف نقوم بوضعها في ثابتة األسعار وهذه ، بعض من منتجاتناأسعار .define ('var' , value) التالية بالطريقة الثوابت

وم بطباعة الثابت أو استخدامه ال نقأن انه عندما نريد والثوابت بين المتغيرات الفرقف الممنوع استخدامها في األسماءمن وأيضا ،بداأفي الثابت $ عالمةنقوم بوضع لتعرف ول وال تتغير ثابتة وهي اللغة، المعرفة في نفس الثوابت PHPمتغيرات لغة

على هذه الثوابت اكتب الصيغة التالية ومن ثم استعرض الملف الذي سيظهر على ستجد معلومات كثيرة بداخله وما يهمنا هنا هو القسم المتعلق بـ ... فحالمتص

Variablesفهو مهم جدا وسيتم سؤالك عن بعض المعلومات فيه : <?

phpinfo();

?>

Page 45: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

45

:بعض الدوال الهامة :بعض الدوال الهامة في التعامل مع المتغيرات

isset :وهي دالة للتأكد من وجود متغير معين، فمثال:

<? echo isset($age); ?>

، مــــسبقا إنــــشاءه تــــم أيموجــــودا ) $ age( إذا كــــان المتغيــــر 1ســــيتم طباعــــة الــــرقم كثيـرا ، وهـذه الدالـة يـتم اسـتخدامها0والعكس إذا كان غيـر موجـود سـيتم طباعـة الـرقم

.في الشروط

unset : التاليهذه الدالة تعمل على مسح المتغير من الذاكرة كليأ، فقط قم بعمل:

<? unset($age); ?>

.بشكل كامل) $age(وفي هذه الحالة سيتم مسح المتغير

empty : وهذه الدالة معاكسة للدالةissetبحيث لو كتبنا :

<? echo empty($age); ?>

ــــرقم ــــر 1ســــيتم طباعــــة ال ــــة عــــدم وجــــود المتغي ــــي حال أو أن قيمــــة ) $age( فــ)فــراغ( أو 0المتغيــر تــساوي لــن يــتم طبـــاعة أي ) $age(ة وجــود المتغيــر ، وفــي حال

.ءشي

Page 46: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

46

PHP يف الـ لوقت والتاريخدوال امثال فالمستخدم يريد ، لبناء ويب متكامل جداالمهمة األشياءالوقت والتاريخ من

فصاحب الويب يريد معرفة ....وأمعرفة تاريخ اليوم أو تاريخ نشر المقال أو الخبر . إلى الموقعرسالة إرسالهأو تاريخ دخوله وتاريخ تاريخ تسجيل مستخدم معين

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

.الناتج المراد الدالة وهذه ()date الدالةستخدم وتنسيقه نوايجادهلكي نقوم بطباعة التاريخ والوقت

.عملها سهل جدا :الحظ التاليو ة افتراضيواألخرى أساسية ةأخذ قيمتين واحدن

date(string format);

: طباعة تاريخ اليوم سنقوم بالتاليأردنافلو <? echo date('jS F Y'); ?>

:وسوف يكون الناتج هو التالي

. التاريخ والوقتإلنشاء المستخدمةموز الرحلل الصيغة السابقة من خالل

:وهذه الرموز هي مثال المعنىالرمز

a ء أو مساصباحا الوقت am , pm

Page 47: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

47

A ء أو مساصباحا الوقت AM , PM

d 31 إلى 01 من صفراألولى الخانة من خانتينأرقامعلى شكل الشهر في اليوم

D من وفثالث خانات مختصر على شكل حر الشهر في اليوم mon إلى sun

F مكتوب كامال ةالسن في الشهر September

g 12 إلى 1 من ساعة 12على مدى اليوم في الساعة

G 23 إلى 0 من ساعة 24 ىعلى مد اليوم في الساعة

h 12 إلى 01 من ساعة 12على مدى اليوم في الساعة

H 23 إلى 00 من ساعة 24على مدى اليوم في الساعة

i 59 إلى 00 من الساعة في ائقالدق

I 0 مساء , 1 نهار مساء أو نهار

j 31 إلى 1 من من غير صفرأرقامعلى شكل الشهر في اليوم

l مكتوب كامال على شكل حروف , الشهر في اليوم Monday

L 0 كبيسة غير , 1 كبيسة الكبيسة ةالسن

m 12 إلى 01 من على شكل خانتان بدأ من الصفرة السن في الشهر

M على شكل ثالث خانات حروف ةالسن في الشهر Jan

n 12 إلى 1 من على شكل خانتان ال يبدأ بالصفر ةالسن في الشهر

s 59 إلى 00 من على شكل خانتان بدأ من الصفر الدقيقة في الثواني

S لألحرف االختصارات TH , ST , ND

t 31 إلى 28 من في الشهر األيام مجموع

U UNIX المسمى بي1970من تاريخ الثواني عدد عمجمو

TIME STAMP

w أرقامعلى شكل األسبوع في اليوم Sunday => 0 , Saturday

=> 6

y 05 , 98 , 99 رقم من خانتان شكل على ةالسن

Y 2005 , 2000 خاناتأربعرقم من شكل على ةالسن

z 365 إلى 0 من أرقامعلى شكل ةالسن في اليوم

:استخدامهاكيفية و ()getdate دالةال

Page 48: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

48

وتقوم UNIX TIME STAMP بإعطائها التاريخ على شكل الدالة هذه تستخدم مصفوفة شكل تقوم بإرجاع التاريخ على الدالة هذه ،بإرجاعه على شكل عادي

.حرفيه

: في الجدول التاليالمصفوفة لهذه المفتاحkey value

seconds أرقام ـ الثواني

minutes أرقام ـ الدقائق

hours أرقام ـ الساعات

mday أرقام في الشهر ـ اليوم

wday أرقام في األسبوع ـ اليوم

mon أرقام ـ الشهر

year أرقام ـ السنة

yday أرقام في السنة ـ اليوم

weekday شكل نص كامل على في األسبوع ـ اليوم

month كامل على شكل نص ـ الشهر

Page 49: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

49

مثال

<? Echo gmdate ("M D Y"); ?>

الحظ أننا استخدمنا عالمات التنصيص لكي تنجح العملية عندما قمنا باستخدام أكثر

من عامل في الدالة

:جرب استخدام الكود التالي

هذا سوف يعرض لك اليوم والتاريخ والساعة<? Echo gmdate ("D, d M Y H:i:s") ?>

Page 50: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

50

العبارات الشرطيةوأن مرت هذه العبارة في العديد من مقرراتنا الدراسية ولكني سأعيد صياغة سبق

للتميز بين IFتستعمل عبارة . مفهومها بطريقة أرجو أن تكون مختلفة هذه المرةناتجين لعملية ما فإذا توافقت القيمة مع الشرط أدى ذلك إلى تنفيذ أمر ما، أما في

أيواة ـ سمها ما شئت ـ سيتم تنفيذ أمر أخر حال عدم التوافق أو التطابق أو المساوبشكل عملي . لم يتحقق افعل كذا وكذاواذا ، افعل كذا وكذاالمعينإذا تحقق الشرط

: كالتالينمثلها :IF الشرطية العبارة

IF condition is true )إذا كان الشرط صحيحا( {

excute this code )قم بتنفيذ هذا الكود(

} .كـان الـشرط صـحيحافـي حـال فقـط { و } ي بـينذتنفيذ الكود ال بPHPسيقوم الـ

. الكود الذي يليه أما إذا لم يكن صحيحا فسيقوم بتجاوزه وتنفيذويمكنــك أيــضا أن تقــوم بجعلهــا بــسطر واحــد وال تــستخدم األقــواس بــل تكتــب األمــر

:مباشرةIF condition is true excute function;

إذا كان الكود يتكون من عـدة أسـطر أمـا إذا { و }ام الحظ أنه البد من استخد .كان يتكون من سطر واحد فال داعي الستخدامها

:األمثلة مع الصورةوضح نسوف

Page 51: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

51

)1(مثال<?

$mood="سعيد";

if($mood=="سعيد")

{

print"أهال أنا في مزاج جيد ";

} ?>

هل هذا معناه ا،ا عنه سابقالذي تكلمن (==) المقارنة استخدمنا عامل أنناالحظ (=) عن العالمه ؟ ال تنسى انه يختلف تمامااأليسر يساوي الطرف األيمنالطرف يستخدم (==) نة ولكن معي بقيمةمعناها تعيين أو تعبئة متغير (=) فالعالمة ،لوحدها .في حال عدم المطابقة لن يظهر شيء على الشاشة. األطرافلمقارنة

)2(مثال

<?

$S=20;

if ($S=20) echo 15;

?>

Print أو echoالحظ أنه يمكننا استعمال

Page 52: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

52

:ELSE الشرطية العبارة إذا وتعني ELSE العبارة أما في شيء واحد التحكم نستطيع فقط الشرطية IF في

تم كتابته وت ...التالي لم يتحقق قم بعمل واذا ...تحقق هذا الشرط قم بعمل التالي :التالية الكتابة الحظ طريقة البرمجية األسطر بعض إضافة مع لىاألونفس الطريقة ب

If condtion is true { Excute code } Else { Excute other code }

وهي تقوم بالتحقق من الشرط فإذا وجدته صحيحا قامت بتنفيذ الكود األول واذا لم . تجده صحيحا ستقوم بتنفيذ الكود اآلخر

:البسيط التالي لتوضيح الفكرةمثال سنأخذ ال

<? $age=12; If ($age>18) {

echo "مرحبا بك في عالم الترفيه والمتعة" ;

} else {

echo "ممنوع دخول األطفال للموقع" ;

} ?>

.18الحظ بأن العمر كان أصغر من .18ولكن إذا كان العمر أكبر من

Page 53: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

53

<? $age=22; If ($age>18) {

echo " بك في عالم الترفيه والمتعةمرحبا" ;

} else {

echo "ممنوع دخول األطفال للموقع" ;

} ?>

:ويمكننا أيضا استخدام الهيكلية التالية

If condtion is true { Excute code } Elseif { Excute other code } Else { Excute other code }

ن أي شرط من الشروط صحيحا سيتم وهي تقوم بتطبيق أكثر من شرط فإذا لم يك

.elseتنفيذ الكود الذي يقع بعد كلمه

Page 54: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

54

:مثال<html dir="rtl"> <?

$mood="حزين";

if($mood=="سعيد")

{

print"أهال أنا في مزاج جيد ";

}

elseif ($mood=="حزين")

{

print"تشجع فالحياة جميلة";

} else {

print"لست سعيد وال حزين ولكنك $mood";

} ?>

$mood="غير في القيمة ;"حزين .والحظ الفرق في الناتج

Page 55: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

55

:مثال<? $h="Azzam"; $f=64; If ($h == "Azzam") { If ($f== 64) {

echo "االسم والرقم صحيحين";

} else {

echo ("الرقم غير صحيح");

} } else {

echo "اسم تسجيل الدخول غير صحيح" ;

} ?>

.غيير القيم الخاصة باالسم والرقم وشاهد النتائجحاول تالــدوال الــشرطية حيــث يقــوم بــإجراء اختبــار علــى لتــداخل هــذا مجــرد مثــال بــسيط جــدا

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

.طباعة عبارة الفشل في االجتياز

Page 56: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

56

عبـارات التكرار ســـابقا أخـــذناالتكـــرارات عبـــارة عـــن تكـــرار أمـــر معـــين بعـــدد معـــين مـــن المـــرات ولقـــد إال عندما تنفذالعبارات الشرطية فوجدنا أن الكود الذي نكتبه في العبارات الشرطية ال

ارت فهـي تختبـر الــشرط فـإذا كانـت قيمتـه صــحيحة يــضا التكـروأيكـون الـشرط صـحيحا فإنها تقوم بعمل الكود المطلوب ثم تقوم بإعادة اختبار القيمـة فـإذا كـان صـحيحا فإنهـا تقوم بإعادة تنفيـذ الكـود وهكـذا، أمـا عنـدما ال يكـون الـشرط صـحيحا فإنهـا تتوقـف عـن

: هيأنواع من التكراراتهناك ثالثة ... البرنامج بشكل عاديإكمالتنفيذ الكود ويتم whileالتكرار do - whileالتكرار FORالتكرار

whileإن أول دالة نقوم بأخذها في البداية هي الدالة

تخيل انك تريد WHILE على طريقة كتابة عبارة التكرار األمثلةلنأخذ بعض ريد تكرار وماذا لو كنا ن كتابته؟ ك كم سطر سيتطلب من5 إلى 1 من األرقامطباعة

... سطر100

: لكي تساعدنا على تسهيل كتابة الكودWHILEهنا تأتي فائدة عبارة التكرار <? $x=1; while ($x<=5) { echo ($x); echo ("<br>"); $x++; } ?>

مـن غيـر 100 إلى 1 من األعدادقوم بكتابة ن أنحاول لن؟ اآلن قمنا بكتابته كم سطرانقـــوم بـــذلك أن ولكـــن مـــع التكـــرار يمكـــن ...!! ســـنحتاج، كـــم ســـطراســـتخدام التكـــرار

.األسطر للمثال السابق بنفس عدد الناتجوسوف يأتيك <?

Page 57: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

57

$x=1; while ($x<=100) { echo ($x); echo ("<br>"); $x++; } ?>

:الكود اآلنشرح نستكـرار وبعد ذلك نقوم بكتابة دالة الx واسمه 1قمنا بتعيين متغير توجد به القيمة : أوال

المتغيــــر بطباعــــةم نقــــوم ثــــ100 قــــل مــــن أو يــــساويأ x يكــــون المتغيــــر أنوشــــرطها نقوم بزيادة المتغير بواحد ونرجـع إلـى خيراأالموجود لدينا ونطبع سطر جديد للترتيب و

أخـرى مـره الطباعـة يقوم بفعل كان صحيحا إذا الأم لنرى هل الشرط صحيح األعلى .خروج من البرنامج يقوم بال لم يكن صحيحاواذا :مثال : ؟ الجواب هو الكود التالي100 إلى 1 من األعدادهو ناتج جمع ما

<? $x=1; $total = 0; while ($x<=100) { $total = $total + $x; $x++; }

echo "الناتج";

echo ("<br>"); echo $total; ?>

.أرجو أن تقوم بشرح الصيغة السابقة do - whileالتكرار

هــــذا التكــــرار يعمــــل بــــنفس طريقــــه التكــــرار األول إال أنــــه يوجــــد بعــــض االختالفــــات :كالتاليالبسيطة وصيغته

Page 58: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

58

Do { do this code; } while (expression);

: مثال<? $f=15 ; do { echo $f; $f++; } while ($f < 10) ; ?>

الـشرط باختبـارال ثـم يقـوم بتنفيـذ سيقوم التكـرار بتنفيـذ الـسطر الموجـود بـين القوسـين أو

فإذا كان الشرط صحيحا قام بإعادة العملية الموجـودة بـين القوسـين وهـي إضـافة واحـد الحـظ أننـا فـي .. يكون الشرط غير صـحيح فيـتم التوقـفحتى وهكذا f$على المتغير

منـا التكرار األول قمنا باختبار الشرط قبل صناعة أي عمـل بينمـا فـي التكـرار الثـاني ق .بتنفيذ الكود أوال ثم قمنا بإجراء االختبار

Page 59: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

59

:FORالتكرار يختلف هذا التكرار عن سابقيه لكن وظيفته هي نفس وظيفتهما وهي تكرار األوامر

.عند حصول شي معين

: الصيغة

For (counter عداد ; test value اختبار القيمة ; set counter أداء عمليه على ( العداد{

code شفرة

}

:مثال<? For ($u = 18 ; $u>10 ; $u--) { echo $u."\t\t"; } ?>

القــسم األول نــضع فيــه متغيــر يحتــوي .... يتكــون هــذا التكــرار مــن ثالثــة أقــسام علــى قيمــة حيــث ســيبدأ التكــرار العمــل مــن عنــد هــذه القيمــة والقــسم الثــاني نكتــب فيــه

Page 60: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

60

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

.تكرار ثم نقوم بكتابة كود التي سيقوم بتنفيذها التكرار بين القوسين

القيمـة u$ بشكل عامي أن يقـوم فـي البدايـة بإعطـاء المتغيـر phpكأننا نقول للـ يقوم بتنفيذ الكود عليـه أن يقـوم بتحليـل الـشرط فـإذا كـان الـشرط صـحيحا أنل وقب18

u$ يــصبح المتغيــرحتــى ويــتم تنفيــذ الكــود u$فإنــه يقــوم بإنقــاص واحــد مــن المتغيــر يلـــي آنـــذاك بــالخروج مـــن التكــرار والـــذهاب إلــى الكـــود الــذي PHP فيقـــوم الـــ9قيمتــه .القوسين

Page 61: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

61

PHPالصور يف لغة الـ لك ح بل يسمphp أو html ملفات إصدار ال يقتصر على php لغة استخدام

. ثابتة أو متحركة بإنشاء الصور بأنواعها سواء كانت أيضا

واالسم الكامل لها هو GD لعمل هذه الصور وتسمى مكتبة خاصةتوجد مكتبة )GD Library .(األنواع مع ة متوافقي وهة كثيرإصدارات الهو JPEG و GIF و

PNG .الطريقةلها تعمل بنفس كو.

JPEG:

نستخدمها و). Joint Photographic Experts Group(هي اختصار لـ . وتدرجاتة كثيرألوان الصورة إذا كانت في مفيدة حفظ الصور وهي أردنا إذا كثيرا التي واألجزاء ليست جيده عند استخدام رسوم الخطوط والنصوص النوعيةهذه

.تحتوي على لون جامد واحد

PNG:

النوعية وخصائص هذه (Portable Network Graphics)وهي اختصار لـ أنوسبب هذا البديل هو . GIF ة للنوعي وهي تعتبر بديالGIF مع النوعية متماثلةPNG من النوع ةكثر جودأ GIF .

GIF:

وتستخدم في مواقع (Graphics Interchange Format) اختصار لـ وهي .المتحركة من خاللها وتستطيع عمل الصور يفةخف ألنها تاالنترني

Page 62: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

62

وتسهل علينا العمل جدامفيدة خطوات وهي 4 نتبع PHP الصور في لغة إلنشاء المراد العمل عليها الخلفية إنشاء .1 الخلفيةرسم المجسمات أو الكتابات على هذه .2 تصدير هذه الصور أو العمل .3 تنظيف العمل .4

: لنفهم كيفية العملالطريقة لنقم بعمل مثال بسيط على هذه<? $height = 200; $width = 200; $image = ImageCreate ($width , $height); $white = ImageColorAllocate ($image , 255,255,255); $black = ImageColorAllocate ($image , 0 , 0 , 100); @imageFill ($image , 0 , 0 , $black); @imageLine ($image , 0 , 0 , $width, $height , $white); @imageString ($image , 8 , 50 , 150, 'Azzam', $white); header ( 'content-type: image/png' ); @imagepng ($image); ?>

:بعد تنفيذ هذا العمل سوف يكون الناتج هو التالي

Page 63: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

63

وهناك طريقتين لعمل هذه ، ليها صوره لنقم بالرسم عإنشاء عمل قمنا بفعله هو أول وهي تأخذ مدخالن العرض والطول ImageCreate الدالة باستخدام األولى الطريقة

التي قمنا بعملهاالصورةبالترتيب وسوف تقوم بإرجاع لدينا بأي نوع كانت مسبقاموجودة خلفية العمل من صوره إنشاء هي الثانية الطريقة أو ImageCreateFromJpeg أو ImageCreateFromPng الدالة باستخدام

ImageCreateFromGifالتي نريد الصورةذ مدخل واحد وهو اسم خ وهي تأ .العمل عليها

األلوان باختيار نقوم أن يجب أوال الصورة، التي نريدها على األشكالرسم نبعد ذلك ن ويمكواألزرق، واألخضر األحمر وهي ألوان 3 مكونه من وهي التي نريدها

4 وهي تأخذ ImageColorAllocate الدالة عن طريق األلواناستخدام هذه وقد عملنا في وهذه واألزرق األخضر واللون األحمراللون ومدخالت وهي الصورة

. تقوم بإرجاع اللون الذي سنستخدمه الحقاالدالة$white = ImageColorAllocate ($image , 255,255,255); $black = ImageColorAllocate ($image , 0 , 0 , 100);

الصورة، : إليهاربع نقاط نحتاج أ هو رسم ما نريد ويكون على الثانية الطريقة : ويمكننا مشاهدة عملنا في مثالنا هنا. معلومات النص، اللوناإلحداثيات،

@imageFill ($image , 0 , 0 , $black); @imageLine ($image , 0 , 0 , $width, $height , $white); @imageString ($image , 8 , 50 , 150, 'Azzam', $white);

: مدخالت وهي4 وتأخذ الصورة ةبتعبئ تقوم ImageFIll الدالة . الصادي واللونواإلحداثي السيني واإلحداثي الصورة : مدخالت وهي6 تقوم برسم خط وتأخذ ImageLine الدالة

السينياإلحداثينهاية و الصادي اإلحداثيبداية و السيني اإلحداثيبداية و الصورة .اللونو الصادي اإلحداثينهاية و

الصورة : مدخالت6 وتأخذ الصورة تقوم بكتابة نص على ImageString الدالة .اللونوالنص و الصادي واإلحداثي السيني واإلحداثينوع الخط و

Page 64: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

64

نخبر أن يجب ألولىا الخطوة : ويكون العمل على خطوتينة الصوربإصدار ثم قمنا ويمكننا عمل HTML من مجرد نصوص أو نريد تصدير صور بدالأنناالمتصفح

.Header الدالةذلك عن طريق header ( 'content-type: image/png' );

أو ImagePng ة للدالباستخدامنا إلى المتصفح الصورة نقوم بإخراج الثانية الخطوة

ImageJpeg أو ImageGifالتالية بالطريقةعمل ذلك في ملفنا وقمنا ب: @imagepng ($image);

Page 65: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

65

اذجـلنملتعامل مع اا

عبــارة عــن اســتمارات تقــوم بتعبئتهــا ثــم اإلنترنــتالنمــاذج فــي الويــب أو صــفحات يتلقاهـا برنـامج يقـوم بـإجراء العمليـات عليهـا مثـل ) الـسيرفر(عند إرسالها لخـادم الويـب

JavaScript أو ASP أو php . تقــوم بتعبئــة نمــوذج أن جديــد يتوجــب عليــك إلكترونــيعنــدما تقــوم بإنــشاء بريــد ف

كـل هـذا نقـوم عملـه إنـشائه يتضمن االسم وكلمة المرور والبريـد المـراد الذيوالتسجيل . FORMS النماذجعن طريق

name)( الخاصـــيةيـــتم تخـــزين هـــذه القـــيم فـــي المتغيـــرات التـــي يـــتم كتابتهـــا فـــي إلـى الـصفحة التـي سـوف )submit (ـ البيانـات إرسـال ـ عند ضغط زر إرسالهاويتم

واجــراء ACTIONتقــوم بمعالجــة هــذه البيانــات والتــي يــتم تحديــدها فــي الخاصــية اإللكترونـي إلى البريد إرسالهاالعمليات عليها مثل تخزينها مثال في قاعدة البيانات أو

phpوذلك عن طريق الـ

:خصائص النماذجع النمــوذج جميــع خــصائص المــضيف لكننــا هنــا ســنتطرق إلــى اثنــين منهمــا يجمــ

مهمــة لنــا فــي دروســنا هــي التــي تــستخدم بكثــرة وMETHOD و ACTIONوهمــا .القادمة

ACTION: وظيفـــة هـــذه الخاصـــية أن تخبـــر الـــسيرفر مكـــان الـــصفحة التـــي يقـــوم

عــا فــي حالتنــا ســتكون كــان نوعهــا وطب أيــااعنوانهــ معلومــات النمــوذج إليهــا أو بإرســال . phpالصفحة الثانية هي الصفحة التي تحتوي على سكربت الـ

<FORM ACTION ="TEST.PHP">

….. </FORM>

Page 66: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

66

METHOD : المعلومــات إلــى إرســالهــذه الخاصــية تقــوم بإخبــار النمــوذج طريقــة إلرســــــال مــــــشهورتين ومعــــــروفتين طــــــريقتينالــــــصفحة الهــــــدف وفــــــي الواقــــــع هنــــــاك

.POST وGET هما المعلومات

<FORM ACTION ="test.php" METHOD = "GET">

أو <FORM ACTIN = "test.php" METHOD ="POST">

: المعلومات وهيأخرى إلرسال طرقيوجدو

)CONNECT;HEAD;OPTIONS:DELETE:TRACE ( ال وغيرهــــا ولكــــن . بشكل نادرإال متستخد

ـــــاإلنترنـــــت بإخبـــــار مـــــستعرض GET تقـــــوم الخاصـــــية ديك بـــــأن يقـــــوم بإضـــــافة ل

لـديك وتكـون طريقـة اإلنترنـتالمعلومات التـي تمـت كتابتهـا فـي النمـوذج إلـى متـصفح :كالتاليكتابته

. المصدرالصفحةكتابه عنوان - 1 .اتباعها بعالمة استفهام - 2

.كتابة العناوين والقيم - 3

http://localhost/test.html?name=value

ولكل من هذه ) زر اختيارـمربع نص ـ مربع عالمة (ن النموذج يتكون من عناصر إ .)value( بها خاصةولكل منها قيمه ) name(العناصر عنوان خاص بها

وهـــي مـــشابهة للمتغيـــرات ويمكـــن أن يحتـــوي عنـــوان الـــصفحة علـــى أكثـــر مـــن عنـــوان )name ( واكثر من قيمة)value( ويقوم بالتعريف عنهما باستخدام المعامل )& .(

:مثال

Page 67: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

67

http://localhost/test.html?animal=cat&age=30

االسـتعالم نتيجـة)query String(تسمى اإلضافة التي تظهر بعد عالمة االستفهام

.الحرفية اسم متغير مـن المفتـرض كأنهونعامله ) name (اإلنجليزية باللغة يكون العنوان دائما ).PHPالتي سنكتبها بالـ( الهدف الصفحةتعريفه في

ترسـل المعلومـات فـي عنـوان ولكنهـا الgetوظيفتها هي نفس وظيفة الـ فPOSTأما

http response التابع لـ body بل تقوم وضعها في الـاإلنترنتصفحة .GET البيانات بكمية أكبر من الـإرسال إلى أنه يستطيع افةباإلض

:POST و GETالفروقات بين

بعض من الفروقات بين هناك POSTستخدم ن ومتى GET ستخدمنمتى :الطريقتين

الطريقة POST الطريقة اكثر من حماية بها يوجد GET.

الطريقة POST بإرسال بيانات بكمية اكبر من الطريقة تقوم GET .

الطريقة GET الطريقة من أسرع POST , لذلك نراها تستخدم في محركات .وغيرها msn و yahoo و googleالبحث مثل

.األساسيةالفروق هي هذه كل الفروق بين العبارتين ولكن تعتبر هذه ليست

Page 68: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

68

:كتابة النماذجوص عبـــارة عـــن مربعـــات النـــصالخاصـــة بالنمـــاذج هـــي فـــي الواقـــع أن أدوات الـــتحكم

والتـي يقـوم المـستخدم فيهـا (زرار أو) التي يدخل فيهـا المـستخدم اسـمه وعنوانـه (العاديةومربعـات ) إليـه المفـضلة لديـه أو المـشروب المفـضل الوجبـةمثـل ( شـي معـين رباختيا

) ويحـب مـن الخيـارات المعروضـةيمـا يـشتهالتي تتيح للمستخدم أن يختار (االختيار . على اختيار أكثر من شي أو شي واحدوأيضا القوائم التي تساعدك

يتم استعمال الوسماألشياءفي أغلب هذه <INPUT>

1 - TYPE= type

. نحدد نوع الكائن إذا كان زر راديو أو مربع نص عادي أو مربعات االختيار 2 - NAME= name

. تقوم فيها بإعطاء اسم لمتغير يتم حفظ القيمة فيه

3 - VALUE= value

. ضح وظيفته أكثر عندما ندرج عليه أمثله إذ أن عمله يختلف من أداة إلى أخرىسيت : كالتاليصيغتهو

<INPUT TYPE= type NAME= name VALUE= value other attribute>

RESET و SUBMIT هي األزرارهناك نوعين من

. يقوم بإرسال المعلومات submit الـ-1 إدخالها مـن إلعادةسح البيانات في جميع األدوات في النموذج يقوم بمreset الـ -2

.جديد

Page 69: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

69

:أمثلة توضيحية األولســـنقوم فـــي هـــذه التطبيقـــات بـــصنع بـــرامج بـــسيطة تتكـــون مـــن ملفـــين، الملـــف

النتـائج باستقبال يقوم بتكوين النموذج والملف الثاني يقوم HTMLيحتوي على كود . وطباعتها

.محرر النصوصفي اكتب الكود التالي

<html dir ="rtl"> <FORM METHOD = "GET" ACTION= "edu.php">

ما هو مستوى تعليمك ؟<br> <INPUT TYPE = "text" NAME = "education" value = ""> <br>

<INPUT TYPE= submit VALUE="إرسال">

<INPUT TYPE= reset VALUE="مسح">

</form> </html>

. )edu1.html(وقم بتسميته . HTML كصفحة حفظ الملف ا

: محرر النصوصفي ملف جديد فياكتب الكود التالي

<html dir ="rtl"> <?php

Echo "أنا في المستوى ال"."$education";

?> .edu.phpوقم بتسميته . phpحفظ الملف كـ ا

...!!طبعا أنت تعلم المسار الذي يجب أن تحفظ ملفاتك به html.1edu/localhost://http: نكتب العنوان التالي اإلنترنتستعرض ممن

:سيظهر لك الملف األول على الشكل

Page 70: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

70

نكتـــب فـــي مربـــع مـــستوى التعلـــيم المـــستوى الـــذي نريـــد ثـــم نـــضغط إرســـال فتظهـــر لنـــا

:النتيجة على الشكل التالي

اية بعمل صفحة تتكون من نص ومربع نص وزر يقوم بعملية إرسـال لقد قمنا في البدــا بتحديــد المكــان <FORM> بدايــة النمــوذج بواســطة الوســم ثــم حــددناالبيانــات وقمن

البيانات إليه بواسطةإرسالالذي سيتم

ACTION=”edu.php”

Page 71: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

71

واخترنا الـINPUT الوسم بواسطة مربع النص إنشاءوقمنا ب

TYPE=”text” :بواسطة القيمة قيمة خالية قمنا بوضعكما

Value= "" educationه المستخدم في مربع النص في المتغير سجل الناتج الذي ينا وضعثم

: زر بواسطةثم أضافنا TYPE = SUBMIT

VALUE = "إرسال" زر آخر و

Type = reset

Value = " مسح"

البيانــات إلــى بإرســالم النمــوذج قــااإلرســال البيانــات وضــغط زر بإدخــال اأن قمنــبعــد باســــتقبال وقامــــت الــــصفحة المحــــددة ACTIONالــــصفحة المحــــددة فــــي الخاصــــية

النتائج الموجودة في النموذج وهي نتيجة واحدة في مربع نـصوص تـم حفـظ قيمتـه فـي .echoت طباعتها بواسطة الدالة تمو. educationالمتغير

دة األسطر فإنـك تحتـاج إلـى أداة تحكـم تختلـف كنت تريد أن تكتب رسالة متعدأما إذا

تماما عـن مربـع الـنص العـادي وهـي مربعـات النـصوص الكبيـرة التـي يمكنـك فيهـا مـن .األسطرإدخال نصوص كبيرة الحجم ومتعددة

تستخدم هذه األداة وسم فتح ووسم إغالق<TEXTAREA> </TEXTAREA>

واألعمــــــدة rowsخاصــــــية تحديــــــد الــــــصفوف بالبواســــــطةويمكنــــــك تحديــــــد حجمهــــــا .colsبالخاصية

Page 72: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

72

:تمرين عملي .محرر النصوصفي اكتب الكود التالي

<html dir="rtl"> <form action="2.php" method="GET">

<h3>ادخل االسم <input type="text" name="user">

<br>أدخل عنوانك بالتفصيل<p>

<textarea name="address" rows="5" cols="40"> </textarea></h3> <br>

<input type="submit" value="ارسل البيانات">

</form> </html>

html.22حفظ الملف باسم ا

: محرر النصوصفي ملف جديد فياكتب الكود التالي

<html dir="rtl"> <body><h2> <?

print"أهال بك يا <b>$user</b><P>";

print"عنوانك المفصل هو:<P><b>$address</b>";

?> </body> </html>

php.2قم بحفظ الملف باسم html.22/localhost://http .شغل البرنامج

.اإلرسالزر أدخل البيانات واضغط

Page 73: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

73

النتيجة شاهد

Page 74: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

74

:تمرين عملي :معاوربط ثالثة صفحات سنقوم من خالله بالتعامل مع أزرار الخيارات

ستكون األولى لإلدخال االسم والثانية لإلجابة على بعض األسئلة والثالثة لعرض .النتيجة

.محرر النصوصفي اكتب الكود التالي <html dir="rtl" align="center"><p>ادخل اسمك عزيزي </p>

<form method="POST" action="quiz2.php"> <input type="text" name="name" size="20"><br>

<input type="submit" value="إرسال"></p>

</form>

quiz.phpاحفظ هذا الملف باسم :وسيظهر على الشكل التالي

Page 75: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

75

:نفتح ملف جديد على المفكرة ونكتب الصيغة التالية<html dir ="rtl"> <? If (isset($name)) {

Echo "مرحبا بك يا" ." ". $name ;

Echo ' <br> <form method="POST" action="quiz3.php" dir="rtl"> <input type=hidden name = thename value = "$name">

<p/> من هو أول الخلفاء الراشدين ؟

<p dir="rtl"><input type="radio" value="أبوبكر الصديق" name="khlifa"> الصديق أبوبكر </p>

<p dir="rtl"><input type="radio" value="عمر بن الخطاب" checked name="khlifa">بن الخطاب عمر</p>

<p dir="rtl">من هو الفاروق ؟</p>

<p dir="rtl"><input type="radio" name="faroq" value=" عمر بن>"عمر بن الخطاب <p/>الخطاب

<p dir="rtl"><input type="radio" name="faroq" value="سالم" checked>عامر سالم بن</p>

<input type ="submit" value = "إرسال" dir="rtl">

</form>' ; } else {

echo "غير مصرح لك بدخول هذه الصفحة" ;

} ?>

quiz2.phpاحفظ الملف باسم :وستظهر النتيجة على الشكل التالي

الحــظ أن اســم الالعــب المــسجل فــي الــصفحة ــــصفحة واآلن ــــة ال ــــد ظهــــر فــــي بداي ــــسابقة ق ال

إلشارة على اإلجابة الصحيحة ومـن ثـم يمكن اضـــــــغط إرســـــــال لتظهـــــــر لنـــــــا النتيجـــــــة علـــــــى الـــصفحة الثالثـــة والتـــي ســـنقوم بإعـــدادها علـــى الــــشكل التــــالي بعــــد إنــــشاء ملــــف جديــــد علــــى

نكتـــــب quiz3.phpالمفكـــــرة وتـــــسميته باســـــم :الكود التالي

Page 76: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

76

<html dir="rtl"> <? If ((isset($thename)) && (isset($khlifa)) && (isset($faroq))) {

Echo "لقد انتهت المسابقة"." ";

$range=0; $co = 0;

if ($khlifa =="أبوبكر الصديق") {

$range=$range+10; $co = $co +1; }

if ($faroq =="عمر بن الخطاب")

{ $range=$range+10; $co=$co+1; } if ( $range < 10) {

echo "ليس هناك أي إجابة صحيحة";

} else {

echo "<br>"."عدد االسئلة التي أجبت عليها =" . $co ;

echo "<br>" . "الدرجة التي حصلت عليها " . $range ;

} } ?>

:واآلن ستظهر لنا النتيجة على الشكل التالي وذلك حسب اإلجابات الصحيحة

:تطبيق عملي

Page 77: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

77

:check.htmالملف األول <html dir="rtl"> <FORM ACTION="CHECK.PHP" METHOD = "POST">

( أكثر من إجابةيمكنك إختيار(ما هي هواياتك المفضلة ؟

<br>

<INPUT TYPE="CHECKBOX" NAME = "academy[]" value= "رياضة"

CHECKED>

.الرياضة بشكل عام وباألخص السباحة وكرة القدم<br>

<INPUT TYPE="CHECKBOX" NAME = "academy[]" value= "مطالعة" >

قراءة الكتب العلمية والثقافية لتنمية الملكات الذهنية<br>

<INPUT TYPE="CHECKBOX" NAME = "academy[]" value= "كومبيوتر"

CHECKED>

تقنيات المعلومات هي من أهم اهتماماتي وهواياتي وباألخص التعامل مع الكومبيوتر <br>

<input type= submit value = "إرسال">

</FORM> </html>

:النتيجة

:check.phpالملف الثاني

<html dir="rtl"> <?

Page 78: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

78

Echo "$academy[0] <br>" ; Echo "$academy[1] <br>" ; Echo "$academy[2] <br>" ; ?> </html>

:النتيجة

Page 79: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

79

:)Lists Or drop down menus(القوائم نقـــوم بإنـــشاء القائمـــة و ل <select> : وهمـــاhtmlنـــستخدم وســـمين مـــن وســـوم لغـــة س

<OPTION> ــــستخدم الخاصــــية ــــا MULTIPLE ون ــــد إذا كن الفرصــــة إتاحــــةنريللمـستخدم أن يختـار أكثــر مـن قيمــة ونقـوم بوضـع القيمــة التـي يختارهــا المـستخدم فــي

. أو في مصفوفة متغيراتNAME الخاصية بواسطةمتغير :تطبيق عملي :test.htmالملف األول

<html dir="rtl"> <form action = "test.php" method = "post">

تمي إليها ؟ما هي الدولة التي تن <br> <select name = "city"> <option> سوريا </option> <option>مصر </option> <option>لبنان </option> <option>فلسطين </option> <option>الكويت </option> <option>قطر </option> <option>السعودية </option> <option>االمارات </option> <option>دولة أخرى </option> </select> <BR> !!عرف عن نفسك<Br> <select name="dis[]" multiple> <option>مثقف</option> <option>جامعي</option> <option>متدين </option> <option>مدخن</option> <option>رياضي </option> <option>سمين </option> <option>هادئ </option> <option>سريع الغضب </option> </select> <br> <INPUT TYPE=SUBMIT VALUE="إرســال"> </html>

: test.phpالملف الثاني

Page 80: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

80

<html dir="rtl"> <?

Echo "إن الدولة التي أنتمي إليها هي " . " " .

$city; Echo "<br><br>";

Echo "وهذه هي بعض مواصفاتي ";

Echo "<br><br>"; Echo "$dis[0] <br>"; Echo "$dis[1] <br>"; Echo "$dis[2] <br>"; Echo "$dis[3] <br>"; Echo "$dis[4] <br>"; Echo "$dis[5] <br>"; Echo "$dis[6] <br>"; ?> </html>

....!!حلل التمرين السابق وحاول أن تضيف إليه بعض التعديالت

Page 81: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

81

:)Password fields(استخدام حقل كلمات السر مات أكثر حماية من التعرض إلى السرقة أو غيـر ذلـك يمكنـك لكي تجعل المعلو

ي هـــو عبـــارة عـــن مربـــع نـــص بـــسيط يقـــوم بإظهـــار تـــالواســـتخدام حقـــول كلمـــات الـــسر . أو ******النص على شكل نجوم

المستخدم في األسلوب حماية إذا كان أديتتكون قد في الواقع مع ذلك فإنك الـــستخدم تـــشفير البيانـــات get ســـلوباأل بيانـــات المـــستخدم هـــو إرســـال إال إذا كنـــت ت

لــن يكـون محميــا مـن الهــاكر وأيـضا post األســلوبويكـون أكثـر جــودة إذا اسـتخدمت لكــي تقــوم بتنــشيط تــشفير ) SSL) Secure Socket Layerإذا لــم تكــن تــستخدم

. البيانات

:تطبيق عملي : password.phpالملف األول

<html dir="rtl"> <body> <form method=post action="password1.php">

<h3><b>اسم المستخدم <br> <input type="text" name ="user"> <br>

<h3></b/>كلمة المرور

<input type="password" name ="pass"> <br>

<input type = submit value="إرسال">

</form> <body> </html>

Page 82: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

82

: password1.phpالملف الثاني

<html dir="rtl"> <?

Echo "اسم المستخدم هو: ";

Echo "<br>$user<br>";

Echo "وكلمه المرور هي:";

Echo "<br><br>$pass" ?> </html>

:النتائج

:وعند ضغط إرسال سيظهر لنا

Page 83: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

83

املصفوفات : المصفوفاتأنواع

ات ومصفوفة مصفوفات رقمي نوعان من المصفوفات PHPيوجد في لغة جميعهم إال أن األساس ألنها الرقمية سوف نقوم بتعلم المصفوفات البداية في ةحرفي

.يؤدون نفس العمل

:الرقميةالمصفوفات

األرقامالمصفوفات التي يتم استعمالها عن طريق هي ةالمصفوفات الرقمي الرقمباستخدام باالستعالم عنها أقوم فسوف المصفوفة قيمه من هذه أريدعندما ف

رقم يدل عليها وغالبا يبدأ المصفوفة لكل قيمه في أن نعرف إذن ،الذي يدل عليها ة الموضوعواألرقام نسميها عناصر بالمصفوفة الموجودةالقيم و. وطبعا0من العدد . نسميها فهرس أو المفتاحالمصفوفة في ةلكل قيم

:الرقمية المصفوفات إنشاء

:ها من المثال التاليوكيفية إنشاء المصفوفةفهوم موضح سأ

لنفترض أننا نريد كتابة مواد مقرر الدبلوم الدولي العالي في تقنيات المعلومات داخل ..المقررات أسماء ونضع داخلها واد، اسمها ممصفوفةنقوم بإنشاء س... مصفوفة

: وقم بكتابة التاليالمفكرةافتح

<?

Page 84: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

84

$items1 = " "أساسيات تقنيات المعلومات ; $items2 = "رياضيات الحاسب" ;

$items3 =" الحواسيب والدارات المنطقية" تجميع ; $items4 = "قيادة الحاسب" ;

$items5 = "صيانة الحواسيب" ;

$items6 = "هندسة الشبكات" ;

$items7 = "الشبكة الدولية للمعلومات وتطبيقاتها" ;

$items8 = "تكنولوجيا األعمال" ;

$items9 ="Adobe Photoshop"; $items10 ="Visual basic"; $items11 ="HTML"; $items12 ="Java Script"; ?>

:ويمكن أيضا كتابتها على الشكل<? $items = array ( " "أساسيات تقنيات المعلومات "رياضيات الحاسب" , والدارات المنطقية الحواسيب" تجميع " , "قيادة الحاسب" , ,

"صيانة الحواسيب" "هندسة الشبكات" , "الشبكة الدولية للمعلومات وتطبيقاتها" , "تكنولوجيا األعمال" , , "Adobe Photoshop" , "Visual basic" , "HTML" , "Java Script"); ?>

:الرقميةطباعة المصفوفات

انظر على حدهالوصول إلى كل عنصر على حده وطباعته المصفوفة علينا ةطباعل :المثال التالي

<html dir="rtl"> <?

$items = array (" هندسة الشبكات","صيانة الحاسب","تكنولوجيا األعمال","قيادة الحاسب ","Adobe

Photoshop" , "Visual basic" , "HTML" , "Java Script"); echo $items[0]; echo "<br>"; echo $items[1]; echo "<br>"; echo $items[2]; echo "<br>"; echo $items[3]; echo "<br>"; echo $items[4]; echo "<br>"; echo $items[5];

Page 85: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

85

echo "<br>"; echo $items[6]; echo "<br>"; echo $items[7]; echo "<br>"; echo $items[8]; ?> </html>

:النتيجة

بكل بكتابة نقومأن من بدالالطباعة نستخدم دالة تكرار لتقوم بعمل أننستطيع

:سطر على حده<html dir="rtl"> <?

$items = array (" هندسة الشبكات","صيانة الحاسب","تكنولوجيا األعمال","قيادة الحاسب ","Adobe

Photoshop" , "Visual basic" , "HTML" , "Java Script"); for ($i = 0; $i<8; $i++) { echo $items[$i]; echo "<br>"; } ?>

..هد أقل بكثيرالحظ أن النتيجة نفسها ولكن بأسطر وج

Page 86: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

86

ــــ ـــا ال ـــي يوفرهـــا لن ـــدوال الت ـــد مـــن ال ـــاك العدي ـــرز المـــصفوفاتPHPهن هـــاأكثر. لف :استخداما

:()Sortالدالة

هجائيا اعتمـادا علـى األحـرف الكبيـرة أوال المصفوفة تقوم هذه الدالة بفرز ثـم الـصغيرة :تتطلب هذه الدالة اسم المصفوفة التي سيتم عليها الفرز..

Sort (ArrayName);

:التاليمصفوفة بالشكل ال ئنشأ

$Lolo=array ("amin","Mahmoud","houda","Nehal","Ammar","Ramiz");

:كالتالي فإننا نقوم باستخدامها ()sortفإذا أردنا فرزها عن طريق الدالة

<? $Lolo =array ("amin","Mahmoud","houda","Nehal","Ammar","Ramiz"); sort($Lolo); While (list($e,$r) = each ($Lolo)) { echo "$e\t\t$r<br>"; } ?>

Page 87: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

87

قــام بــالفرز اعتمــادا علــى األحــرف الكبيــرة أوال ثــم قــام بــالفرز بعــدها PHPالحــظ أن الـــ

.اعتمادا على األحرف الصغيرة

:()Arsortالدالة asortلدالـة فاسيط ولكـن هنـاك اخـتالف بـ()sortهذه الدالة تعمل نفس عملية الدالـة

تقـــوم بإظهـــار الترتيـــب الـــصحيح لعناصـــر المـــصفوفة حـــسب توضـــعها داخلهـــا حـــسب :الصيغة التالي

:arsort بـ rsortلنأخذ المثال السابق ونبدل <? $Lolo =array ("amin","Mahmoud","houda","Nehal","Ammar","Ramiz"); asort($Lolo); While (list($e,$r) = each ($Lolo)) { echo "$e\t\t$r<br>"; } ?>

:الحظ الفرق

Page 88: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

88

....والحظ الترقيم

.رقاماألالحروف ب تستبدل فهرسةكما يمكن للدالة أيضا أن ....الحظ

<? $Lolo=array ("a"=>"amin","M"=>"Mahmoud","h"=>"houda","N"=>"Nehal","A"=>"Ammar","R"=>"Ramiz"); asort($Lolo); While (list($e,$r) = each ($Lolo)) { echo "$e\t\t$r<br>"; } ?>

Page 89: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

89

Page 90: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

90

array_push(): :كالتالي ()array_pushنستطيع إضافة عنصر على المصفوفة عن طريق الدالة

array_push (ArrayName اسم المصفوفه,Elemnt1, Elemnt2,

Elemnt3,…..)

فة العنصر لها ونضع نضع في القسم األول من الدالة اسم المصفوفة التي نريد إضا

.في القسم الثاني عنصر واحد أو أكثر وهي التي سيتم إضافتها للمصفوفة

:السابقةمصفوفة واذا عدنا إلى ال<html dir="rtl"> <?

$items = array (" هندسة ","صيانة الحاسب","تكنولوجيا األعمال","قيادة الحاسب ;("Adobe Photoshop" , "Visual basic" , "HTML" , "Java Script","الشبكات

for ($i = 0; $i<8; $i++) { echo $items[$i]; echo "<br>"; } ?>

Page 91: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

91

ولكن كيف ستأخذ ... ستقول طبعا هذا سهلأردنا أن نضيف عنصر جديد لهااذا و ....الترقيمات وأين ستبحث عن السطر الخاص بها وأين ستضع اإلضافات

طبعا سيكون الوضع مريح جدا : (ما يليلنستريح من كل ذلك ونعدل الصيغة ك ..) سطر مثال200عندما يبلغ عن البرنامج

<html dir="rtl"> <?

$items = array (" هندسة الشبكات","صيانة الحاسب","تكنولوجيا األعمال","قيادة الحاسب ","Adobe

Photoshop" , "Visual basic" , "HTML" , "Java Script");

array_push ($items,Windows, دارات,كوريل,رياضيات );

for ($i = 0; $i<14; $i++) { echo $items[$i]; echo "<br>"; } ?>

...الحظ اآلن

Page 92: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

92

array_pop(): أردنا حـذف عنـصر مـن المـصفوفة فإننـا نقـوم بتعريـف المـصفوفة مـن جديـد أو أما إذا

مـــن المـــصفوفة التـــي تقـــوم بحـــذف آخـــر عنـــصر array_popيمكننـــا اســـتخدام الدالـــة .والتي تتطلب فقط اسم المصفوفة

Array_pop(ArrayName اسم المصفوفه)

:مثال

<html dir="rtl"> <?

$items = array (" هندسة الشبكات","صيانة الحاسب","تكنولوجيا األعمال","قيادة الحاسب ","Adobe

Photoshop" , "Visual basic" , "HTML" , "Java Script"); array_pop($items); for ($i = 0; $i<14; $i++) { echo $items[$i]; echo "<br>"; } ?>

....الحظ اآلن

.لقد اختفى العنصر األخير من المصفوفة

Page 93: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

93

:Implodeالدالة . تقوم بإضافة قيمة بين عناصر المصفوفة

:مثال

<html dir="rtl"> <?

$items =array (" سعيد", "جعفر", "عمار","أحمد ");

echo $items[0]; echo "<br>"; echo $items[1]; echo "<br>"; echo $items[2]; echo "<br>"; echo $items[3]; ?>

...فلو أردنا إضافة كلمة أبو إلى عناصر المصفوفة

Page 94: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

94

<html dir="rtl"> <?

$items =array (" سعيد", "جعفر", "عمار","أحمد ");

$r =implode (" "."أبو",$items);

echo $r; ?>

...الحظ الفرق وال حظ أنني طبعت النتائج بطريقة مختلفة

:explodeالدالة

.يعني حذف عناصر من المصفوفة تقوم بحذف قيمة من مصفوفة وذلك ال

Page 95: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

95

التحكـم بالنصـوص وإدراج امللفــات

:التحكم بالنصوص

مع تلك النصوص فنحن إن التحكم بالنصوص ضروري جدا إذا ما أردنا التعامل بريد الأو سماال سواء إليهم،قوم بإرسالها التسجيل في موقع ما تم نمعلومات نضع

ضمن ما يقوم بإدخاله تقع ال االموكافة فا طبعاهت فلتربعد تمر ا ولكنه.....أو .أم ال هل هو المطلوب ،المستخدم

:trim ةالدال

: الحظ المثال التالي،ة ونهاية النصمسافات من بداياللغاء إل trim الدالةتستخدم <html dir="rtl"> <? $name = " Azzam "; $name = trim($name); echo $name; ?>

:ltrim و chop ةالدال أما األيسر، ولكن تلغي المسافات من الجزء trim تقوم بنفس عمل ltrim الدالة .األيمن من الجزء المسافة بإلغاء فتقوم chop الدالة

:sprintf و printfالدالتين

أنها print العبارة والفرق بينهما وبين print الدالة الدالتين بنفس عمل اتين هانتقوم . مختلفةتقوم بطباعة النص بطريقه

دون إظهار ولكن 58.46589التالي طبع العدد ن أنريد إذا كنا نلى سبيل المثال فع : التالينكتبوف فس.كامل الرقم أي رقمين بعد الفاصلة فقط

Page 96: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

96

<html dir="rtl"> <? $total = 58.46589;

echo " الرقم كامل ".$total;

echo "<br>"; printf ("New No. %.2f" , $total); ?>

...الحظ اآلن

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

المعنى النوع

b يترجم على شكل عدد صحيح ويطبع على شكل ثنائي

c يترجم على شكل عدد صحيح ويطبع على شكل على حروف

d يترجم على شكل عدد صحيح ويطبع على شكل عشري

f يترجم على شكل عدد عشريdouble ويطبع على شكل عشري )float(

s يترجم على شكل نص ويطبع على شكل نص

:strtoupper الدالة

Page 97: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

97

A إلى a تقوم بتحويل أي اإلنجليزية ةخاصة باللغ ة كبيرفالحروتقوم بجعل كل .وهكذا

:strtolower الدالة

اإلنجليزية ةخاصة باللغ ةتقوم بجعل كل الحروف صغيرعكس الدالة السابقة فهي . وهكذاa إلى A تقوم بتحويل أي

. الكبيرشكللل الجملةن حرف مأول بتحويل تقوم :ucfirst الدالة

الحالة في النص إلى ة حرف من كل كلمأولل تحوي تقوم ب:ucwords الدالة .الكبيرة

: الحظ التطبيق التالي<? $name = 'azzam al-kasim'; echo strtoupper ($name); echo '<br>'; echo strtolower ($name); echo '<br>'; echo ucfirst ($name); echo '<br>'; echo ucwords ($name); echo '<br>'; ?>

:explode الدالة

تستخدم لفصل النص عن بعضه البعض وتقوم بإرجاع الناتج على explode الدالة :مصفوفةشكل

<?

Page 98: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

98

$mail = '[email protected]';

$site = explode ('@' , $mail);

echo 'user name:'." ".$site[0];

echo '<br>';

echo 'Company:'." ".$site[1];

?>

:جمع نص مع بعضه البعضل تماماتان متطابق:join و implodeالدالتين <?

$mail[0] = 'azzam-k';

$mail[1] = 'mail.sy';

$new_email = implode ( '@' , $mail);

echo $new_email;

?>

Page 99: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

99

:strlen الدالة

: تها كالتالي لمعرفة طول نص معين وطريقالدالةتستخدم هذه <?

$text1 = "azzam al-kasim";

$result = strlen ($text1);

echo $result;

?>

:strchr و strstr الدالتين

األحرف للبحث عن strchr تستخدم األحرف، لحالة تانحساسو تمامامتطابقتين ةالدال طريقة هذه دائماوالمناسبة األفضل وهي العمل تؤدي نفس األولىولكن :كالتالي

<? $text = "VIRTUAL AND OPEN LEARNING ACADEMY (UK)"; $find = "OPEN"; $result = strstr ($text, $find); echo $result; ?>

أما الكلمة المراد البحث عنها فتمثلها قيمة text$الحظ أن الجملة أو النص هو قيمة $find وفي مثالنا هي OPENفسوف تقوم بإرجاع ة مطابق كلمهالدالةذا وجدت فإ :مثالنا عليها الحظ ناتجت التي عثرالكلمة وتهمل ما قبل الجملة ثم باقي الكلمة

Page 100: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

100

أما األحرف غير حساسة لحالة أنها هو والفرق strtsr ـ لمطابقة :stristr الدالة والفرق الوحيد هو انه إذا كانت الكلمة مكرره مطابقة أيضا فهي strrchr الدالة

على الجملة مكان تكررت فيه آخر فسوف تقوم بإرجاع النص من الجملة في رتينم .الجملة مكان تكررت فيه أول تقوم بإرجاع النص من فهي strstrعكس

:str_replace دالة

: وطريقتها كالتالي جدامفيدة نص وتغييره وهي بإيجاد الدالة هذه تقوم<html dir="rtl"> <?

$text = " حبيبة تناديكم يا أهل العزة والكرامةفلسطين ال ";

echo $text; echo "<br>";

$oldwords = array (" والكرامة", "تناديكم","الحبيبة ");

$newwords = array (" والمروءة","تستصرخكم","الجريحة ");

$newtext = str_replace($oldwords, $newwords, $text); echo $newtext; ?>

Page 101: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

101

:النتيجة

...فقد طبعنا الجملة قبل التعديل ومن ثم بعد التعديل... هانتب

...أعتقد أن الدالة واضحة

Page 102: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

102

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

كيفية اآلنلنرى خالل إدراج ملفات خاصة بالترويسة والتذييل الصفحة وذلك يتم من .اإلدراج

:require الدالة

: الملفات وطريقة كتابتها كالتاليإلدراج تستخدم الدالةهذه

Require (string file)الصورةح ي لنأخذ مثال عليها لتوض.

:head.phpة ثم احفظها باسم التاليالصيغة واكتب المفكرة فتح ا<?

echo "أهال بكم في رحاب األكاديمية العربية البريطانية ";

?> :academy.phpثم احفظه باسم التالي الكود واكتب في المفكرةافتح ملف جديد

<html dir="rtl">

<?

require ( 'head.php' );

?> :ةجينت من متصفحك وشاهد الacademy.phpاطلب الملف

Page 103: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

103

تاج إلى ملف لكي يكون مدخلها وعندما ننفذ تحrequire الدالة أننستنتج

. داخل الملف األساسيhead.phpالملف الكود فكأننا كتبنا

ادرج ملفات من المستحسن ولكن ، امتداد تريدبأي ملف تريد أي إدراجيمكن PHP أو ملفات HTML، نه إذا كان الملف أ ولكن ال تنسىHTML فلن يتم

. لينفذPHPون يكأن يجب ، بداخلهPHPتنفيذ كود

:include الدالة

الفرق الوحيد بينهما هو كيفية ، تماماrequire الدالة لها نفس عمل الدالةهذه فسوف يكون الخطأ هو تحذير ويكمل include الدالة في أخطأت الخطأ فلو إخراج

فسوف يكون require الدالة في أخطأت إذا أما) Warning(تنفيذ عمل الملف كامل بشكل الخروج من الكود أي ويتوقف عمل تنفيذ الملف الخطأ رئيسي

)Fatal Error(.

Page 104: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

104

قواعد البيانات

: MySQL البيانات قاعدة PHPغلب مبرمجين أ ولكن اآلن، الموجودة كثير من قواعد البيانات هناك. ةسهل ـ ة سريعـمفتوحة المصدر ـ مجانية فهي : لخصائصهاالقاعدة هذه يستخدمون

.ة معينة بطريقإال ال تدعم العالقات أنها عيوبها أهمولكن

:تصميم قاعدة بيانات نقوم أن أولها ة، نقوم بأشياء كثيرأنفي تصميم قاعدة البيانات يجب علينا

كيفية ترتيب المعلومات ، كيفية عملهاالقاعدة،بتحليل ومعرفة ماذا نريد من هذه لكي نستنتج هل أوال على الورق القاعدة نقوم برسمأنيجب كما بالقاعدة لنا المفيدة

في نحل مشكلة التكرارأنويجب . الأم القاعدةمنطقنا صحيح في تصميم هذه ..قاعدة البيانات

:كتب التالينذهب إلى المتصفح ونم بتشغيل السيرفر الشخصي وقهنا نhttp://localhost/

:ضغط على الرابط التالين حةالصف تفتح أنبعد

وهو برنامج يتحكم في PHPMyAdminبرنامج ل وهي التالية ةالصورستظهر اآلن

: والحذف وغيرهااإلنشاءلبيانات ويسهل لك عملية قاعدة ا

Page 105: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

105

: قاعدة بياناتاآلن بإنشاءلنبدأ

:باتباع الخطوات التالية info قاعدة بيانات اسمها ئنشل

Page 106: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

106

.Create في المكان المخصص ثم نضغط infoنكتب

: ونحدد اسم الجدول وعدد األعمدة بهالتالية الصفحةوسوف تنقل إلى

قوم بإنشاء جدول في قاعدة ن Create new table on database infoتحت

ـ اسم المستخدم ـرقم المستخدم (ولتكن حقول 3به ضع ونusersسميه ونالبيانات : وسوف ترى التاليGo على الزر اآلنضغط ن) للمستخدماإللكترونيالبريد

Page 107: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

107

:نقوم بملئها حسب الشكل أدناه

أن ال يمكن أي unsigned التالية حقل نجعل له الخصائصأول أنالحظ

يزيد لكل عضو أي auto incrementيحتوي على عدد اقل من الصفر أو سالب Primary الخاصية خيراأ ويولد له رقم مستخدم فريد من نوعه ويضاف جديد تلقائيا

PRIMARY KEY يكون مفاتح رئيسي أي

أن لنقل 20 األول . بالنسبة لعدد األحرف نجعل لهما طولاألخيرينالحقلين نقومخيراأ حرف و50 عن اإللكتروني حرف وبريده 20اسم المستخدم لن يزيد عن

الحظ save على ونضغط ونحدد نوع الجدولTable commentsبوضع اسم في :الصورة

:التالية الصفحة تم العمل بنجاح سوف ترى إذا

Page 108: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

108

PRIMARY النوع تحته خط وذلك يعني انه منuser_id الحقل أنالحظ KEY

: في قواعد البياناتاألعمدةبيانات أرى من المفيد هنا أن نتعرف على أنواع الوقت والتاريخ العشرية األنواع الرقمية األنواع

TINYINT FLOAT DATE SMALLINT DOUBLE TIME

MEDUIMINT REAL DATETIME INT DECIMAL TIMESTAMP

INTEGER NUMERIC YEAR BIGINT

Page 109: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

109

والتعدديةالخيارات BLOB والكتابات العاديةالنصوص

CHAR TINYBLOB ENUM VARCHAR TINYTEXT SET

BLOB TEXT MEDUIMBLOB MEDUIMTEXT LONGBLOB LONGTEXT

تستخدم األعمدة النصية إلدراج بيانات محرفية أو خليط من البيانات المحرفية

:اك عدة أنواع لألعمدة النصية و هن،والرقمية

char :

ويكون استخدامه . محرف255األعمدة طول أعظمي يبلغ لهذا النوع منوهذا النوع من األعمدة هو عمود ذو طول ثابت col_name char (size):كالتالي

فسيتم حشو ، عدد محارفها أقل من العدد األعظمي للعمود،قيمة ما أي إذا تم إدراج .من اليمين بفراغاتباقي الحقل

و هذا النوع من األعمدة هو أنه يقوم بحجز مساحات كبيرة في قاعدة البيانات عيب .يكون عبارة عن فراغات معظمها

. Passwords كلمات المرور أما أهميته فهو أنه مفيد إلنشاء أعمدة

Page 110: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

110

varchar:

.محرف 255: الطول األعظمي

col_name varchar(size) :االستخدام

طول متغير أي إذا قمت بتعريف عمود من النوع ويتميز هذا النوع بأنه ذو

varchar(15) وخزنت القيمة Die Hard فلن يتم حشر فراغات إلى يمين فيه و لكن.السلسلة المحرفية القيمة المخزنة بل يقوم بإزالة الفراغات من نهاية

MySQL إلى كل عمود من النوع واحداتضيف محرفا varchar يتم فيه حيث .تخزين طول الحقل

Text:

65535: الطول األعظمي هو

يتم إنشاء يمكن أن، هو من النوع متغير الطولأيضاcol_name text : االستخدام كما يمكن أن يتم text محرف من العمود الذي من النوع255فهارس على أول

.FULLTEXT استخدام الفهارس من النوع

enum:

خيارات خدم هذا النوع من األعمدة من أجل تحديد خيار واحد من بين عدةيست . قيمة65535 ويسمح هذا النوع من األعمدة باستخدام ،موجودة

'col_name enum('val_1' , 'val_2' , … ) default 'val_1 : االستخدام

:هناك أنواع أخرى من األعمدة النصية وهي

tinytext , mediumtext , longtext , set

Page 111: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

111

:األعمدة الرقمية

:أهم أنواعها و, يستخدم هذا النوع من أجل إدراج بيانات رقمية أو عددية

int/integer :

col_name integer(size) [zerofill] [unsigned] : االستخدام

ويستخدم هذا النوع ، هي تعليمة اختيارية[ ] الموضوعة داخل القوسين إن التعليمة .من أجل أعمدة الترقيم التلقائي البامن األعمدة غ

float:

col_name float(M,D) [zerofill] : االستخدام

ستحدد هو عدد الفواصل التي D و،هي عدد الخانات التي سيتم حجزها M حيث .من هذه الخانات

:كما يلي ويستخدم،وهذا النوع ال يمكن أن يكون بدون إشارة

column_name float (7,3)

3 ومنها 7وعدد خاناته float نوعه column_name ن العمود الذي اسمهأي أ 9999.999 للفاصلة أي أن أكبر رقم يمكن أن يخزن به هو

:وهناك أنواع أخرى لألعمدة ذات النوع الرقمي وهي

tinyint , mediumint , bigint , double , real , decimal

Page 112: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

112

:أعمدة التاريخ و الوقت

:ع هيو له عدة أنوا

Date:

col_name date : االستخدام

:األعمدة على الشكل التالي ويكون تخزين الوقت في هذا النوع من

(YYYY-MM-DD) إلى 1000- 01-01حيث أن القيم المسموح بها هي بين31-12-9999

datetime:

col_name datetime : االستخدام

(YYYY-MM-DD HH:MM:SS) يكون شكل التنسيق هو

و1000-01-01 00:00:00: المسموح بها فهي بين أما القيم

23:59:59 31-12-9999

فضل فمن األهذين النوعين هو أنه ستقوم أنت بإضافة التاريخ لذلك ومن سيئات :هو استخدام النوع الثالث و

timestamp:

col_name(size) االستخدام

بتسجيل تاريخ أنه يقوم تلقائيااألعمدة هو متعدد االستخدامات كما هذا النوع من

Page 113: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

113

فهو size أما الوسيط أو تحديثاالتغييرات سواء أكان هذا التغيير إدراجا ووقت أحدث : حيث يكون التنسيق كما يلي14 و 2الزوجية التي بين العددين يأخذ القيم

Size Format 2 YY

4 YYMM

6 YYMMDD

8 YYYYMMDD

10 YYMMDDHHMM

12 YYMMDDHHMMSS

14 YYYYMMDDHHMMSS

time , year.نوعين آخرين من أنواع أعمدة التاريخ و الوقت و هما وهناك

Page 114: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

114

:الجداول أنواع

:وهي MySQL هناك عدة أنواع للجداول في

MyISAM :وهو النوع االفتراضي الذي يضعه MySQL للجدول في حال عدم . ومستقرنوع من الجداول سريع جدا وهذا الKالجدول الذي تقوم بإنشائه تعيينك لنوع

Heap :أي هذا النوع من الجداول تكون مقيمة في الذاكرة أي أنها غير مخزنة في مكان فيزيائي لذلك فإنها تتبخر في حال انقطاع التغذية و لكن كونها تتوضع على

ىالذواكر فهي بغاية السرعة والفائدة منها هو إمكانية بناء جداول مؤقتة لتتوضع عل .الذواكر من أجل االستعالمات السريعة

و لكل منها مزايا InnoDB , BDB , Gemini و هناك أنواع أخرى هامة هينوع الوظيفة التي سيقوم بها عديدة ومختلفة بحيث يتوقف النوع الذي ستختاره على

سنعتمد على أن كل جداولنا هي من لكنها غير مرغوبة و و. الجدول الذي تقوم ببنائه .MyISAM نوعال

:االستعالم في قواعد البيانات

لنرى مع ة وسوف تكون مختصر، جدابسيطة وهي SQLطريقة االستعالم بلغة :اآلنبعضنا البعض

:INSERT األمر

: وهو كالتالياإلضافةونعني به

Page 115: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

115

دراجها إي نريد ت الاألعمدة أسماء نعني به اسم الجدول والمربع الثاني األولالمربع نضع له أن فال نحتاج auto incrementادته تلقائيايولو كان العمود حقل يتم ز

' ' فقط نقوم بوضع عالمة التنصيص ة،ميق

:SELECT األمر

وهو ) نستعلم عن معلومات معينه في قواعد البياناتأي( يعني االختيار األمرهذا :كالتالي

اختيار صف يحوي قيمه معينه نريد مطابقتها أردنا كل شي ولو أي * بالعبارةعني ن

:سوف نقوم بالتالي

:DELETE األمر

العبارة نقوم بمسح صف فسوف نستخدم هذه أن أردنا المسح إذا األمرنعني بهذا :كالتالي

: زيارة العنوان التالييمكنكم ولمعرفة المزيد عنها ة كثيرأخرى أوامريوجد هناك

http://www.mysql.com/

و mysql_connect الدالــــــة ( PHP بقاعــــــدة البيانــــــات فــــــي لغــــــة االتــــــصالmysql_pconnect:(

Page 116: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

116

اسم الخادم اسم أشياءخالتها ثالث قاعدة البيانات ومدمعتقوم هذه الدوال باالتصال :المستخدم لقاعدة البيانات كلمة المرور لقاعدة البيانات بالترتيب الحظ التالي

تقوم بنفس العمل ولكن االتصال بها ال فهي mysql_pconnect ة للدالبالنسبة .البيانات بقاعدة بت متصالينما يبقى السكرا االستعالم وبانتهاء ينقطع

):mysql_select_db الدالة( قاعدة البيانات اختيار

اسم األولمدخل ال, قاعدة البيانات التي تريد العمل عليهاباختيار الدالةتقوم هذه وهي تعمل بالشكل .قاعدة البيانات والمدخل الثاني هو حلقة االتصال بقاعدة البيانات

:التالي$conn = mysql_connect ('localhost','root',' ');

$db = mysql_select_db ('zzzz',$conn);

تحتاج إلى ادخل حلقة فلن mysql_pconnect الدالة استخدمت انك لو الحظ .تصالاال

):mysql_query الدالة( االستعالم إرسال

األولمدخلها استعالم إلى قاعدة البياناتإرسال تساعدك على الجميلة الدالةهذه :االستعالم المطلوب والمدخل الثاني حلقة االتصال الحظ التالي

$conn = mysq1_connect ('localhost','root',' '); $db = mysq1_select_db ('zzzz' , $conn); $sq1 = "select * from zzzz"; $result = mysq1_query($sq1 , $conn);

Page 117: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

117

الدالــــــــةو mysql_fetch_array الدالــــــــة( االســــــــتعالم وطباعتــــــــه اســــــــتقبالmysql_num_rows:(

الدالة من إرجاعه بأخبارك كم صف تم تقوم mysql_num_rows الدالةmysql_query , الحظ المثال التالي:

$conn = mysq1_connect ('localhost','root',' '); $db = mysq1_select_db ('zzzz',$conn); $sq1 = "select * from zzzz"; $result = mysq1_query($sq1 , $conn); $number = mysq1_num_rows ( $result );

:الدالة باستخدام نقوم بعرض النتائج فسوف نقوم أن أردنالو و

mysql_fetch_array الدالة تعطيها ناتج االستعالم من الدالة وهذه mysql_query بإرجاع الدالة دالة تكرار وتقوم أي تقوم بطباعته عن طريق وهي

البيانات قاعدة اسم العمود في هو key مفتاحها ة حرفيمصفوفة شكل علىالناتج . ما يقابل هذا العمودهو value القيمةو

Page 118: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

118

:مثال عملي بسيط : لمدير أو مسؤول قاعدة البياناتحساب

phpmyadminتعلمنا فيما سبق كيف يمكننا إنشاء قاعدة البيانات من خالل من خالل ملف adminواآلن سننشئ اسم القاعدة فقط وسنتمم إنشاء الجدول

config.php وملف install.php. ...تعلمنا سابقا

.Config إذن سننشئ قاعدة البيانات أوال ومن ثم ملف الـ

Page 119: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

119

config.phpسنكتب اآلن الكود الخاص بالملف <? المستضيف ال تعدل عليه //$db_host="localhost"; للسيرفر المحلي ال تعدل عليه //$db_user="root"; للسيرفر المحلي دعه فارغ //$db_pass=""; اسم قاعدة البيانات اختياري //$db_name="qq"; $reslut_connect= mysql_connect("$db_host","$db_user","$db_pass") or die ('ھناك خطأ في بيانات االتصال بقاعدة البيانات'); mysql_select_db ($db_name,$reslut_connect) or die ;('ھناك خطأ في بيانات االتصال بقاعدة البيانات')?>

..نفذ الكود السابق كما هو... اقرأ الكود بعناية وحلله: واآلن نحن بحاجة إلـى ملـف تحميـل لتثبيـت الجـدول الـسابق فـي قاعـدة البيانـات وهـو

install.php. :ويكون الكود الخاص به على الشكل التالي

<?php include("config.php"); $abosaleh_admin_create = mysql_query(" CREATE TABLE `admin` ( `user` varchar(250) NOT NULL default '', `password` varchar(250) NOT NULL default '', `id` int(11) NOT NULL auto_increment, PRIMARY KEY (`id`) ) TYPE=MyISAM;");

نضع هنا شرط للتأكد من اتمام انشاء الجدول او هناك مشكلة //if($abosaleh_admin_create){

Echo "</font><center><b><a href='create_login.php'> مبروك تم إنشاء الجـدولاضغط هنا إلدخال اسم المدير والباسورد.... </a> ";

}else{

Echo "<center><b>لم يتم انشاء الجدول تأكد من الكود الخاص بملف الـ config";

} ?>

Page 120: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

120

فـي حـال كانـت كافـة الخطـوات الـسابقة صـحيحة سـيظهر لنـا التـالي عـن تـشغيل ملــف install.php . الجـــدول تأكـــد مـــن الكـــود الخـــاص إنـــشاءلـــم يـــتم واال ســـتظهر رســـالة الخطـــأ

.config بملف الـ ...اقرأ الكود بعناية وحلله

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

create_login.php

:وذلك حسب الكود التالي<?

ECHO "<div align='center'>"; <h3><b><p>أدخل اسم المدير والباسورد للمرة األولى <br></p></h3></b>

<table border='3' cellpadding='0' cellspacing='0' style='border-collapse: collapse; ' bordercolor='#111111' width='33%' id='AutoNumber1' bgcolor='red'> <tr><form method='post' action='login.php?Next=outinstall'> <td width='100%' align='center' style='border-style: 1; border-width: medium'> <br><h3><b>

<td></h3></b/>اسم المدير

Page 121: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

121

</tr> <tr> <td width='100%' align='center' style='border-style: 1; border-white: medium'> <span lang='en-us'><input type='text' name='AdminName' size='38'></span></td> </tr> <tr> <td width='100%' align='center' style='border-style: 1; border-width: medium'> <br><h3><b>

<td></h3></b/>كلمة المرور

</tr> <tr> <td width='100%' align='center' style='border-style: 1; border-width: medium'><input type='text' name='AdminPass' size='38'></td> </tr> <tr> <td width='100%' align='center' style='border-style: none; border-width: medium'> <p dir='rtl'><span lang='en-us'> <br>

<input type='submit' name='save' size='38' value=' تـسجيل ' style='line-

height: 150%; border-style: 2; border-width: 1'><br> &nbsp;</span></td> </tr> </table> </center> </div></form>"; ?>

...اقرأ الكود بعناية وحلله

فــي حــال ســالمة كافــة الخطــوات الــسابقة عــن الــضغط علــى الــرابط فــي صــفحة الملــف install.phpستظهر لنا النتيجة التالية ...

Page 122: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

122

بطهـا بفـورم مناسـب لهـا حتى اآلن كل ما فعلناه هو إنشاء جدول فـي قاعـدة بيانـات ورولكـــن الخطـــوة األهـــم اآلن هـــي كيـــف ســـيتم تـــسجيل االســـم وكلمـــة المـــرور فـــي قاعـــدة

sql مـــن دوال الــــــ مهمــــةدالـــه نحــــن هنـــا بـــالطبع بحاجــــة إلـــى )... الجـــدول(البيانـــات . أقـواس البيانـات المدرجـة بـين إدخـال وعملهـا INSERT INTOهـي وتـذكرها دائمـا

login.phpي ملف لذا نضع الكود التالي ف<? require('./config.php'); $Re=mysql_query("INSERT INTO admin(user,password)"."VALUES ('$AdminName','$AdminPass')"); if($Re){ echo("<center><b> تم إنشاء حساب للمدير بنجاح<br><br></font><br> </font><a href='admin/index.php'> للتوجـة الـى لوحـة الـتحكم ـ طبعـا اضـغط هنـا <a><br/>يمكنك الربط مع أي صفحة داخل موقعك <a href='index.php'>اضغط هنا للتوجة الى الصفحة الرئيسية</a><br><br>"); echo("<center><b>اآلن يمكنك حذف ملف التحميل فلم يعد له أهمية <br><br>"); }else{ echo("<br><br><cnter><b>لم يتم انشاء حساب للمدير <br><br>"); } ?>

Page 123: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

123

...اقرأ الكود السابق بعناية وحلله ....اضغط تسجيل اآلن في الصفحة السابقة وشاهد النتيجة

بقيـــت خطـــوة واحـــدة اآلن وهـــي كيـــف ســـنتأكد مـــن أن البيانـــات قـــد حفظـــت فـــي قاعـــدة

....بالبيانات واألهم هل تم فعال إنشاء الجدول المطلوونقوم بفـتح قاعـدة البيانـات phpmyadminللتأكد من ذلك نعود ثانية إلى البرنامج

qqفسوف نشاهد... والتي سبق وأنشئناها....

Page 124: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

124

...استعرض الجدول وشاهد... قد أنشئadminالحظ أن جدول

هــل الحظــت اآلن بــأن األعمــدة التــي طلبنــا إنــشائها موجــودة وأن اســم المــدير وكلمــة .لمرور قد تم حفظها في قاعدة البياناتا

طبعا التعامل مع قواعد البيانات رغم كونه ممتع إال أنه بحر ال قرار لـه وسـوف أتـرك لك عزيزي الطالب هذه المتعة فكلما حاولت إنشاء قواعد بيانـات وربطهـا كلمـا اقتربـت

وع قــدر مــن االحتــراف وهــذا منــوط بمــدى تفهمــك لمــا ســبق فقــد حاولــت تبــسيط الموضــ ...واآلن جاء دورك... اإلمكان

Page 125: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

125

التعامل مع امللفات واجمللدات

وأبت، يعداد للسكرسوف يستخدم برنامجك الملفات لكي يقوم بتخزين معلومات اإل .ةنات المؤقتاو لكي يقوم بحفظ البيأيقوم بتخزين البيانات لقراءتها وكتابتها،

: الملفاتواغالقفتح

Fopen :ثـــالث عوامـــل هـــي مـــسار الملـــف ةدالـــتـــستخدم هـــذه ال )path ( والوضـــع لـــه ...مسارال ىلإ باإلضافة .....) ةللكتاب للقراءة،(

و أو يعمـل أ ال أو للفـتح ذا كان قابال إ الذي يخزن فيه مكان الملف وماfp$المتغير ذا كان الملف الإ هي رقم وهو صفر fp$ التي تتخزن في المتغير ةيعمل، والنتيج ال ..ذا تم فتح الملف بنجاحإو واحد أل يعم

..إال أنه يجب مراعاة القيم التالية عن وضع الكود ةالقيم الوصف

r تفتح الملف للقراءة فقط ويكون المؤشر في بداية الملف

+r الملفة ويضع المؤشر في بدايةوالكتابة يفتح الملف للقراء

ذا لم يكن الملف موجودا إ مسحها، سيتمةيفتح الملف للقراءة فقط، أي بيانات موجود نشاؤهإ PHPسيحاول

w

ذا لم يكن الملف إ سيتم مسحها، ةيفتح الملف للقراءة والكتابة، أي بيانات موجود نشاؤهإ PHPموجودا سيحاول

w+

نشاؤه، سيكون إ PHP سيحاول ذا لم يكن الملف موجوداإ فقط، ةضافيفتح الملف لإل المؤشر في نهاية الملف

a

نشاؤه، إ PHP سيحاول ذا لم يكن الملف موجوداإ ،ةضاف ولإلةيفتح الملف للقراء سيكون المؤشر في نهاية الملف

a+

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

b

Page 126: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

126

:مثال بسيط ... إنشاء ملف وورد مثال سنحاول

<? $fp= fopen("azzam.doc","w"); ?>

...وهكذا يمكننا إنشاء الملف الذي نريدأما إذا كان الملف قد تم إنشاءه مسبقا ففي هـذه الحالـة سـيتم حـذف محتوياتـه ويـصبح

...ملف فارغ جديد

Fread :ووضــعها لملفــات فــي اة واســتخراج البيانــات الموجــودة بقــراءةتقــوم هــذه الدالــول هو الملف والثاني هـو عـدد الحـروف المـراد خذ معاملين المعامل األأبمتغير وهي ت

..قراءتها :مثال

$fp=fopen("data.txt","r"); $data=fread($fp,10);

Fgetc :ي تـستخدم هـ، وة حرف واحد من الملف في كل مـر لقراءةةتستخدم هذه الداللــى إعنــد الوصــول ) False(و ألــف مجــاع حــرف واحــد مــن الرإ وتقــوم ب واحــدامعــامال

..نهاية الملف

Feof :الملــف عنــد قراءتــهةلــى نهايــإكنــا قــد وصــلنا ذا مــاإ ة بمعرفــةتقــوم هــذه الدالــ .و حصول خطأ ماأ الملف ةلى نهايإعند الوصول ) true(وتقوم بإرجاع

Page 127: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

127

:مثال وسمه PHPنشاء ملف إ سطر ثم قم بكثر منأ واكتب فيه file.txtسمه و ا ملفئنشأ :ة التاليةي اسم وضع فيه الشفرأب

<? $fp= fopen("file.txt","r"); While (!feof($fp)) { $char=fgetc($fp); echo $char; } ?>

Fgets : يتــات وهــي تأخــذ معــاملين، المعامــل باتــساعدنا فــي قــراءة عــدد محــدد مــن ال .1+هو عدد الحروف المراد قراءتها ول هو الملف والثاني األ ةات المحدد تياذا تم قراءة عدد البإهو : ول األ

Fputs :الدالة ةتقوم بنفس وظيف fwriteخذ نفس معامالتها ونفس طريقتها أ وت..

File :لـــى معامـــل واحـــد هـــو مـــسار الملـــف وعملهـــا هـــو قـــراءة مـــاإ ةتحتـــاج هـــذه الدالـــ خــذ أ تقــوم بةن هــذه المــصفوفأ حيــث ة فــي مــصفوف ســطرابــداخل الملــف وتخزينــه ســطرا

ةن المــصفوفأأي (نــه عنــصر لوحــده وتظــل الــسطور ســطوراأكــل ســطر فــي الملــف كغـالق الملـف اوهـي تقـوم بفـتح وقـراءة و) بـداخلها) n\(تحتفظ بالمعامل للـسطر الجديـد

...تلقائيا ..ةيج الخارنترنتنها تستطيع قراءة صفحات اإلإوكغيرها من الدوال ف

نها تقوم ألة لقراءة الملفات الطويلةتقوم باستعمال هذه الدال ن الأمع ذلك يستحسن ...وقد تستخدمها كلها PHP للـ ةالمحجوز كبير من الذاكرةقدرباستخدام

Page 128: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

128

:مثال<? $fcontents = file ('file.txt'); while (list ($line_num, $line) = each ($fcontents)) { echo "<b>Line $line_num:</b> $line <br>\n"; } ?>

Fpassthru :ــ التــي توقــف ة مــن النقطــة بقــراءة محتويــات الملــف بدايــةتقــوم هــذه الدال الملــف ةخــرى، وتقــوم بــالتوقف عنــد نهايــأ قــراءه ةمنهــا المؤشــر الــوهمي عنــد أي عمليــ

ة الدالــة بواســطغــالق الملــفداعــي إل غالق الملــف مــن تلقــاء نفــسها لــذلك الإوتقــوم بــfcloseبقــراءة المحتويــات وطباعتهــا بــشكل ة، وتقــوم الدالــة بعــد اســتخدامك لهــذه الدالــ .قياسي :مثال

<? $fp=fopen("file.txt","r"); fpassthru($fp) ?>

Readfile :مـسار الملـف ىلـإ بقراءة جميع محتويات الملـف وتحتـاج ةتقوم هذه الدال

رجـاع عـدد إيات الملف ثم طباعتها بـشكل قياسـي وتقـوم بفقط وتقوم بقراءة كامل محتو عند حدوث خطأ ما ) false(و أالبايتات التي تم قراءتها

<? Readfile ("file.txt"); ?>

File_exists : م ال وهـي أ ذا كـان الملـف موجـودا إكـد مـاأ بالقيـام بالتةتقوم هذه الدالذا كـــان الملـــف إ) true) 1اع رجـــإتحتـــاج معامـــل واحـــد وهـــو مـــسار الملـــف، وتقـــوم ب

:ذا كان الملف غير موجودإ false و موجودا

Page 129: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

129

<? $Th=File_exists("file.txt"); echo $Th ; ?>

Filesize : ــ عنــد حــصول falseو أرجــاع حجــم الملــف بالبايتــات إ بةتقــوم هــذه الدال ...خطأ

<? $Th=Filesize("file.txt"); echo $Th ." "."Bit"; ?>

Fileowner : تقوم بإرجاع رقم المعرف)ID ( لمالك الملف...

Filegroup : تقــــوم بإرجــــاع رقــــم المعــــرف)ID (التــــي يعتبــــر مالــــك ةلــــرقم المجموعــــ ..الملف ضمنهم

Filetype : هـذه القـيم ىحـدإتقوم بإرجاع رقـم نـوع الملـف وقـد تعـود ب )file ، dir ، char، fifo ، link، block ( والذي يهمنا منهم هوfileو dir...

Is_dir : وتقوم بإرجاعTrue ذا كانت قيمه المسار هو مجلد إ..

Is_file : وتقوم بإرجاعTrue ذا كانت قيمه المسار هو ملف إ..

Copy () :لي مصدر الملف الرئيسي الذي يوجد إخذ قيمتين حرفتين وتشير أتقوم ب ...ه إلي PHPوالمصدر الهدف الذي سيتم نسخ الـ فيه الملف

<? if (!copy($file, $file.'.bak')) { print ("failed to copy $file...<br>\n"); } ?>

Page 130: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

130

Rename: ىلـإعـادة تـسمية الملـف وهـي تحتـاج إلةن اسـتخدام هـذه الدالـنستطيع اآل مكانـه واسـمه الرئيـسي ثـم االسـم الجديـد الـذي وأقيمتين حرفتين وهي المـصدر الملـف

..ية به عادة التسمإتريد <? Rename ('file.txt','newfile.txt'); ?>

ننـــا نتعامـــل مـــع المجلـــدات ، فهنـــاك دوال إ فPHPـمثلمـــا تعاملنـــا مـــع الملفـــات فـــي الـــ فقــط ة الحرفيــةلــي القيمــإللمجلــدات تتطلــب مقــبض المجلــد ، وهنــاك دوال تحتــاج فقــط

ا نقوم بالدخول في الموضوع مباشرة دعن ةطال من اإلوبدالOpendir :عطائنا مقبض المجلداتقوم بفتح المجلد و.

Closedir() :لى مقبض المجلدإالمجلد المفتوح وتحتاج فقط غالقإتقوم ب. Readdir :للمجلديتقوم بقراءة المدخل الحال .

Rewindir :رجاع المدخل من الصفرإتقوم ب. Chdir : ليهإالنتقال ي تريد اذخر، وتتطلب المسار للمجلد الآ مجلد ىلإلالنتقال.

Rmdir : و أ مـــن أي ملفـــات ن يكـــون المجلـــد خاليـــاأتقـــوم بمـــسح مجلـــد، ولكـــن يجـــب .مجلدات، وتتطلب مسار المجلد الذي تريد مسحه

Mkdir :ن يكـون هـذا المجلـد غيـر موجـود مـسبقاأنـشاء مجلـد جديـد وتتطلـب إتقوم ب .ص المطلوب لهمتين وهما اسم المجلد الجديد مع مساره، والترخيي قىلإوتحتاج

Dirname : مـسار ىلـإ الـذي فيـه الملـف، وتحتـاج يعطائنا اسم المجلد الحالإتقوم ب .الملف

Page 131: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

131

معاجلة األخطاء هـو مـن المـصطلحات الـشائعة فـي عـالم البرمجـة، وهـو debbugإن مصطلح الـ

يـــشير إلـــى كيفيـــة إصـــالح أخطـــاء البرنـــامج وتوقعهـــا قبـــل حـــدوثها، هنـــاك أنـــواع مـــن ث بـسبب المبـرمج وهنـاك أنـواع مـن األخطـاء تحـصل بـسبب المـستخدم، األخطاء تحـد

في العادة يجب أن يكون المبرمج متآلفا مع مصطلح تتبع األخطاء واصالحها .

قد يكون من أهداف تتبع األخطاء الحمايـة بقـدر أهميـه البرنـامج الجـاري العمـل .أكبرعليه أو الموقع فكلما كان الموقع مهما كان وجوب حمايته

لهـا طريقتهـا وتقنيتهـا الخاصـة التـي تـسير عليهـا فهـي PHPرسائل الخطأ فـي الــ

ال تقوم بإرسـال الخطـأ إلـى الـسيرفر بـل PHP فالـ cgiليست مثل الجافا وليست مثل .تقوم بكتابة رسالة خطأ في مكان الخطأ

قــد يكــون هنــاك أخطــاء يــصعب تتبعهــا أو معرفــة مكانهــا فــي األصــل، وقــد يكــون فـــي صـــناعة موقـــع دينـــاميكي وتـــشرك معهـــا الجافـــا PHPهـــذا بـــسبب أنـــك تـــستخدم الــــ

سكريبت وتـضع عالمـات التعليـق الخاصـة التـي تقـوم بإخفـاء األخطـاء فـي الجافـا ممـا . قد يجعلك تشعر بالحيرة وتجن أين مكان الخطأ

:أنواع األخطاءهــا المنطقيــة ومنهــا ومن) Syntax Error(هنــاك أنــواع مــن األخطــاء منهــا اإلمالئيــة

:أخطاء تحدث في وقت التنفيذ

:ومثال األخطاء اإلمالئية<?

Eco "1"; :من المفترض أن تكتب التالي //Echo "1";

Page 132: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

132

?>

Parse errorهذا سيعطيك رسالة خطأ : في نهاية الدالة) semi-colon(ومن األخطاء اإلمالئية نسيان الفاصلة المنقوطة

<?

Echo "hello" :من المفترض أن تكتب التالي //Echo "hello"; ?>

رســـالة خطـــأ لكـــن العجيـــب أنـــه لـــن يعطيـــك إياهـــا بـــشكل PHPهنـــا ســـوف يعطيـــك الــــصحيح فرسالة الخطأ تشير إلى أن السطر الرابع يحتوي على الخطأ بينمـا الخطـأ هـو

.في السطر الثاني ): وهي األقواس (braceوهناك خطأ آخر يحصل بسبب نسيان الـ

<? Php for ($loop = 0 ; $loop < 5 ; $loop ++ ) { Echo “”; ?>

إذا كنــت قــد نــسيت إغــالق القــوس فهــذا مــن األخطــاء الــشائعة، واألخطــاء اإلمالئيــة ال يمكــن حــصرها، إنهــا أشــبه بقواعــد اللغــة، لكــن أكثــر األخطــاء اإلمالئيــة الــشائعة فــي

PHPبرامج الـ :مثال. نسيان األقواس – 1

<? for ($loop = 0 ; $loop < 5 ; $loop ++ ) { for ($loop1 = 0 ; $loop1 < 10 ; $loop1 ++ ) { for ($loop = 0 ; $loop < 5 ; $loop ++ ) { code …. } }

Page 133: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

133

){( في المثال السابق ينقصنا قوس إغالق التكرار األخير :مثال. نسيان الفاصلة المنقوطة - 2

<? Echo 10 <?

:مثال . function خطأ إمالئي في اسم - 3<? Htmlspecialchar($I); ?>

:سيعطيك رسالة خطأFatal error: call to Undefined function: htmlspecialchar().

:وتصحيحها أن تكون <? Htmlspecialchars($I); ?>

:مثال. نسيان إغالق النص - 4

<? Echo “arabbuilder; ?>

Parse errorوسيعطيك . في نهاية الكلمة (") ن الـنسيا

Page 134: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

134

):Logical Errors(األخطاء المنطقية

إن األخطــاء المنطقيــة هــي األكثــر صــعوبة فــي التتبــع فقــد تجــد برنامجــك يعمــل بشكل صحيح وبكل سالمة ولكنه عند نقطة ما اليـتم تنفيـذها كمـا تريـد أنـت، لنـضرب

ط جـدا، لنفـرض أنـك قمـت بعمـل نمـوذج مكـون مـن مربـع مثال على خطـأ منطقـي بـسينص وزر، عند ضغطك لهـذا الـزر فأنـت تريـد أن يـتم كتابـة كلمـة كبيـر إذا كـان الـرقم

لــنقم بكتابــة الكــود للمثــال 30 وكلمــة صــغير إذا كــان الــرقم أصــغر مــن 30أكبــر مــن :األول

<?

echo "ادخل عمرك:" ;

echo '<br> <form method = "post" action = "age.php"> <input type= "text" name = "age"> <br>

<input type= submit value = "هل أنا كبير أم صغير ؟" >

</form>' ; ?>

: اكتب الكود التاليage.phpفي ملف

<?

If ($age<30) echo “أنت صغير”;

If ($age>30) echo “أنت كبير”;

?>

ولكــــن ربمــــا تخطــــأ أنــــت فــــي كتابــــة العالمــــات .. ســــيعمل الــــسكريبت بــــشكل صــــحيح .فتأتي النتائج بشكل خاطئ ) التي باللون األحمر ( المنطقية

Page 135: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

135

) Run times error(ومـن األخطـاء المنطقيـة األخطـاء التـي تقـع فـي وقـت التـشغيل .والتي تكون قد تقوم بإيقاف برنامجك بشكل كامل

:مثال<? $t=0; $r=1; $f=$r/$t; ?>

دها سينتج لك الرسالة التالية وعنWarning: Division by zero in (path) on line (line number )

وهو ال يقـوم بإيقـاف البرنـامج ) unexpected(هناك نوع آخر من األخطاء المنطقية نهائيـــا بـــل يقـــوم بـــإخراج رســـالة الخطـــأ فـــي مكـــان الخطـــأ أو قـــد يقـــوم بتنفيـــذ البرنـــامج

. بشكل غير صحيح أو قد ال يقوم بإخراج بياناتواخراج البيانات

: أخطاء التكرارات : قد يكون لديك أيضا تكرار فيه خطأ وال يقوم بالتوقف نهائيا مثل هذا التكرار

$c=1; $t=true; while ($t=true) { $c++; }

ثم يقوم ) $c(لم نقم بعمل شي يوقف التكرار مثل أن تضع شرط يختبر قيمة المتغير بإيقافه عند تعديه رقم معين وعلى ذلك فـإن التكـرار سيـستمر بـشكل غيـر متوقـف ولـن

.يعمل البرنامج

Page 136: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

136

: functionعدم إرجاع قيمه من

:مثال<? Function ($d) { $d =$d+$d; }

لكي ننهـي الدالـة أو قـد تكـون الدالـة تحتـوي علـى returnالخطأ هنا أننا لم نستخدم الـ . نقوم بتحديد القيمة النهائية للدالةأكثر من قيمة ولم

:الخلط في المعامالت الحسابية والمنطقية

:مثالIf ($y=10) echo 12 ;

:والمفترض أن تكونIf ($y= =10) echo 12 ;

Page 137: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

137

:لتفادي األخطاءإن مــن األفكــار الجيــدة للتقليــل مــن األمــاكن التــي تبحــث فيهــا عــن الخطــأ : التعليقــات

: مثال. وصف وظيفة دالة معينة هو وضع تعليقات ل<?

هذه الكود يقوم بطباعة كلمة أحمد //Echo “أحمد” ;

?>

وأيضا مـن األفكـار الجيـدة أن تقـوم بتقـسيم وظـائف البرنـامج علـى دوال بحيـث : الدوال

:أن لكل دالة وظيفتها المعينة<? /* +- --------------------------------------------------------------+

2هذه الدالة تقوم بقسمه العدد على | |

+- --------------------------------------------------------------+ * / function ($U) { $U=$U/2; return $U ; } ?>

Regular Expressions أن يقـــوم هـــذه التقنيـــة تـــساعدك علـــى تفـــادي األخطـــاء فـــي صـــفحتك عنـــد حدوثـــه مثـــل

هذا البريد غيـر ) a@[email protected]: مثال(مستخدم ما بكتابة بريد إلكتروني غير صحيح صحيح وألجل أن تقوم بمنع حـصول أي خطـأ مثـل ذلـك وتقييـد العبـارات التـي يـدخلها

إنــك باألصــح ) RE) Regular Expressions/المــستخدم فإنــك تقــوم باســتخدام الـــ ســوي لستخدم فمــثال تجعــل المــستخدم ال يــدختجعــل قواعــد للكلمــات التــي يــدخلها المــ

Page 138: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

138

أرقام أو حـروف فقـط أو شـكل معـين مـن الكلمـات، تقـوم أوال بإنـشاء نمـط للكلمـة التـي .تريد المستخدم أن يقوم بإدخالها

:echoاستخدام عبارة

هــو مــن أقــدم األســاليب وكــان يــستخدم مــثال فــي فحــص بعــض متغيــرات نمــوذج م بإرسـال معلومــات إلـى النمــوذج وقــد تـستخدم فــي اختبــار فمـثال أنــت لـديك نمــوذج يقــو

:مثال. األخطاء المنطقية التي يستصعب متابعتها في الكود<? Echo “this is: $name”; Echo “<br>”; Echo “this is: $Email”;

كود يقوم بمعالجة معلومات المتغيرين//// نتائجطباعة المتغيرين بعد اداء عملية المعالجة ورؤية ال

Echo “this is after: $name”; Echo “<br>”; Echo “this is after: $Email”; ?>

قـــد تـــستخدم كـــود جافـــا ســـكريبت ويـــتم إخفـــاء األخطـــاء وســـط : htmlفحـــص كـــود الــــ لرؤيـــة إن كـــان هنـــاك بعـــض htmlعالمـــات التعليقـــات فعليـــك حينئـــذ فحـــص كـــود الــــ

.األخطاء المخفية أم ال

Page 139: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

139

:تجاهل األخطاءنفتـــرض أنـــك تعلـــم أن الدالـــة التـــي صـــنعتها بهـــا أخطـــاء ولكنـــك تريـــد تجاهـــل هـــذه ل

أمــام الدالــة لكــي يــتم تجاهــل الخطــأ عنــد @ أن تقــوم بوضــع كاألخطــاء فكــل مــا عليــ .حدوثه

وأنــت PHPمــثال نحــن نعلــم أن القــسمة علــى الــصفر مــن األشــياء الغيــر مقبولــة فــي الـــيتم تنفيذها ألنها باألصل خطأ ولكنـك تريـد صنعت دالة تقوم بالقسمة على صفر ولن

. أمام الدالة@ بتجاهلها فكل ما عليك أن تفعله هو وضع PHPأن يقوم :مثال

<? function amail ($y) { $y=$y/0; return $y; } $s= @amail(44); echo $s; ?>

Page 140: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

140

أمثلة متنوعة :إنشاء كود عشوائي ـ رموز تأكيد التسجيل

تحتـوى والتـيتمـر بمرحلـة الـصورة العـشوائية فـي بعـض المواقـع يل عمليـة التـسجأثناء . كما في الصورة حتى تتم عملية التسجيلإدخالها وحروف يجب عليك أرقامعلى

فكيـــف يـــتم إنـــشاء مثـــل هـــذه الـــصورة التـــي يـــتم انتقـــاء األحـــرف واألرقـــام فيهـــا بـــصورة بإدخالها أنتما تقوم تظهر على الصورة بينالتيوكيف يتم تمييز الحروف عشوائية؟

؟من لوحة المفاتيح

.كواد خطوة خطوةشرح األو phpشرح كيفية عمل ذلك بواسطة ن سوف اآلن

تكوين الصورة، ويكون ذلك كالتالي:

Header("Content-Type: image/png");

ضع كود الجلسة كما يلين اآلن :

session_start(); $new_string; session_register('new_string');

Page 141: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

141

الصورة بإنشاء الكود الخاص :

$img = ImageCreate(200, 40); $white = ImageColorAllocate($img, 255, 255, 210); $black = ImageColorAllocate($img, 0, 100, 222);

الـــصورة باســـتخدام أبعـــاد كرمـــز للتعبيـــر عـــن الـــصورة، وحـــددنا img المتغيـــر ناوضـــعاســتخدمنا لــونين بــالطبع يمكــن تغييــر األبعــاد الخاصــة بهــا، وimage createالــة الد

األرقـام بتغييـر قـيم األلـوانيمكن تغييـر مختلفين ورمزنا لهما باألبيض واألسود إال أنه .في الكود

0,0,0: األسود255,255,255: األبيض: مالحظة

لألرقـامود العـشوائي وهـي عمـل الكـهامـة جـدا وأساسـيةمرحلـة اآلن إلـى ننتقل الدالــة و للتــشفير md5والحــروف التــي ســتظهر علــى الــصورة باســتخدام نظــام

srand المسؤولة عن توليد األرقام واألحرف العشوائية .

srand((double)microtime()*1000000);

وحروف ألرقام وتحويله الكود تشفير.

$string = md5(rand(0,9999));

عـددـ يـتم جلبهـا مـن المتغيـر التـي عـدد الخانـات ـالمتغيـر : تنحدد ثـالث خيـارا .8وهي هنا رقم اخل المتغير الجديد دالتي ستظهر ـ واألرقامالحروف

$new_string = substr($string, 17, 8);

Page 142: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

142

كود داخل الصورة واألاأللواننظم ن : ImageFill($im, 0, 0, $black);

40×200 الـــصورة هـــي إن أبعـــاد. علـــى الـــصورةنحـــدد مكـــان ظهـــور األرقـــام ، : مثالونجرب ما نراه مناسباحدد ن

ImageString($img, 5, 65, 10, $new_string, $white);

.img هو الصورة األولمتغيرال

.5 إلى 1 رقم من أيمتغير الثاني هو حجم الخط يمكن استخدام ال

ورة ، احداثي نقطة بداية الكتابه على الص10 و 80

$new_stringالكود الذي قمنا بتشفيره وجلبة من دالة التشفير .

$white األبيض وهو هنا اللون الكتابة لون خط.

؟؟...الحظ أننا حددنا األلوان أكثر من مرة

التجهيز النهائي للصورة:

اسم يمكن استخدامه في أي مكان في الـصفحة مثلهـا مثـل أي الصورة نعطيأن يبق :صورة عادية

ImagePNG($im, "lolo.png"); ImageDestroy($img);

، فقـــط قمنـــا بتحويـــل كافـــة المعلومـــات التـــي قمنـــا verify.png الـــصورة اســـم أعطينـــا image صـورة وسـميناها اسـم جديـد، ثـم اسـتخدمنا دالـة إلـى img للمتغيـر بإدخالهـا

destroy المدخلة من البياناترالسيرف تحرير ذاكرة مهمتها، وهذه الخطوة .

Page 143: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

143

نقوم اآلن بترتيب األكواد السابقة حسب التسلسل على الشكل التالي: <?php Header("Content-Type: image/png"); session_start(); $new_string; session_register('new_string'); echo "<html><head><title>lolo</title></head>"; echo "<body>"; ECHO "<div align='center'>"; $img = ImageCreate(200, 40); $white = ImageColorAllocate($img, 255, 255, 255); $black = ImageColorAllocate($img, 0, 0, 0); srand((double)microtime()*1000000); $string = md5(rand(0,9999)); $new_string = substr($string, 20, 8); ImageFill($img, 0, 0, $black); ImageString($img, 5, 65, 10, $new_string, $white); ImagePNG($img, "lolo.png"); ImageDestroy($img); echo "<img src=\"lolo.png\">"; echo "<br><br>";

echo "<b>"." وانتبـه إلـى وضـعية األحـرف ادخل األرقام واألحرف التي تشاهدها في الـصورة ;"<b/>"." الكبيرة او الصغيرة

echo " <form action=\"handler.php\" method=post>"; echo "<input name=\"random\" type=\"text\" value=\"\">"; echo "<input type=\"submit\">"; echo "</form>"; echo "</body>"; echo "</html>"; ?>

لنستطيع من خالله ملف جديد تمت إضافة ألننا سننشئ خضرالكود باللون األ .. التأكد من أن ما كتبه المستخدم مطابق للصورة أم ال

Page 144: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

144

: ونضمنه الكود التاليhandler.phpالملف الجديد اسمه

.وهو كود لجملة شريطة بسيطة سبق وأن تعاملنا معها<? ECHO "<div align='center'>"; session_start(); $random = trim($random); if ($new_string == $random) {

echo "<b>"." المطابقة صحيحة يمكنك المتابعة ";

} else{

echo "<b>"."ال يوجد مطابقة يرجى الرجوع واعادة المحاولة";

} ?>

:جرب اآلن الملف األول

:لرسالة التاليةفي حال المطابقة ستظهر ا

Page 145: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

145

:أما في حال عدم وجود مطابقة فستظهر الرسالة التالية

Page 146: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

146

:IPمعرفة رقم الـ <? $IP = gethostbyname("www.yahoo.com"); echo $IP; ?>

:تحويل التاريخ من ميالدي إلى هجري

<HTML DIR=RTL> <? function hijri($GetDateFormat,$DFormat) { //start function $Days=@date("D"); //print day name+Saturday-->Friday //start hijri function date $TDays=round(strtotime($GetDateFormat)/(3600*24)); $HYear=round($TDays/354.3667); $Remain=$TDays-($HYear*354.3667); $HMonths=round($Remain/29.5305); $HDays=$Remain-($HMonths*29.5305); $HYear=$HYear+1389; $HMonths=$HMonths+10; $HDays=$HDays+23; //hijri function days between [29:30] if ($HDays>29.5305 and round($HDays)!=30) { $HMonths=$HMonths+1; $HDays=Round($HDays-29.5305); } else { $HDays=Round($HDays); } //hijri function months if ($HMonths>12) { $HMonths=$HMonths-12; $HYear=$HYear+1; } //hijri month names [print month name] if ($HMonths=="1") $hmname="محرم";

Page 147: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

147

if ($HMonths=="2") $hmname="صفر"; if ($HMonths=="3") $hmname="ربيع األول"; if ($HMonths=="4") $hmname="ربيع الثاني"; if ($HMonths=="5") $hmname="جمادى األولى"; if ($HMonths=="6") $hmname="جمادى الثانية"; if ($HMonths=="7") $hmname="رجب"; if ($HMonths=="8") $hmname="شعبان"; if ($HMonths=="9") $hmname="رمضان"; if ($HMonths=="10") $hmname="شوال"; if ($HMonths=="11") $hmname="ذو القعدة"; if ($HMonths=="12") $hmname="ذو الحجة"; //day function [print day name] if ($Days=="Sat") $dd="السبت"; if ($Days=="Sun") $dd="األحد"; if ($Days=="Mon") $dd="االثنين"; if ($Days=="Tue") $dd="الثالثاء"; if ($Days=="Wed") $dd="األربعاء"; if ($Days=="Thu") $dd="الخميس"; if ($Days=="Fri") $dd="الجمعة"; $les = strlen($DFormat); for($i=0; $i<=$les; $i++) { $df[$i]= substr ($DFormat,$i,1); if($df[$i]=="A" || $df[$i]=="a") { $ddf=@date("a",$GetDateFormat); if(substr($ddf,0,1)=="a") { $Result.="صباحا "; } else { $Result>="مساء "; } } elseif($df[$i]=="D") {$Result.="$dd";} elseif($df[$i]=="d") {$Result.="$HDays";} elseif($df[$i]=="m") {$Result.="$HMonths";} elseif($df[$i]=="M") {$Result.="$hmname";} elseif($df[$i]=="y") {$Result.="$HYear";} elseif($df[$i]=="Y") {$Result.="$HYear"."هجري";} elseif($df[$i]=="g") {$Result.=@date("g",$GetDateFormat);}

Page 148: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

148

elseif($df[$i]=="G") {$Result.=@date("G",$GetDateFormat);} elseif($df[$i]=="i") {$Result.=@date("i",$GetDateFormat);} elseif($df[$i]=="H") {$Result.=@date("H",$GetDateFormat);} elseif($df[$i]=="h") {$Result.=@date("i",$GetDateFormat);} elseif($df[$i]=="s") {$Result.=@date("s",$GetDateFormat);} else { $Result.=$df[$i]; } } return $Result; //end hijri function date } echo hijri(2004-04-28,"d M Y")."<BR>"; ?>

:معرفة معلومات السيرفر

<? $s=getenv ("SERVER_ADDR"); $os=PHP_OS; echo"<br>"; echo "IP The Server..."; echo"<br>"; echo $s; echo"<br>"; echo "OS The Server..."; echo"<br>"; echo $os; echo"<br>"; echo "*******************"; echo"<br>"; //Clint Info. $ip = getenv ("REMOTE_ADDR");

Page 149: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

149

echo "Your IP..."; echo"<br>"; echo $ip; echo"<br>"; echo "*******************"; echo"<br>"; echo "ThanX For My Script"; ?>

:التعامل مع التاريخ<html dir="rtl"> <? تاريخ اليوم //$CurrentDate=date ("Y-m-d"); echo 'تاريخ اليوم'." ". $CurrentDate; التاريخ منذ أسبوع //$FromOneWeekDate=date ("Y-m-d",mktime (date("G"),date("i"),date("s"),date("m"),date("d")-7,date("Y"))); echo "<br>"; echo 'التاريخ منذ أسبوع'." ". $FromOneWeekDate; التاريخ منذ شهر //$FromOneMonthDate=date ("Y-m-d",mktime (date("G"),date("i"),date("s"),date("m")-1,date("d"),date("Y"))); echo "<br>"; echo 'التاريخ منذ شهر' . " " . $FromOneMonthDate;

Page 150: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

150

التاريخ منذ سنة //$FromYearDate=date ("Y-m-d",mktime (date("G"),date("i"),date("s"),date("m"),date("d"),date("Y")-1)); echo "<br>"; echo 'التاريخ منذ سنة'." " . $FromYearDate; التاريخ غدا //$TomrrowDate=date ("Y-m-d",mktime (date("G"),date("i"),date("s"),date("m"),date("d")+1,date("Y"))); echo "<br>"; echo 'التاريخ غدا' . " " .$TomrrowDate; ?>

:ستظهر النتيجة على الشكل التالي

:حساب الفرق بين تاريخين باأليام

<? $FromDate="2005-12-30"; $ToDate="2006-01-31"; $Difference = strtotime("$ToDate") - strtotime($FromDate); $Days=ceil ($Difference / (60*60*24)); Echo $Days; ?>

Page 151: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

151

:يالتحقق من العنوان البريد

<? $Email="[email protected]"; $RightEmail=eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[_a-z0-9-]+(\.[_a-z0-9-]+)",$Email); if ($RightEmail==1) {

Echo " ;" صحيحاإللكترونيالبريد

} Else {

Echo " ;" غير صحيحاإللكترونيالبريد

} ?>

.حاول وضع عنوان خاطئ وشاهد النتيجة

Page 152: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

152

...ارينتم

صــمم برنامجــا اختياريــا يحتــوي علــى قاعــدة بيانــات علــى أال يقــل عــن صــفحات 4

..في أي موضوع تختاره على أن يتضمن معظم ما سبق وتحدثنا عنه.. مترابطة

ثم أنشئ ملفا منفصال تشرح فيه الكود لكامل البرنامج بشكل دقيق وكامل ..

.وأرسل كافة الملفات في مجلد واحد

Page 153: لغة الـ PHP · Arab British Academy for Higher Education. PHP Course

Arab British Academy for Higher Education. PHP Course

www.abahe.co.uk

153

مع متنياتنا لكم بالتوفيق والنجاح الدائمني