Professional Documents
Culture Documents
PHP and Mysql
PHP and Mysql
أساسياتPHP
الدرس : 01الخطوة األولى تعتبر لغة PHPأداة مميزة إلنشاء صفحات انترنت ديناميكية وأكثر تفاعلية.
الدرس : 03تنصيب PHPاذا كان السيرفر لديك يدعم PHPعندها ال تحتاج لتنصيب أو فعل أي شيء.
الدرس : 04التركيبة تعمل أكواد PHPعلى السيرفر و تظهر النتيجة على المتصفح على شكل نصوصHTML
الدرس : 07الرموز الحسابية تستخدم الرموز الحسابية الضافة او تعيين عناصر معينة.
الدرس : 08تعابير اذا ..غير ذلك If…Elseتستخدم التعابير الشرطية إلنشاء أوامر مختلفة تعتمد على شروط مختلفة.
الدرس : 09تعبير switchتستخدم التعابير الشرطية إلنشاء أوامر مختلفة تعتمد على شروط مختلفة.
الدرس : 11الحلقات – الحلقة whileتستخدم الحلقات إلنشاء مجموعة من األكواد تحدد عدد مرات األرقام أو اذا كان الشرط صحيح
الدرس : 12الحلقات – الحلقة Forتستخدم الحلقات إلنشاء مجموعة من األكواد تحدد عدد مرات األرقام أو اذا كان الشرط صحيح.
الدرس : 14النماذج وطرق االدخال تستخدم المتغيرات $_GETو $_POSTإلسترجاع معلومات من النماذج مثل اسم المستخدم
وغيرها.
________________________________________
الدروس المتقدمة
الدرس : 01التاريخ و الوقت تستخدم الوظيفة )( dateلتشكيل الوقت و /أو التاريخ.
الدرس : 03التعامل مع الملفات تعتبر الوظيفة )( fopenمسؤولة عن فتح الملفات في لغةPHP .
الدرس : 04رفع الملفات من الممكن رفع الملفات الى السيرفر باستخدام لغةPHP .
الدرس : 07إرسال البريد االلكتروني تسمح PHPبإرسال بريد الكتروني مباشرة من خالل كود معين.
الدرس : 08البريد االلكتروني المحمي هناك نقطة ضعف في انشاء البريد االلكتروني لكن سيتم حل هذه المشكلة في هذا
.الدرس
الدرس : 09معالجة األخطاء معالجة األخطاء االفتراضي في PHPبسيط جداً .يتم ارسال رسالة الخطأ بإسم الملف أو رقم السطر
أو شرح الخطأ في رسالة الى المتصفح.
لفلترة و جعل البيانات شرعية التي تأتي من جهات غير محمية مثل PHPتستخدم فالتر (تصفيات)PHPالدرس : 10فالتر
.مدخالت المستخدم
________________________________________
استخدام PHPمعMySQL
الدرس : 01مقدمة MySQLتعتبر لغة MySQLأشهر نظام قواعد بيانات مفتوح المصدر.
الدرس : 03إنشاء قاعدة بيانات و الجداول تحتوي قاعدة البيانات على جدول أو اكثر.
الدرس : 04إدراج قيمة الى قاعدة البيانات تستخدم INSERT INTOإلدراج صف جديد في الجدول.
الدرس : 07الترتيب Order Byتستخدم الترتيب ORDER BYلترتيب البيانات المعروضة من قاعدة البيانات.
الدرس : 08تحديث القاعدة Updateتستخدم خاصية التحديث UPDATEللتعديل على البيانات في الجدول.
تعتبر لغة PHPأداة مميزة إلنشاء صفحات انترنت ديناميكية وأكثر تفاعلية .
يتم استخدام لغة PHPبشكل واسع و هي مجانية و لغة بديلة فعالة ومنافسة للغات برمجية أخرى
مثل . Microsoft ASP
في هذا الدورة ستتعلم الكثير عن PHPوكيفية إنشاء األكواد على السيرفر الشخصي لديك .
ننصح وبشدة لكتابة و تجريب األكواد استخدام برامج تحرير نصوص PHPمثل برنامج نوت باد بالس
Adobe بالس Notepad++و هو برنامج مجاني و جميل وأيضاً برنامج أدوبي دريم ويفر
Dreamweaver
مقدمة عامة
بي إتش بي (‘ ،PHP: Hypertext Preprocessorالصفحة الرئيسية الشخصية’“ :المعالج المسبق
للنصوص الفائقة”) هي لغة برمجة نصية صممت أساسا من أجل استخدامها لتطوير وبرمجة تطبيقات
الويب .كما يمكن استخدامها إلنتاج برامج قائمة بذاتها وليس لها عالقة بالويب فقط.
بي إتش بي لغة مفتوحة المصدر ويطورها فريق من المتطوعين تحت رخصة ،PHPتدعم البرمجة كائنية
التوجه وتركيبها النحوي يشبه كثيرا التركيب النحوي للغة السي هذا باإلضافة إلى أنها تعمل على
أنظمة تشغيل متعددة مثل لينكس وويندوز.
1
PHP/FI
ظهرت phpأوال في سنة 1995على يد راسموس ليردورف ( )Rasmus Lerdorfكانت تسمى وقتها
بـ PHP/FIوفي الحقيقة لم تكن لغة برمجه وقتها وانما كانت مجموعه من التطبيقات التي كتبت
باستخدام لغة Perlأطلق راسموس اسم Personal Home Page Toolsعلى هذه التطبيقات ،النه
احتاج فيما بعد إلى تطبيقات أكثر فائده قام راسموس بكتابة تطبيق أكبر باستخدام لغة Cحيث أصبحت
قادرة على االتصال بقواعد البيانات كما أنها كانت تسمح للمستخدمين بتطوير تطبيقات مواقع
ديناميكيه بسيطه ،اختار راسموس ان تكون الشيفرة المصدرية الخاصة بـ PHP/FIمتوفره للجميع لذا
كان يمكن ألي شخص ان يستخدمها ويقوم بتحسينها والمشاركة في حل اخطاءها ومشاكلها.
كانت PHP/FIوقتها تحوي على بعض الوظائف المتوفرة باإلصدارات الحالية من اللغة ،كما أن
المتغيرات كانت تشبه متغيرات ،Perlوكانت تركيبها النحوي يشبه Perlبالرغم من بساطتها
ومحدودياتها.
في عام 1997تم إطالق اإلصدار 2.0من ،PHP/FIحيث بلغ عدد مستخدميها آنذاك 50,000نطاق،
وكان هناك مجموعه من األشخاص الذين يشاركون في التطوير ،وتم إطالق اإلصدار الرسمي من 2.0
في شهر نوفمبر من نفس العام بعد العديد من اإلصدارات التجريبية بيتا.
PHP 3
في عام 1997تم إعادة كتابة PHP/FIعلى يد زيف سوراسكي وأندي جتمانز بعدما وجدوا ان PHP/FI
2.0ليست قويه بما فيه الكفاية من أجل كتابة تطبيق تجارة إلكترونية والذي كانوا يعملون عليه
كمشروع تخرج لجامعتهم ،كان هناك تعاون بينهم وبين مؤسس اللغة راسموس ليردورف على ان
تكون PHP 3.0هي النسخة الرسمية بعد .PHP/FI
أحد أهم الميزات التي تميزت بها PHP 3عن سابقتها انها أصبحت قابلة للتوسع وتوفر مع هذا اإلصدار
العديد من المكتبات والدوال ،وادت قابلية التوسع إلى إقبال العديد من المطورين على تطوير المكتبات
الجديدة واضافتها مع اللغة ،ويقال ان هذا هو السبب األساسي للنجاح الذي حققه هذا اإلصدار ،ومن
الميزات األخرى التي تمت اضافتها في هذا اإلصدار هي البرمجة كائنية التوجة.
وفي هذا اإلصدار تم تغيير اسم اللغة ووضعها تحت اسم جديد وهو ( PHPبدون )FIوالذي كان يحمل
اختصارا لمعنى جديد مختلف عن اإلصدار السابق والمعنى هو “.”PHP: Hypertext Preprocessor
تم إطالق PHP 3.0في يونيو 1998بعد 9أشهر من االختبارات.
2
PHP 4
في عام ،1998وبعد االنطالق الرسمي لـ PHP 3.0بقليل بدأ زيف سوراسكي وأندي جتمانز بإعادة كتابة
أساس لغة PHPوكان الهدف من ذلك هو تحسين األداء للبرامج المعقدة والضخمة وتحسين قابلية
اللغة للتوسع.
المحرك الجديد الذي ظهر بعد إعادة الكتاب تم تسميته بـ محرك زيند (باإلنجليزية )ZEND :واسم “زيند”
مأخود من أوائل حروف أسماء مطوريه ،ونجحوا في تحقيق اهدافهم عن طريق هذا المحرك ،وتم اإلعالن
عنه في عام .1999
تعتمد PHP 4.0على هذا المحرك وتم اإلعالن عن هذا اإلصدار من PHPفي مايو ،2000باإلضافه إلى
تحسين األداء في هذا اإلصدار احتوى كذلك على مجموعه جديده من الميزات مثل دعمه لعدد أكبر من
خوادم الوب ،الجلسات ،طرق آمنه جديده لمعالجة دخل المستخدم وغيرها.
وقد تم إعالن إيقاف تطوير ودعم PHP 4في 13يوليو.2007 ،
المصدر ويكيبيديا
قبل البدء بهذه اللغة يجب أن تكون على معرفة باللغات التالية :
HTML/XHTML •
JavaScript •
إن أردت دراسة هذه اللغات يمكنك التوجه الى صفحة المعهد الرئيسية .
التشعبية .
ان لغة PHPهي لغة برمجية تتعامل مع السيرفر مثل لغة . ASP •
3
تدعم لغة PHPالعديد من قواعد البيانات مثل ( MySQLو Informixو Oracleو •
يحتوي ملف PHPعلى نصوص و وسوم HTMLو أيضاً سكربتات و أكواد أخرى . •
ماهي MySQL؟
تعتبر لغة MySQLلغة مثالية لكل من التطبيقات الصغيرة والكبيرة . •
PHP + MySQL
يتم استخدام PHPمع لغة MySQLإلنشاء منصة و قاعدة يمكن العمل منها سيرفر محلي •
لماذا PHP؟
تعمل PHPعلى أرضيات و برامج مختلفة مثل ويندوز ,لينوكس و يونكس . •
4
تعمل PHPعلى جميع أنواع السيرفرات المستخدمة حالياً مثل Apacheو . IIS •
ان لغة PHPسهلة التعلم و االستخدام و تعمل على أكواد السيرفر . •
للحصول على صالحية تمكنك من استخدام سيرفر خاص على االنترنت كالتالي :
اما تنصيب السيرفر Apacheأو IISعلى سيرفر شخصي وتنصيب PHPو . MySQL •
أو إيجاد خطط هوست حيث تكون جاهزة و داعمة للغة PHPو . MySQL •
PHPتنصيب
ماذا تحتاج ؟
اذا كان السيرفر لديك يدعم PHPعندها ال تحتاج لتنصيب أو فعل أي شيء .
فقط يمكنك إنشاء ملفات phpفي حافظة الملفات لديك في السيرفر و سيتم تحويل و قراءة األكواد
وعرضها على المتصفح .
أما اذا كان متصفحك ال يدعم PHPعندها يجب تنصيب لغة PHPعلى السيرفر .
من هنا يمكنك الذهاب الى الموقع الرسمي للغة PHPمع شرح كامل حول تنصيب : PHP5
http://www.php.net/manual/en/install.php
ان تنصيب PHPعلى السيرفر ليس باألمر السهل ويحتاج لعدد من المبرمجين لتنصيبه لذلك لن نغوص
في كيفية التنصيب إنما في كيفية إنشاء موقع و صفحات بلغة . PHP
5
تحميل PHP
التركيبة
تعمل أكواد PHPعلى السيرفر و تظهر النتيجة على المتصفح على شكل نصوص . HTML
التركيبة الرئيسية
تبدأ أكواد PHPدائماً من خالل الوسم <?phpوتنتهي بالشكل>? كما يمكن ادراج أكواد PHPPفي
أي مكان تريده في صفحة الويب لديك .
بعض السيرفرات التي تحتوي على اختصارات ألكواد PHPيمكن البدء بوسم الكود ?< واالنتهاء >? .
لكن نحن ننصح بشدة استخدام الوسم الرسمي للكود تجنبًا لمشاكل السيرفرات أال وهي <?php
6
يحتوي ملف PHPعلى وسوم HTMLتماماً مثل صفحات HTMLلكن يحتوي أيضاً على أكواد خاصة
PHP .
مثال لصفحة وب تحتوي على كود PHPبسيط ومرفقاً بالنص “مرحباً بكم” الذي سيظهر على المتصفح
.
في نهاية كل كود PHPيجب أن يحتوي على فاصلة منقوطة أي ; كما تعتبر هذه الفاصلة المنقوطة
هي العالمة التي تفصل بين األكواد وذلك لسهولة قراءتها.
يمكن اظهار الكود على المتصفح من خالل التعابير المستخدمة في PHPمثل echoو print .و في
المثال السابق استخدمنا echoإلظهار النص أال و هو “مرحباً بكم” .
مالحظة :يجب أن يكون الملف هو PHPوامتداده .phpأما اذا كان كود PHPموجوداً في
صفحات .htmlفإن الكود لن يعمل.
7
التعليقات و المالحظات فيPHP
نستخدم في PHP //من أجل تعليق ضمن السطر كما يمكن استخدام */و * /من أجل تعليق متعدد
األسطر تماماً كما فيJavaScript .
مثال
المتغيرات Variables
المتغيرات في PHP
يمكن استخدام المتغير عند إنشائه في أي مكان و عدة مرات في صفحات الويب .
8
أفضل و أصح طريقة إلنشاء متغير هي كالتالي :
ينسى بعض المبرمجون الجدد وضع إشارة $قبل اسم المتغير و عند ذلك لن يعمل الكود.
اآلن سنقوم بإنشاء متغيرين األول يحتوي على نص و الثاني يحتوي على رقم.
لغة PHPمتراخية
باستخدام لغة PHPلست بحاجة إلعالن المتغير قبل غضافة القيمة اليه .
في المثال السابق لست بحاجة لتعريف المتغير فيما اذا نوع البيانات الموجودة فيه نص أو أرقام أو غير
ذلك ألن لغة PHPتثوم تلقائياً بتحديد نوع بيانات المتغير فور استخدام القيمة المرفقة مع المتغير .
في لغات البرمجة المتشددة يجب عليك تحديد نوع المتغير قبل إضافة البيانات اليه بينما لغة PHPتعتبر
لغة متسامحة و متراخية أي يتم تحديد نوع المتغير عند اضافة القيمة اليه .
9
قواعد اختيار اسم المتغير
يجب أن يحتوي اسم المتغير على أحرف صغيرة أو ارقام () _ ,a-z, A-Z, 0-9 •
اليجب أن يحتوي اسم المتغير على مسافة فاصلة بين األسماء كما يمكن تفريق الكلمات •
Stringالمتغيرات النصية
تستخدم المتغيرات النصية للقيم التي تحتوي على أحرف و كلمات .
سنطلع في هذا الدرس على أكثر functionsو operatorsالمستخدمة كنصوص stringsفي PHP
.
يمكننا التعديل على النص الموجود ضمن المتغير بعد إنشائه كما يمكن استدعائه مباشرة أو يمكن
حفظه و التعديل عليه الحقاً .
في المثال التالي تم إنشاء متغير يحتوي على قيمة نصية و قد تم استدعائه ليتم عرض النتيجة على
المتصفح .
10
ستظهر النتيجة على المتصفح:
مرحباً بكم
ربط األكواد
يوجد رابطة واحدة مستخدمة مع PHPلربط األكواد معاً و هي ( ).و تستخدم لربط قيمتين نصيتين مع
بعضهم.
مثال
11
ستظهر النتيجة:
ان نظرنا للكود في المثال السابق سنشاهد أننا استخدمنا رابطة لربط بين المتغيرين .و أيضاً قمنا بإضافة
قيمة ثالثة و هي مسافة بين الكلمتين.
يستخدم الكود الوظيفي )(strlenلتحديد طول النص أي عدد أحرف النص المستخدمة.
مثال
12
يستخدم عادة هذا الكود الوظيفي مع الحلقات أو بعض األكواد الوظيفية األخرى خاصة عندما يكون
من المهم معرفة متى ستتوقف الحلقة.
12
يستخدم الكود الوظيفي )(strposللبحث عن نص أو أحرف ضمن النص الواحد .
ان تم إيجاد النتيجة سيتم عرض مكان الكلمة أو الحرف عند أو مطابقة للنتيجة .و لكن إن لم يتم إيجاد
نتيجة عندها ستكون النتيجةFALSE .
6
ان موضع الكلمة في النص هو 6في المثال السابق .و السبب بأنها 6وليست 7بأن الحرف األحرف من
النص يبدأ بالرقم 0و ليس .1
13
الرموز الحسابية الجبرية – Arithmetic Operators
14
رموز المقارنة– Comparison Operators
15
If…Elseتعابير اذا ..غير ذلك
تستخدم التعابير الشرطية إلنشاء أوامر مختلفة تعتمد على شروط مختلفة .
التعابير الشرطية
عندما تكتب كود معين غالباً ماتريد إنشاء أمر معين حسب شروط مختلفة ولهذا يمكنك استخدام
خاصية التعابير الشرطية لفعل ذلك وسنتعلم كيف في األمثلة .
تعبير : ifيستخدم هذا التعبير إلظهار كود معين في حال كانت الحالة صحيحة تماماً . •
تعبير : if … elseتعبير اذا وغير ذلك :يمكن استخدام هذا النوع من الكود الشرطي اذا •
يستخدم عند تحقق شرط معين واذا لم يتحقق سيتم إظهار شرط آخر واذا لم يتحقق سيتم
تلقائياً تطبيق الكود عند . else
تعبير : switchيستخدم هذا التعبير إلختيار كود من مجموعة أكواد . •
16
تعبير If
يستخدم هذا التعبير إلظهار كود معين في حال كانت الحالة صحيحة تماماً .
التركيبة
في هذا المثال .ستظهر نتيجة الكود فقط عندما تكون النتيجة elseالحظ أننا لم نستخدم تعبير
.صحيحة
17
تعبيرif … else
تعبير اذا أو غير ذلك :يمكن استخدام هذا النوع من الكود الشرطي اذا كانت حالة الشرط األول صحيحة
والثانية خاطئة.
التركيبة
مثال
سيعرض المثال التالي “اليوم هو جمعة ”اذا كان اليوم جمعة أما اذا لم يكن جمعة فستعرض النتيجة
“اليوم ليس بيوم جمعة” :
18
اذا كان هناك أكثر من نتيجة سيتم عرضها اذا كان الشرط true/falseعندها يجب وضع الشرط
والنتائج ضمن أقواس منحنية}{
يستخدم هذا التعبير مع واحد من مجموعة أكواد أي يستخدم عند تحقق شرط معين واذا لم يتحقق
سيتم إظهار شرط آخر واذا لم يتحقق سيتم تلقائياً تطبيق الكود عندelse .
19
التركيبة
مثال
في المثال التالي سيتم عرض الجملة ”!“Have a nice weekendاذا كان اليوم جمعة واذا لم يكن
سيتم عرض ”! “Have a nice Sundayyاذا كان يوم األحد و سيتم عرض ”! “Have a nice dayاذا
كان غير ذلك.
20
تعبير switch
تستخدم التعابير الشرطية إلنشاء أوامر مختلفة تعتمد على شروط مختلفة .
21
التركيبة
أوالً يجب تحديد تعبير معين بين قوسيم عند استخدام التعبير switchوغالباً مايكون متغير ويتم
تقديره مرة واحدة ثم يتم مقارنة قيمة التعبير الذي سيتم مقارنته مع القيم األخرى في كل حالة.
إن كان هناك تطابق مع الكود سيت عرضه فوراً وسيتوقف الكود عن الفحص كما يمكن استخدام
breakبعد كل حالة لتجنب عبور الفحص إلى الحالة األخرى تلقائياً.
22
مثال
المصفوفات
23
ماهي المصفوفة Array؟
المصفوفة هي متغير خاص حيث يمكنه تخزين قيمة أو أكثر في نفس الوقت .
اذا كان لديك قائمة من العناصر ( كتب على سبيل المثال ) عندها يمكنك تخزينهم في متغير واحد .
مثال
ولكن ماذا لو أردت أن تجلب كتاب معين من بين هذه الكتب وماذا لو كان لديك أكثر من 300كتاب
ليس فقط 3؟ ماذا ينبغي أن تفعل ؟
يمكن للمصفوفة أن تحمل جميع القيم التي لديك وأيضاً جميع المتغيرات التي لديك بمتغير واحد فقط
ويمكنك استدعاء القيمة التي تريد من خالل ذكر اسمها فقط او ترتيبها.
المصفوفة الرقمية
24
هناك طريقتين إلنشاء مصفوفة
1.في هذا المثال تم تعيين الفهرسة تلقائياً (تبدأ الفهرسة من الرقم .)0
مثال
25
ستظهر النتيجة على المتصفح:
مصفوفة التعيين
ليس من الجيد استخدام المصفوفة الرقمية عند طلب قيمة معينة من المصفوفة لذلك أفضل طريقة
هي مصفوفة التعيين.
مثال 1
في هذا المثال سيتم تحديد قيم محددة اي سيتم تحديد اسم الشخص مع عمره.
مثال 2
يعتبر هذا المثال مماثل للمثال 1ولكن يظهر طريقة أخرى إلنشاء المصفوفة.
26
ستظهر النتيجة على المتصفح
المصفوفة المتعددة
يمكن ألي عنصر في المصفوفة المتعددة األصلية أن يصبح مصفوفة فرعية وأيضاً أي عنصر في المصفوفة
الفرعية يمكن أن يصبح مصفوفة مستقلة وهكذا.
في المثال التالي سنقوم بإنشاء مصفوفة متعددة و تلقائياً محدد بـآي دي IDخاص.
27
سيصبح شكل المصفوفة السابقة كالتالي في حال تم كتابتها كنتيجة على التصفح.
28
مثال 2
29
الحلقات – الحلقة while
تستخدم الحلقات إلنشاء مجموعة من األكواد تحدد عدد مرات األرقام أو اذا كان الشرط صحيح .
حلقات PHP
عند كتابتك لكود معين وتريد أن يكون هذا الكود مماثل لعدة مرات بالظهور نفسه مجدداً ضمن سطر
معين .
عوضاً عن كتابة الكود أكثر من مرة يمكنك استخدام الكود مرة واحدة وبشكل حلقات متتالية عندها
يظهر الكود الذي تريد أكثر من مرة .
الحلقات باستخدام : whileمن خالل استخدام مجموعة أكواد عند تحقق شرط معين . •
الحلقات باستخدام : do…whileمن خالل استخدام مجموعة أكواد لمرة واحدة ثم تكرار •
الحلقات باستخدام : foreachمن خالل استخدام مجموعة أكواد لكل عنصر في المصفوفة •
.
الحلقة while
تستخدم الحلقات باستخدام whileمن خالل استخدام مجموعة أكواد عند تحقق شرط معين .
30
التركيبة
مثال
يشرح المثال التالي حلقة تبدأ بالمتغير i=1 .ستستمر الحلقة بالعمل طالما المتغير iهي أصغر من أو
يساوي . 5سيتم زيادة رقم واحد 1في كل مرة تعمل بها الحلقة حتى تستوفي الشرط.
النتيجة:
الرقم هو 1
الرقم هو 2
الرقم هو 3
31
الرقم هو 4
الرقم هو 5
التعبيرdo…while
تستخدم مجموعة أكواد لمرة واحدة ثم تكرار الحلقة طالما يتحقق ذلك شرط.
التركيبة
مثال
يشرح المثال التالي حلقة تبدأ بالمتغير i=1 .ستستمر الحلقة بالعمل طالما المتغير iهي أصغر من أو
يساوي . 5سيتم زيادة رقم واحد 1في كل مرة تعمل بها الحلقة حتى تستوفي الشرط
32
النتيجة:
الرقم هو 2
الرقم هو 3
الرقم هو 4
الرقم هو 5
الرقم هو 6
الحلقات – الحلقةFor
تستخدم الحلقات إلنشاء مجموعة من األكواد تحدد عدد مرات األرقام أو اذا كان الشرط صحيح .
الحلقة For
تستخدم الحلقة Forعند معرفة عدد المرات التي يجب أن يعمل بها الكود .
33
التركيبة
البارامترزParameters
Init :تستخدم عادة لضبط العداد (لكن يمكن أن يكون أي نوع من األكواد التي ستظهر •
مالحظة :كل واحد من البارامتر في التركيبة السابقة يمكن أن يكون خالياً و يمكن أن يكون أكثر
من تعبير مفصول بفاصلة.
يعرّف المثال التالي حلقة تبدأ من i=1 .ستستمر الحلقة بالدوران طالما أن iهي أصغر أو تساوي . 5
سيتم زيادة iبالرقم 1في كل مرة تدور فيها الحلقة.
34
النتيجة
الرقم هو 1
الرقم هو 2
الرقم هو 3
الرقم هو 4
الرقم هو 5
حلقة foreach
التركيبة
35
في المثال التالي يشرح كيفية إظهار النتيجة من المصفوفة :
النتيجة
واحد •
اثنان •
ثالثة •
الوظائف و الدوال
هناك أكثر من 700كود وظيفي معرّف مسبقاً من خالل اللغة نفسها .
36
األكواد الوظيفية المعرّفة مسبقاً
لمراجع كاملة عن الكواد الوظيفية المعرّفة مسبقاً يمكنك زيارة مرجعنا الشامل عن PHP
دوال PHP
يمكنك وضعه ضمن وظيفة للحفاظ على الكود من ظهوره عند تحميل الصفحة .
التركيبة
ضع اسم مناسب للكود الوظيفي بحيث يشرح ماهية عمل ذلك الكود. •
37
يمكن أن يبدأ اسم الكود بأحرف أو اشارة _ ولكن ليس رقم. •
إضافة parameters
إلضافة فعالية إضافية الى الكود الوظيفي يمكنك اضافة parameters .يعتبر parametersمثل
المتغير تماماً.
مثال
النتيجة
1 + 16 = 17
38
النماذج و طرق االدخال
تستخدم المتغيرات $_GETو $_POSTإلسترجاع معلومات من النماذج مثل اسم المستخدم وغيرها
.
التحكم بالنماذج
أكثر األشياء أهمية عند التعامل مع نماذج HTMLو PHPهو أن أي عنصر من النماج في صفحات HTML
ستكون متوفرة تلقائياً مع أكواد . PHP
مثال
يحتوي المثال التالي على نموذج HTMLمع حقلين من نماذج االدخال و أيضاً أيقونة إرسال :
عند تعبئة الحقول في المثال السابق والضغط على األيقونة ارسال سيتم ارسال البيانات الى ملف PHP
و المسمى welcome.php
39
ستظهر النتيجة على المتصفح حسب وضع البيانات في ذلك الملف
مرحباً محمد !
عمرك هو 25عام.
فعالية النماذج
يجب التأكد من فعالية نماذج االدخال التي يستخدمها الزائر ان أمكن ألن عمليه التأكد على المتصفح
تعتبر سريعة و تقلل من ضغط التحميل على السيرفر.
يجب استخدام خاصية التأكد من نماذج االدخال وخاصة ان كان النموذج سيتم ارساله الى قاعدة البيانات
.افضل طريقة إلنشاء تفعيل للنموذج على السيرفر هو ادراجه في النموذج نفسه بدالً من الذهاب الى
صفحة أخرى و عندها سيحصل المستخدم على رسالى الخطأ في نفس الصفحة و بتلك الطريقة يمكن
استكشاف األخطاء بسرعة و سهولة.
المتغير GET
40
المتغير $_GET
ترسل المعلومات عبر النماذج من خالل الطريقة GETوهي مرئية للجميع أي تظهر المعلومات على رابط
المتصفح كما تحتوي على كمية محدودة من المعلومات المرسلة .
مثال
عند الضغط على رز االرسال سيظهر على المتصفح المعلومات التي قمت بإدخالها في حقول النموذج.
41
متى نستخدم الطريقة ”method=”get
عند استخدام الطريقة ”method=”getفي نماذج HTMLعندها جميع األسماء و القيم الموجودة ضمن
وسم ><inputtستظهر على رابط المتصفح.
مالحظة
ال يجب استخدام هذه الطريقة عند ارسال بيانات هامة مثل كلمة المرور أو أي معلومات •
حساسة .و على أي حال ألن المتغيرات يتم عرضها على رابط المتصفح يمكن استخدام
bookmarkعالمة للصفحة و التي يمكن أن تكون مفيدة في بعض الحاالت.
ان الطريقة getغير مناسبة عند ارسال كميات كبيرة من البيانات و أيضاً اليجب استخدامها •
POSTالمتغير
المتغير $_POST
ترسل المعلومات عبر النماذج من خالل الطريقة POSTوهي غير مرئية للجميع أي ال تظهر المعلومات
على رابط المتصفح كما تحتوي على كمية غير محدودة من المعلومات المرسلة .
مالحظة :الحجم الكلي للطريقة POSTهي 8ميجابايت و بشكل افتراضي يمكن تغيير هذه االعدادات
من خالل ملف php.iniمن خالل الضبط . post_max_sizee
42
مثال
http://www.example.com/welcome.php
ان المعلومات التي ترسل من النماذج من خالل الطريقة POSTتكون مخفية عن االخرين و غير محدودة
بكمية المعلومات المرسلة.
وعلى أي حال وبسبب أن هذه الطريقة مخفية و التظهر على الرابط فهذه الطريقة غير صالحة إلنشاء
عالمات للصفحاتbookmarks .
المتغير $_REQUEST
يمكن أن يستخدم المتغير $_REQUESTلجمع بيانات النموذج و إرساله الى كالً من الطريقتين GET
وPOST .
43
الدروس المتقدمة
التاريخ و الوقت
الوظيفة )(Date
يستخدم الكود الوظيفي )( dateلتحديد الوقت و التاريخ وجعله واضح على المتصفح .
التركيبة
44
يمكن استخدام بعض األحرف كالتالي:
من هنا يمكن مشاهدة جميع تشكيالت الوقت من خالل المرجع الخاص بالتاريخ و الوقت.
اشارات أخرى مثل /او .أو – يمكن أن توضع بين األحرف لتعديل تشكيل التاريخ.
مثال
2009/05/11
2009.05.11
2009-05-11
45
اضافة تفاصيل للزمن
يمكن اضافة تفاصيل معينة للزمن و استخدام تاريخ رما قديم أو حديث ولكن هذه االضافة اختيارية
وان لم تقم بضبطها سيتم اختيار التاريخ الحالي.
يحتوي الزمن العالمي على أجزاء صغيرة من الثانية والتي تبدأ من كانون الثاني (1 1970 00:00:00
GMT ) .
تركيبة )(mktime
للذهاب الى وقت معين الى المستقبل يمكن اضافة تعبير اليوم من خالل الكودmktime() :
46
المرجع الكامل فيPHP
من هنا يمكن مشاهدة جميع تشكيالت الوقت من خالل المرجع الخاص بالتاريخ و الوقت
includeالملفات الضمنية
يمكنك ادراج محتوى ملفات PHPالى ملفات PHPأخرى قبل قيام السيرفر بعرضها ويمكن
استخدام )( includeأو )(. require
تقوم الوظيفة )( includeبتوليد التحذيرات ولكن سيتم استكمال عرض باقي الكود . •
تقوم الوظيفة )( requireبتوليد خطأ فادح عندها سيتم إيقاف الكود ولن يتم عرضه . •
يمكن باستخدام هاتين الخصيصتين إنشاء أكواد و ترويسات و تذيالت و أيضاً عناصر يمكن استخدامها
في أكثر من مكان كاالعالنات وغيرها .
بهذه الطريقتين تحفظ الكثير من الوقت والجهد في إنشاء وتعديل الصفحات أي يمكنك إنشاء صفحة
واحدة واستخدامها بأكثر من مكان وعندما سيتم تحديث أو تعديل الترويسة في الموقع يمكنك
تعديل صفحة الترويسة headerعندها سيتم تغيير الهيدر او الترويسة في جميع الصفحات أو عند
إضافة صفحة جديدة يمكنك وبسهولة إضافتها في جميع صفحات الموقع عوضاُ عن إضافة الصفحة
يدوياً .
47
Function include() PHP
يأخذ )( includeجميع محتوى الملف المخصص و يضمّنه في الملف األصلي .
عند حدوث خطأ مع )( includeسيتم توليد تحذير ولكن باقي الكود سيتم عرضه وسيعمل بشكل جيد
.
مثال 1
لنفترض أن لديك ملف ترويسة headerبملف تم تسميته header.phpولتضمين هذا الملف داخل
الصفحة الرئيسية يمكن استخدام )( includeكالتالي :
مثال 2
لنفترض أن لديك قائمة رئيسية تسمى menu.phpوالتي سيتم استخدامها في جميع الصفحات
كالتالي:
48
تلك القائمة يجب استخدامها في جميع الصفحات وإليكم طريقة استخدامها في جميع صفحات الموقع
.
اذا قمت بإظهار مصدر الصفحة لمشاهدة األكواد من خالل المتصفح سيتم عرضها كالتالي:
49
PHP require() Function
عند حوث خطأ برمجي معين تقوم الوظيفة )(includeبتوليد التحذيرات ولكن سيتم استكمال عرض
باقي الكود أما الوظيفة )(requireتقوم بتوليد خطأ فادح عندها سيتم إيقاف الكود ولن يتم عرضه
.
رسالة الخطأ:
50
الحظ بأن الجملة ! Hello Worldتم عرضها وذلك ألن التحذير لم يقوم بإيقاف الكود بشكل كامل.
رسالة الخطأ:
لم تظهر الجملة الموجودة بعد الكود وذلك ألنها التقوم بعرض باقي الكود عند استكشاف خطأ معين
.
51
من األفضل استخدام )(requireمع الصفحات التي تحتوي على أكواد وألنها بشكل طبيعي لن تعمل
األكواد في حال الخطأ أما )(includeيمكن استخدامها مع الصفحات التي التحتوي على األكواد مثل
HTMLأوCSSS .
التعامل مع الملفات
فتح الملف
يستخدم أول رمز داخل الكود الوظيفي إلدراج اسم الملف المراد فتحه أما في الرمز الثاني سيتم تحديد
حالة الملف بعد فتحه :
52
مالحظة :اذا كانت الوظيفة )(fopenغير قادرة على فتح ملف معين عندها ستعود القيمة .00
مثال:
في المثال التالي سيتم اظهار رسالة اذا كانت الوظيفة )(fopenغير قادرة على فتح الملف.
53
إغالق الملف
تعتبر الوظيفة )(feofمثالية في استخدام الحلقات عبر البيانات الغير معروفة الطول.
54
قراءة الملف سطر بسطر
مثال
في المثال التالي سيتم قراءة سطر واحد من الملف أي حتى نهاية الملف.
55
مثال
في المثال التالي سيتم قراءة كلمة واحدة من الملف أي حتى نهاية الملف.
رفع الملفات
56
ان المثال السابق هو إنشاء نموذج من خالل لغةHTML :
تحدد الالحقة enctypeالموجودة في وسم النموذج ><formنوع المحتوى المستخدم عند •
مجلد أي على سبيل المثال عند االستعراض على المتصفح سيتواجد بجانب حقل النص زر لرفع
الملف.
مالحظة :تعتبر مخاطرة كبيرة في الحماية عند السماح للمستخدم برفع ملفات على السيرفر لذلك مكنك
فقط السماح للمستخدمين الموثوقين برفع الملفات على السيرفر.
57
باستخدام المصفوفة $_FILESيمكنك رفع الملفات من حاسوب المستخدم الى السيرفر.
ان أول قيمة في حقل النموذج هي االسم أما الثانية فيمكن أن تكون اما االسم nameأو النوع type
أو الحجم sizeأو tmp_nameأو الخطأ errorكالتالي:
السيرفر.
$_FILES[“file”][“error”] :نتيجة الخطأ اذا كان هناك خطأ في الكود أو الملف المرفوع •
.
تعتبر هذه الخطوات أسهل طرقة لرفع ملف ولكن اذا أردت حماية الملفات على السيرفر يجب وضع قيود
على الرفع.
58
قيود الرفع
لقد قمنا بإضافة بعض األكواد لوضع قيود على الرفع أي يمكن فقط للمستخدم رفع ملفات
بامتداد .gifأو .jpgو يجب أن يكون الحجم أقل من kbb :20
في المثال السابق تم رفع نسخة مؤقتة للملفات المرفوعة في ملف PHP tempعلى السيرفر.
تختفي الملفات المؤقتة بعد انتهاء الكود و لحفظ ملفاتك المرفوعة يجب اختيار مكان آخر للملفات على
السيرفر:
59
يفحص الكود السابق الملف اذا كان موجودًا من قبل واذا لم يكن موجوداً عندها سيتم نسخ الملف الى
المجلد المخصص.
60
Cookiesالكوكيز
ماهو الكوكيز ؟
يستخدم الكوكيز عادة لتحديد هوية المستخدم .ان الكوكي cookieعبارة عن ملف صغير يتم ارساله
من خالل السيرفر الى حاسوب المستخدم .و في كل مرة يتم طلب الصفحة من خالل المتصفح سيتم
ارسال ملف الكوكي ايضاً .يمكنك إنشاء و استرجاع ملفات و قيم الكوكي .
التركيبة
مثال 1
في المثال التالي سيتم إنشاء cookieاسمه userوالقيمة هي Ahmad .كما سيتم تحديد انتهاء
cookieبعد ساعة:
61
مالحظة :يتم ترميز قيمة cookieتلقائياً عند ارسال cookieكما يتم ترميزه تلقائياً عند استرجاعه
ولتجنب ترميز الروابط URLيمكنك استخدام )(setrawcookieعوضاً عنها.
مثال 2
يمكنك تحديد وقت انتهاء cookieبطريقة أخرى أيضاً .كما يمكن أن تكون أسهل عند استخدام
الثواني:
في المثال السابق تم تحديد انتهاء وقت الملف لشهر ( 60ثا 60 ,د 24 ,سا 30 ,يوم ).
62
كيفية استرجاع قيمة Cookie؟
تم استخدام )(issetفي المثال التالي لمعرفة فيما اذا تم ضبط cookieأم ال:
63
عند حذف cookieينبغي التأكد بأن تاريخ االنتهاء هو في الماضي.
اذا كنت تتعامل مع متصفحات ال تدعم cookieعندها يمكنك استخدام طرق أخرى لتمرير المعلومات
من صفحة الى أخرى .إحدى هذه الطرق هي تمرير المعلومات من خالل النماذج ( formsتم شرح النماذج
و المدخالت في دروس ماضية) .
يمرر النموذج مدخالت المستخدم إلى الصفحة ” “welcome.phpعند ضغط المستخدم على زر االرسال:
64
:مثل welcome.phpاسترجاع القيم من المجلد
Sessionsالجلسات
تستخدم متغيرات الجلسات sessionلحفظ المعلومات حول أو تغيير الضبط للمستخدم .تحمل
متغيرات sessionمعلومات حول مستخدم واحد كما أنها تكون متوفرة في جميع الصفحات وبتطبي
واحد .
65
متغيرات Session
عندما تعمل على برنامج فإنك تفتحه ثم تقوم بالتعديل عليه ثم تقوم بإغالقه .ذلك تماماً مانسميه
جلسة أو . sessionيعلم الحاسوب من انت ويعلم متى تبدأ العمل على البرنامج ويعلم متى تنتهي من
البرنامج و لكن على شبكة االنترنت هناك مشكلة صغيرة وهي أن السيرفر اليعلم من انت و اليعلم
ماتفعل ألن عنوان HTTPاليحافظ على نفس الحالة .
ان PHP sessionتحل هذه المشكلة وذلك بالسماح لك بتخرين معلومات على السيرفر آلخر استخدام
قمت به ( مثل اسم مستخدم أو عناصر التسوق ) .على أي حال تعتبر معلومات sessionدائمة التخزين
أي يمكنك تخزين المعلومات في قاعدة البيانات .
تعمل sessionبإنشاء idمميز UIDو ذلك لكل زائر وتخزن المتغيرات المتمركزة في هذا . UIDيتم
تخزين UIDفي cookieأو متوالد على الرابط التشعبي . URL
قبل إمكانية تخزين معلومات المستخدم على في جلسة PHP sessionعندها يجب البدء أوالً بالجلسة
. session
سيتم تسجيل المتستخدم من خالل الكود السابق مع السيرفر كما سمح لك ببدء حفظ معلومات
المستخدم وتثبيت االي دي الفريد UIDلتلك جلسة المستخدم.
66
تخزين متغيرات الجلساتSession
أفضل طريقة لتخزين المعلومات واستردادها هو المتغير المعرّف مسبقاً من PHPوهو$_SESSION :
في المثال التالي قمنا بإنشاء عدّاد بسيط إلحصاء عدد مشاهدة الصفحة .يقوم )(issetبفحص فيما اذا
كانت المشاهدات تم مشاهدتها بالفعل واذا تمت المشاهدة من قبل سيتم زيادة رقم عدد الزيارات .
اذا لم يوجد سيتم إنشاء متغير و سيتم ضبطه الى : 1
67
حذفsession
استخدام )(unsetأو يمكنك session الجلسة في البيانات بعض حذف أردت إن
استخدام session_destroy() .
كما يمكنك أيضاً حذف الجلسة sessionبشكل كامل من خالل استدعاءsession_destroy() :
68
سيتم حذف جميع البيانات عند استخدام )(session_destroyكما سيتم حذف جميع معلومات
المستخدمين المخزنة فيها.
التركيبة
69
إنشاء بريد الكتروني بسيط
أبسط طريقة إلنشاء و ارسال بريد باستخدام PHPهو ارسال بريد نصي.
في المثال التالي سيتم أوالً إنشاء متغيرات وهي )($to, $subject, $message, $from, $headers
ثم نستخدم المتغيرات في mail() functionnالرسال بريد الكتروني:
70
نموذج البريد
باستخدام PHPيمكنك انشاء نموذج الرسال بريد الكتروني في موقعك .سنقوم بارسال رسالة نصية
في المثال التالي لبريد الكتروني محدد:
71
اذا لم يتم ذلك مثل اذا كانت اول زيارة للصفحة عندها سيتم إظهار نموذجHTML . •
عند الضغط على زر ارسال بعد تعبئة النموذج سيتم اعادة تحميل الصفحة وسيتم فحص فيما •
مالحظة :هذه اسهل طريقة الرسال بريد الكتروني و لكنه غير آمن وفي الدرس القادم سيتم شرح
كيفية انشاء بريد الكتروني محمي مع الكثير من السكربتات.
لمزيد من المعلومات حول كيفية إنشاء بريد بسيط او محمي او )(mailيمكنك زيارة مراجع بريد PHP
هناك نقطة ضعف في انشاء البريد االلكتروني لكن سيتم حل هذه المشكلة في هذا الدرس .
72
المشكلة في الكود السابق هو أن أي مستخدم غير مرخص له يمكنه ادخال البيانات الى البريد من خالل
نماذج االدخال.
ماذا يحصل لو أن المستخدم أدخل النصوص التالية الى حقول مدخالت النماذج ؟
يضع الكود )(mailالنص السابق الى مدخالت النموذج بأنه نص طبيعي و ترويسة النموذج لديها حقول
73
Ccو Bccو Too .عند الضغط على زر االرسال عندها سيتم ارسال البريد الى جميع العناوين التي تم
وضعها في النص السابق.
يعتبر الكود نفسه في الدرس السابق ولكن قمنا بإضافة مفعّل للمدخالت و التي بدورها تفحص مدخالت
حقول البريد:
74
75
في المثال السابق قمنا باستخدام فلتر PHPلتفعيل الحقول:
.
يغعّل الفلتر FILTER_VALIDATE_EMAILالقيمة مثل عنوان بريد الكتروني. •
معالجة األخطاء
معالجة األخطاء االفتراضي في PHPبسيط جداً .يتم ارسال رسالة الخطأ بإسم الملف أو رقم السطر أو
شرح الخطأ في رسالة الى المتصفح .
معالجة األخطاء
تعتبر معالجة األخطاء مهمة جداً عند إنشاء تطبيقات و سكربتات على االنترنت .سيبدو برنامجط غير
احترافي وربما يمكن أن يكون معرض للمخاطر األمنية اذا كان الكود لديك ينقصه فحص األخطاء .
يحتوي الدورة لدينا على بعض طرق فواص األخطاء السائدة في لغة . PHP
76
معالج األخطاء البسيط )(die
يظهر المثال التالي كود بسيط حيث يفتح ملف نصي :
لتجنب رسالة الخطأ مثل المثال السابق سيتم فحص فيما اذا كان الملف موجود قبل المحاولة بالدخول
اليه:
: ان لم يتم ايجاد النص ستظهر هذه الرسالة على المتصفح
77
إنشاء معالج أخطاء
ان إنشاء معالج األخطاء بسيط جداً .ببساطة يمكن إنشاء كود وظيفي خاص يمكن استدعائه عند حدوث
الخطأ فيPHP .
يجب أن يكون معالج األخطاء ويجب أن يحمل قيمتين على األقل ( مستوى الخطأ و رسالة الخطأ ) ولكن
يمكن قبول خمسة قيم ( اختياري :الملف ,رقم السطر ,محتوى الخطأ ).
التركيبة
78
مستويات تقارير الخطأ
تحتوي مستويات تقارير االخطاء على أنواع مختلفة والتي تعالج األخطاء التي يمكن أن تستخدم ألجل
مايلي:
79
يعتبر الكود في المثال السابق بسيط جداً .عندما يتم التعيين سيتم معرفة مستوى الخطأ و رسالة
الخطأ .ثم سيتم إظهار رسالة الخطأ و مستوى الخطأ ثم حذف السكربت.
و اآلن وبعد إنشاء معالج لألخطاء سنحتاج الى معرفة أن سظهر بلضبط.
يمكن معالجة األخطاء من خالل استخدام معالج األخطاء في PHP .سنقوم بإنشاء functionفوق
معالج األخطاء االفتراضي لمدة السكربت.
يمكن تغيير معالج األخطاء من أجل تطبيق بعض التغيرات الخاصة باألخطاء البسيطة و بتلك الطريقة
يمكن معالجة أخطاء مختلفة بطرق مختلفة .على أي حال في هذا المثال سنقوم باستخدام معالج
األخطاء لجميع أنواع األخطاء:
يمكن )(set_error_handlerأن يتحكم بجميع األخطاء و فقط حتاج قيمة واحدة و ان أردت اضافة
قيمة أخرى فهي تحديد مستوى الخطأ.
مثال
80
اختبار معالجة األخطاء من خالل المحاولة بإظهار متغير غير موجود أصالً:
إستكشاف األخطاء
يمكن استخدام استكشاف األخطاء عند حدوث ادخال غير شرعي وذلك سيتم حدوثه من
خالل )(trigger_errorوذلك في السكربت حيث يمكن للمستخدمين وضع بياناتهم.
مثال
في المثال التالي سيتم حدوث الخطأ اذا كان المتغير testأكبر من :1
81
ستكون النتيجة على المتصفح كالتالي :
يمكن اظهار الخطأ في أي مكان في السكربت و ذلك بإضافة قيمة أخرى كما يمكنك تحديد مستوى
الخطأ الذي سيظهر.
متوقف.
E_USER_NOTICE :مالحظة عند امكانية حدوث خطأ معين و لكن يمكن أن يحدث أيضاً •
مثال
في هذا المثال سيتم استدعاء الخطأ E_USER_WARNINGاذا كان المتغير testأكبر من الرقم 1
و اذا حدث E_USER_WARNINGسنستخدم معالج األخطاء و سيتم إنهاء السكربت:
82
ستظهر النتيجة على المتصفح كالتالي :
و األن تعلمنا إنشاء أخطاء و كيفية استكشافهم و اآلن سنتعلم حول أخطاء تسجيل الدخول.
أخطاء السجالت
بشكل افتراضي ترسل PHPسجالت األخطاء الى نظام سجل السيرفر أو الملف و ذلك اعتماداً على كيفية
ضبط اعدادات error_logفي ملف php.ini .باستخدام )(error_logيمكن ارسال سجالت األخطاء الى
ملف أو وجهة مخصصة.
تعتبر طريقة جيدة بارسال سجالت األخطاء لبريدك االلكتروني و بذلك يتم ارسال التنبيهات لبريدك عند
تحديد األخطاء .
83
ارسال رسالة خطأ بالبريد االلكتروني
في المثال التالي سنقوم بارسال بريد اللكتروني برسالة الخطأ و إنهاء السكربت اذا حدث ذلك الخطأ:
ليس من الضروري استخدام هذه الطريقة لكل األخطاء ألن األخطاء النظامية ينبغي أن ترسل السجالت
الى السيرفر باستخدام نظام السجالت االفتراضي الخاص بلغةPHP .
84
PHPفالتر
تستخدم فالتر (تصفيات) PHPلفلترة و جعل البيانات شرعية التي تأتي من جهات غير محمية مثل
مدخالت المستخدم .
تستخدم فالتر (تصفيات) PHPلفلترة و جعل البيانات شرعية التي تأتي من جهات غير محمية مثل
مدخالت المستخدم .
يعتبر اختبار أو تصفية مدخل مستخدم أو أي بيانات تقليدية خطوة مهمة ألي تطبيق على االنترنت .
تم تصميم زيادات فالتر PHPلجعل فلترة البيانات أسهل وأسرع .
غالباً تعتمد جميع تطبيقات االنترنت على مدخالت خارجية و ذلك يأتي من مستخدم أو من خالل تطبيق
آخر ( مثل خدمات الويب ) و باستخدام الفلترة يمكنك أن تكون واثقاً بأن تطبيقك حصل على نوع المدخل
الصحيح .
تعتبر فلترة المدخالت واحدة من أهم القضايا األمنية المهمة للتطبيقات .
85
بيانات الويب الخدمية . •
الوظائف و الفالتر
لفلترة أو تصفية متغير يمكن استخدام احدى هذه األكواد الوظيفية :
في المثال التالي سنقوم بتفعيل رقم باستخدام الوظيفة )(: filter_var
تم استخدام الفلتر FILTER_VALIDATE_INTلفلترة متغير .بما أن الرقم فعال سيتم إظهار نتيجة
الكود“Integer is valid” .
لو كان المتغير ليس رقماً ( مثل “abc” ) 123سيتم إظهار نتيجة الكود“Integer is not valid” .
للحصول على قائمة كاملة للوظائف و الفالتر يمكنك زيارة مرجع فالترPHP .
86
التفعيل Validatingو التعقيمSanitizing
تفعيل الفالتر:
تستخدم لتفعيل مدخل مستخدم. •
تعقيم الفالتر:
تستخدم للمساح أو عدم السماح بحرف معين في النص. •
الخيارات و الرايات
في المثال التالي قمنا بتفعيل رقم معين integerباستخدام )(filter_varباالضافة الى خيارات
min_rangeوmax_rangee :
87
للحصول على قائمة كاملة للوظائف و الفالتر يمكنك زيارة مرجع فالتر PHP .يمكنك فحص كل فلتر
لمشاهدة الخيارات و الرايات المتوفرة.
المدخالت المفعلة
أول شيء يجب أن نقوم فيه هو تأكيد بأن بيانات االدخال التي نبحث عنها موجودة .ثم نقوم بفلترة
البيانات المدخلة باستخدام الوظيفة filter_input() .
في المثال التالي سيتم ارسال مدخل المتغير ” “emailالى صفحةPHP :
88
شرح المثال
يحتوي المثال السابق على مدخل تم ارساله الى باستخدام طريقةGET :
.1سيفحص فيما اذا مدخل البريد emailفعال و موجود باستخدام النوعGET .
.2اذا كان المتغير موجود سيتم فحص فعالية البريد االلكتروني.
تعقيم المدخالت
أوالً يجب التأكيد على أن البيانات المدخلة التي نبحث عنها موجودة .ثم نقوم بتعقيم البيانات المدخلة
من خالل استخدام الوظيفة )(filter_input
في المثال التالي سيتم ارسال مدخل المتغير urlالى صفحةPHP :
89
شرح المثال
يحتوي المثال السابق على مدخل urlتم ارساله الى باستخدام طريقةPOST :
اذا كان مدخالت المتغير نص عادي مثل http://www.exååmple.com/سيتم اختيار الرابط الصحيح
و تعقيمه من خالل المتغير $urlكالتالي:
دائماً مايحتوي النموذج على واحد أو اكثر من مدخالت النصوص .ولتجنب استدعاء filter_varأو
filter_inputمرات و مرات يمكن استخدام filter_var_arrayأوfilter_input_array .
90
في المثال التالي قيمنا باستخدام )(filter_input_arrayلفلترة ثالث متغيرات من نوع GET .المتغير
من نوع GETTالمستلم هو االسم والعمر و عنوان البريد االلكتروني:
شرح المثال
يحتوي المثال السابق على ثالث متغيرات ( االسم و العمر و البريد ) تم ارسالهم الى البريد نفسه
باستخدام الطريقةGET :
.1تم ضبط مصفوفة تحتوي على متغيرات وفالتر اسم المدخل المستخدمة مع متغير لمدخل
محدد.
91
.2استدعاء الوظيفة )(filter_input_arrayمع متغيرات GETالمدخلة و المصفوفة التي
أنشأناها مسبقاً.
.3فحص متغيرات العمر ageو البريد االلكتروني emailفي متغير $resultللمدخالت الغير
فعالة.
اذا كان المتغير فلتر idواحد عندها سيتم فلترة جميع المتغيرات في مصفوفة مدخالت من خالل فلتر
محدد.
قيمة المصفوفة يجب أن تكون مفلترة idاو مصفوفة تحدد فلتر او راية او خيار. •
استدعاء الفلتر
يمكنك استدعاء وظيفة معرفة من خالل المستخدم و استخدامه كفلتر باستخدام ميزة
FILTER_CALLBACK .و بهذه الطريقة لديك تحكم كامل بفلترة البيانات.
الوظيفة التي ترغب باستخدامها لفلترتها محددة بنفس الطريقة كخيار مخصص.
في المثال التالي سيتم إنشاء وظيفة تقوم بتحويل جميع “_” الى فراغات:
92
ستظهر النتيجة على المتصفح كالتالي :
شرح المثال
في المثال التالي سيتم إنشاء وظيفة تقوم بتحويل جميع “_” الى فراغات:
functionn .
93
استخدام PHPمعMySQL
مقدمةMySQL
ان الجدول هو عبارة عن مجموعة من البيانات المدخلة و المتصلة كما يتألف الجدول من أعمدة و صفوف
.
تعتبر قواعد البيانات مفيدة جداً عند تخزين المعلومات بشكل تصنيفي أي عند استخدام شركة لقواعد
البيانات يمكن أن تستخدم الجداول التالية :
تحتوي غالباً قواعد البيانات على جدول او أكثر يتم تعريف كل جدول باسم مثل ( Customersأو
. ) Ordersكما يحتوي الجدول على صفوف تمسى rowsأو recordsباالضافة الى البيانات .
94
يحتوي الجدول السابق على 4أعمدة و 3صفوف لكل شخص صف يتألف من االسم و الكنية و العنوان و
الدولة.
األوامرQueries
باستخدام MySQLيمكن تقديم أوامر لقواعد البيانات معلومات معينة والتي تحتوي على امكانية
تقديم النتائج من خالل الصفوف أو األعمدة.
95
يختار األمر السابق جميع البيانات الموجودة في عمود الكنية LastNameمن الجدول المسمى
Personsثم سيقوم بإعادة النتيجة كالتالي :
اذا لم يكن لديك تطبيق يحتوي على PHPمع قواعد البيانات MySQLيمكنك تحميلها من موقعها
الرسمي من خالل الرابط التالي: http://www.mysql.com/downloads/
أحد الحقائق المذهلة عن MySQLأنها تقوم بتخزين البيانات الضمنية الموجودة في التطبيقات و هذه
الحقيقة مذهلة بسبب أم معظم الناس تعتقد أن MySQLتستخدم فقط مع التطبيقات التي تخزن
بيانات صغيرة أو متوسطة.
لكن الحقيقة بأن MySQLتستخدم مع قواعد بيانات مع مواقع االنترنت التي تستخدم لتخزين هائل
للبيانات و المستخدمين مثل Friendsterو YahooوGoogle .
96
إنشاء اتصال لقاعدة البيانات MySQL
قبل الوصول الى البيانات في قاعدة البيانات يجب إنشاء اتصال مع قاعدة البيانات .
باستخدام لغة PHPيمكن انشاء اتصال مع قاعدة البيانات من خالل الوظيفة)(. mysql_connect
التركيبة
مالحظة :هناك الكثير من القيم المستخدمة مع قواعد البيانات ولكن في الجدول أهمها فقط لكن
لمزيد من المعلومات يمكنك زيارة مراجعPHP MySQL .
97
مثال
في المثال التالي سنقوم بتخزين االتصال مع قاعدة البيانات من خالل المتغير $conمن أجل استخدامات
الحقة في السكربت باالضافى الى استخدام )(dieمن أجل معرفة نوع الخطأ مع قواعد البيانات في حال
فشل االتصال:
إنهاء االتصال
سيتم اغالق االتصال بشكل تلقائي عند انتهاء السكربت لكن اذا أردت انهاء االتصال يمكن استخدام
الوظيفة mysql_close() :
98
إنشاء قاعدة بيانات و الجداول
التركيبة
الستخدام التعبير يمكن استخدام الوظيفة )(mysql_queryو بهذه الوظيفة يمكن استخدام
الرسال األوامر الى االتصال معMySQL .
مثال
99
إنشاء جدول
التركيبة
100
مثال
في المثال التالي سيتم إنشاء جدول مسمى Personsمع ثالثة أعمدة .ستكون أسماء األعمدة كالتالي
FirstNameو LastNameوAge :
101
مالحظة هامة:
يجب اختيار قاعدة البيانات قبل إنشاء الجدول حيث يمكن اختيار قاعدة البيانات من خالل •
الوظيفةmysql_select_db() .
عند إنشاء حقل قاعدة بيانات بنوع varchar ,يجب تحديد الحد األقصى للطول في الحقل •
يستخدم primary keyلتحديد فريد ومميز للصفوف في الجدول .يجب أن يكون primary keyفريد
ضمن الجدول باالضافة بأن primary keyاليجب أن يكون فارغ nullألن محرك قاعدة البيانات يحتاج
الى قيمة لتحديد مكان الصف في الجدول.
في المثال التالي سيتم تحديد حقل لعنوان idللجدول personIDمثل حقل primary key .غالباً
مايكون primary keyيحتوي على رقم IDو غالباً مايكون مع AUTO_INCREMENT .تزيد
AUTO_INCREMENTتلقائياً قيمة الحقل برقم واحد في كل مرة يزيد عدد الصفوف .وذلك للتأكد
بأن primary keyليس فارغاً nullيجب تحديد ضبط بأن القيمة غير فارغةNOT NULL .
مثال
102
إدراج قيمة الى قاعدة البيانات
التركيبة
اليحدد الشكل األول اسماء األعمدة حيث سيتم ادراج البيانات فقط قيمهم :
: يحدد الشكل الثاني كالً من اسماء األعمدة و قيمهم التي سيتم ادراجها
103
الستخدام التعابير السابقة بشكل جيد يمكن استخدام الوظيفة )(mysql_queryحيث سيتم ارسال
األوامر و الطلبات الى االتصال الخاص معMySQLL .
مثال
في الدرس السابق قمنا بإنشاء جدول باسم Personsمع ثالثة أعمدة Firstnameو Lastnameو
Ageكما سنقوم باستخدام نفس الجدول في هذا المثال .يضيف المثال التالي صف جديد للجدول
Persons :
اآلن سنقوم بإنشاء نموذج HTMLوالذي بدوره سيقوم بإضافة صف جديد للجدولPersons .
104
عند ضغط المستخدم على زر االرسال في نموذج HTMLسيتم ارسال المعلومات الى الملف insert.php
.
يقوم الملف insert.phpباالتصال بقاعدة البيانات ثم يحوّل المعلومات المسجلة في النموذج الى
متغيرات $_POST .
ثم يرسل )(mysql_queryأمراً الى INSERT INTOليتم ادراج صف جديد الى جدولPersonss .
105
SELECTاالختيار
106
التركيبة
الستخدام التعبير يمكن استخدام الوظيفة )( mysql_queryو بهذه الوظيفة يمكن استخدام الرسال
األوامر الى االتصال معMySQLL .
مثال
يختار المثال التالي جميع البيانات المخزنة في جدول Personsتستخدم االشارة * الختيار جميع البيانات
الموجودة في الجدول:
107
يخزن المثال السابق البيانات العائدة من خالل الوظيفة )(mysql_queryفي المتغير $result .ثم
سنقوم باستخدام )(mysql_fetch_arrayالسترجاع الصف الثاني من صفوف الجدول .أما الحلقة
whileeفإنها ستدور حول جميع الصفوف في جدول البيانات وتقدم النتيجة.
108
عرض النتيجة في جدولHTML
يختار المثال التالي نفس البيانات في المثال السابق لكن سيتم عرض البيانات في جدول HTMLكالتالي
:
Whereاستخدام
109
عبارة WHERE
التركيبة
مثال:
يختار المثال التالي جميع الصفوف من الجدول Personsحيث WHEREاالسمMutaz
110
ستظهر النتيجة على المتصفح كالتالي:
الترتيبOrder By
عند استخدام ORDER BYيكون الترتيب تصاعدي بشكل تلقائي ولكن ان أردت الترتيب بشكل آخر
مكن استخدام الكلمة DESCوالتي تشكل ترتيب تنازلي .
التركيبة
111
الترتيب من خالل عمودين
أيضاً من الممكن ترتيب أكثر من عمود .عند استخدام الترتيب من خالل أكثر من عمود فإن العمود
التاني سيتم استخدامه اذا كانت القيمة األولى متساوية:
Updateتحديث القاعدة
112
التركيبة
مالحظة :الحظ بأن التعبير WHEREيحدد أي الصف أو الصفوف الذي ينبغي تحديثه لكن بينما اذا لم
تستخدم WHEREEعندها سيتم تحديث جميع الصفوف.
الحذف Delete
113
التركيبة
مالحظة :الحظ بأن التعبير WHEREيستخدم مع تركيبة الحذف DELETEلتحديد معين أي البيانات
التي سيتم حذفها من الجدول ولكن ان لم تستخدم WHEREسيتك حذف جميع صفوف الجدول.
إلنشاء كود PHPالستخدام التعبير السابق يمكن استخدام )(mysql_queryو هي تستخدم الرسال
األوامر أو الطلبات الى اتصالMySQLL .
114