You are on page 1of 117

‫محتويات الكتاب‪:‬‬

‫أساسيات‪PHP‬‬

‫الدرس ‪ : 01‬الخطوة األولى تعتبر لغة ‪ PHP‬أداة مميزة إلنشاء صفحات انترنت ديناميكية وأكثر تفاعلية‪.‬‬

‫الدرس ‪ : 02‬مقدمة عامة تعتبر لغة ‪ PHP‬لغة برمجية تتعامل مع السيرفر‪.‬‬

‫الدرس ‪ : 03‬تنصيب‪ PHP‬اذا كان السيرفر لديك يدعم ‪ PHP‬عندها ال تحتاج لتنصيب أو فعل أي شيء‪.‬‬

‫الدرس ‪ : 04‬التركيبة تعمل أكواد ‪ PHP‬على السيرفر و تظهر النتيجة على المتصفح على شكل نصوص‪HTML‬‬

‫الدرس ‪ : 05‬المتغيرات‪ Variables‬يستخدم المتغير لحفظ المعلومات‪.‬‬

‫الدرس ‪ : 06‬المتغيرات النصية‪ String‬تستخدم المتغيرات النصية لحفظ و تعديل النصوص‪.‬‬

‫الدرس ‪ : 07‬الرموز الحسابية تستخدم الرموز الحسابية الضافة او تعيين عناصر معينة‪.‬‬

‫الدرس ‪ : 08‬تعابير اذا ‪ ..‬غير ذلك‪ If…Else‬تستخدم التعابير الشرطية إلنشاء أوامر مختلفة تعتمد على شروط مختلفة‪.‬‬

‫الدرس ‪ : 09‬تعبير‪ switch‬تستخدم التعابير الشرطية إلنشاء أوامر مختلفة تعتمد على شروط مختلفة‪.‬‬

‫الدرس ‪ : 10‬المصفوفات تستخدم المصفوفة لتخزين بيانات متعددة في متغير واحد‪.‬‬

‫الدرس ‪ : 11‬الحلقات – الحلقة‪ while‬تستخدم الحلقات إلنشاء مجموعة من األكواد تحدد عدد مرات األرقام أو اذا كان الشرط صحيح‬

‫الدرس ‪ : 12‬الحلقات – الحلقة‪ For‬تستخدم الحلقات إلنشاء مجموعة من األكواد تحدد عدد مرات األرقام أو اذا كان الشرط صحيح‪.‬‬

‫الدرس ‪ : 13‬الوظائف تستمد لغة ‪ PHP‬قوتها من خالل األكواد الوظيفية‪functions‬‬

‫الدرس ‪ : 14‬النماذج وطرق االدخال تستخدم المتغيرات ‪ $_GET‬و ‪ $_POST‬إلسترجاع معلومات من النماذج مثل اسم المستخدم‬
‫وغيرها‪.‬‬

‫الدرس ‪ : 15‬المتغير‪ GET‬يستخدم المتغير ‪ $_GET‬في ‪ PHP‬لجمع القيم في النماذج مع الطريقة”‪method=”get‬‬

‫الدرس ‪ : 16‬المتغير‪ POST‬يستخدم المتغير ‪ $_POST‬في ‪ PHP‬لجمع القيم في النماذج مع الطريقة”‪method=”post‬‬

‫________________________________________‬

‫الدروس المتقدمة‬

‫الدرس ‪ : 01‬التاريخ و الوقت تستخدم الوظيفة )(‪ date‬لتشكيل الوقت و ‪ /‬أو التاريخ‪.‬‬

‫الدرس ‪ : 02‬الملفات الضمنية الملفات الضمنية في السيرفر)‪Server Side Includes (SSI‬‬

‫الدرس ‪ : 03‬التعامل مع الملفات تعتبر الوظيفة )(‪ fopen‬مسؤولة عن فتح الملفات في لغة‪PHP .‬‬

‫الدرس ‪ : 04‬رفع الملفات من الممكن رفع الملفات الى السيرفر باستخدام لغة‪PHP .‬‬

‫الدرس ‪ : 05‬الكوكيز‪ Cookies‬يستخدم الكوكيز عادة لتحديد هوية المستخدم‪.‬‬


‫الدرس ‪ : 06‬الجلسات‪ Sessions‬تستخدم متغيرات الجلسات ‪ session‬لحفظ المعلومات حول أو تغيير الضبط للمستخدم ‪ .‬تحمل‬
‫متغيرات ‪ session‬معلومات حول مستخدم واحد كما أنها تكون متوفرة في جميع الصفحات وبتطبي واحد‪.‬‬

‫الدرس ‪ : 07‬إرسال البريد االلكتروني تسمح ‪ PHP‬بإرسال بريد الكتروني مباشرة من خالل كود معين‪.‬‬

‫الدرس ‪ : 08‬البريد االلكتروني المحمي هناك نقطة ضعف في انشاء البريد االلكتروني لكن سيتم حل هذه المشكلة في هذا‬
‫‪ .‬الدرس‬

‫الدرس ‪ : 09‬معالجة األخطاء معالجة األخطاء االفتراضي في ‪ PHP‬بسيط جداً ‪ .‬يتم ارسال رسالة الخطأ بإسم الملف أو رقم السطر‬
‫أو شرح الخطأ في رسالة الى المتصفح‪.‬‬

‫لفلترة و جعل البيانات شرعية التي تأتي من جهات غير محمية مثل ‪ PHP‬تستخدم فالتر (تصفيات)‪PHP‬الدرس ‪ : 10‬فالتر‬
‫‪ .‬مدخالت المستخدم‬
‫________________________________________‬

‫استخدام ‪ PHP‬مع‪MySQL‬‬

‫الدرس ‪ : 01‬مقدمة‪ MySQL‬تعتبر لغة ‪ MySQL‬أشهر نظام قواعد بيانات مفتوح المصدر‪.‬‬

‫الدرس ‪ : 02‬االتصال مع قاعدة البيانات ‪ MySQL‬تستخدم عادة ‪ MySQL‬مع لغة‪PHP .‬‬

‫الدرس ‪ : 03‬إنشاء قاعدة بيانات و الجداول تحتوي قاعدة البيانات على جدول أو اكثر‪.‬‬

‫الدرس ‪ : 04‬إدراج قيمة الى قاعدة البيانات تستخدم ‪ INSERT INTO‬إلدراج صف جديد في الجدول‪.‬‬

‫الدرس ‪ : 05‬االختيار ‪ SELECT‬يستخدم التعبير ‪ SELECT‬الختيار البيانات من قاعدة البيانات‬

‫الدرس ‪ : 06‬استخدام ‪ Where‬تستخدم العبارة ‪ WHERE‬لفلترة الصفوف في جداول قاعدة البيانات‪.‬‬

‫الدرس ‪ : 07‬الترتيب‪ Order By‬تستخدم الترتيب ‪ ORDER BY‬لترتيب البيانات المعروضة من قاعدة البيانات‪.‬‬

‫الدرس ‪ : 08‬تحديث القاعدة‪ Update‬تستخدم خاصية التحديث ‪ UPDATE‬للتعديل على البيانات في الجدول‪.‬‬

‫الدرس ‪ : 09‬الحذف‪ Delete‬يستخدم الحذف ‪ DELETE‬لحذف بيانات في صفوف الجدول‪.‬‬


‫أساسيات‪PHP‬‬
‫الخطوة األولى‬

‫تعتبر لغة ‪ PHP‬أداة مميزة إلنشاء صفحات انترنت ديناميكية وأكثر تفاعلية ‪.‬‬

‫يتم استخدام لغة ‪ PHP‬بشكل واسع و هي مجانية و لغة بديلة فعالة ومنافسة للغات برمجية أخرى‬
‫مثل ‪. Microsoft ASP‬‬

‫في هذا الدورة ستتعلم الكثير عن ‪ PHP‬وكيفية إنشاء األكواد على السيرفر الشخصي لديك ‪.‬‬

‫ننصح وبشدة لكتابة و تجريب األكواد استخدام برامج تحرير نصوص ‪ PHP‬مثل برنامج نوت باد بالس‬
‫‪Adobe‬‬ ‫بالس ‪ Notepad++‬و هو برنامج مجاني و جميل وأيضاً برنامج أدوبي دريم ويفر‬
‫‪Dreamweaver‬‬

‫مقدمة عامة‬

‫تعتبر لغة ‪ PHP‬لغة برمجية تتعامل مع السيرفر ‪.‬‬

‫تاريخ لغة ‪PHP‬‬

‫بي إتش بي (‪‘ ،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‬؟‬

‫ان ‪ PHP‬هي اختصار ‪ HypertextPreprocessor :PHP‬أي إعادة معالجة النصوص‬ ‫•‬

‫التشعبية ‪.‬‬
‫ان لغة ‪ PHP‬هي لغة برمجية تتعامل مع السيرفر مثل لغة ‪. ASP‬‬ ‫•‬

‫يتم إنشاء و استدعاء أكواد ‪ PHP‬على السيرفر ‪.‬‬ ‫•‬

‫‪3‬‬
‫تدعم لغة ‪ PHP‬العديد من قواعد البيانات مثل ( ‪ MySQL‬و ‪ Informix‬و ‪ Oracle‬و‬ ‫•‬

‫‪ Sybase‬و ‪ Solid PostgreSQL‬و ‪. ) Generic ODBC‬‬


‫ان لغة ‪ PHP‬هي لغة ببرمجية مفتوحة المصدر ‪.‬‬ ‫•‬

‫ان لغة ‪ PHP‬مجانية التحميل و االستخدام ‪.‬‬ ‫•‬

‫ماهو ملف ‪ PHP‬؟‬

‫يحتوي ملف ‪ PHP‬على نصوص و وسوم ‪ HTML‬و أيضاً سكربتات و أكواد أخرى ‪.‬‬ ‫•‬

‫تظهر نتيجة كود ‪ PHP‬كنص عادي ‪.‬‬ ‫•‬

‫ان امتداد ملف ‪ PHP‬هو ‪ .php‬و ‪ .php3‬و ‪.phtml‬‬ ‫•‬

‫ماهي ‪ MySQL‬؟‬

‫ان لغة ‪ MySQL‬هي لغة قواعد بيانات ‪.‬‬

‫تعتبر لغة ‪ MySQL‬لغة مثالية لكل من التطبيقات الصغيرة والكبيرة ‪.‬‬ ‫•‬

‫تدعم ‪ MySQL‬لغة ‪. SQL‬‬ ‫•‬

‫تستجيب لغة ‪ MySQL‬لعدد من اللغات البرمجية ‪.‬‬ ‫•‬

‫ان لغة ‪ MySQL‬مجانية التحميل و االستخدام ‪.‬‬ ‫•‬

‫‪PHP + MySQL‬‬

‫يتم استخدام ‪ PHP‬مع لغة ‪ MySQL‬إلنشاء منصة و قاعدة يمكن العمل منها سيرفر محلي‬ ‫•‬

‫و أيضًا يمكن أن يعمل على ويندز و أيضاً على يونكس ‪. Unix‬‬

‫لماذا ‪ PHP‬؟‬

‫تعمل ‪ PHP‬على أرضيات و برامج مختلفة مثل ويندوز ‪ ,‬لينوكس و يونكس ‪.‬‬ ‫•‬

‫‪4‬‬
‫تعمل ‪ PHP‬على جميع أنواع السيرفرات المستخدمة حالياً مثل ‪ Apache‬و ‪. IIS‬‬ ‫•‬

‫ان لغة ‪ PHP‬مجانية االستخدام و التحميل من الموقع الرسمي ‪www.php.net‬‬ ‫•‬

‫ان لغة ‪ 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‬مجاناً من خالل الرابط ‪http://www.php.net/downloads.php:‬‬

‫تحميل قواعد البيانات ‪MySQL‬‬

‫لتحميل ‪ MySQL‬مجاناً من خالل الرابط ‪/http://www.mysql.com/downloads:‬‬

‫تحميل السيرفر أباتشي ‪Apache Server‬‬

‫لتحميل السيرفر أباتشي من خالل الرابط ‪http://httpd.apache.org/download.cgi :‬‬

‫التركيبة‬

‫تعمل أكواد ‪ 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‬‬

‫تستخدم المتغيرات لحفظ قيم مثل النصوص و األرقام و المصفوفات ‪.‬‬

‫يمكن استخدام المتغير عند إنشائه في أي مكان و عدة مرات في صفحات الويب ‪.‬‬

‫جميع متغيرات ‪ PHP‬تبدأ باإلشارة ‪. $‬‬

‫‪8‬‬
‫أفضل و أصح طريقة إلنشاء متغير هي كالتالي ‪:‬‬

‫ينسى بعض المبرمجون الجدد وضع إشارة ‪ $‬قبل اسم المتغير و عند ذلك لن يعمل الكود‪.‬‬

‫اآلن سنقوم بإنشاء متغيرين األول يحتوي على نص و الثاني يحتوي على رقم‪.‬‬

‫لغة ‪ PHP‬متراخية‬

‫باستخدام لغة ‪ PHP‬لست بحاجة إلعالن المتغير قبل غضافة القيمة اليه ‪.‬‬

‫في المثال السابق لست بحاجة لتعريف المتغير فيما اذا نوع البيانات الموجودة فيه نص أو أرقام أو غير‬
‫ذلك ألن لغة ‪ PHP‬تثوم تلقائياً بتحديد نوع بيانات المتغير فور استخدام القيمة المرفقة مع المتغير ‪.‬‬

‫في لغات البرمجة المتشددة يجب عليك تحديد نوع المتغير قبل إضافة البيانات اليه بينما لغة ‪ PHP‬تعتبر‬
‫لغة متسامحة و متراخية أي يتم تحديد نوع المتغير عند اضافة القيمة اليه ‪.‬‬

‫‪9‬‬
‫قواعد اختيار اسم المتغير‬

‫يجب أن يبدأ اسم المتغير بحرف انكليزية صغير أو إشارة _‬ ‫•‬

‫يجب أن يحتوي اسم المتغير على أحرف صغيرة أو ارقام (‪) _ ,a-z, A-Z, 0-9‬‬ ‫•‬

‫اليجب أن يحتوي اسم المتغير على مسافة فاصلة بين األسماء كما يمكن تفريق الكلمات‬ ‫•‬

‫باستخدام _ )‪ ($my_string‬أو من خالل األحرف الكبيرة ألول حرف من كل‬


‫كلمة )‪. ($myString‬‬

‫‪ String‬المتغيرات النصية‬

‫تستخدم المتغيرات النصية لحفظ و تعديل النصوص ‪.‬‬

‫المتغيرات النصية في ‪PHP‬‬

‫تستخدم المتغيرات النصية للقيم التي تحتوي على أحرف و كلمات ‪.‬‬

‫سنطلع في هذا الدرس على أكثر ‪ functions‬و ‪ operators‬المستخدمة كنصوص ‪ strings‬في ‪PHP‬‬
‫‪.‬‬

‫يمكننا التعديل على النص الموجود ضمن المتغير بعد إنشائه كما يمكن استدعائه مباشرة أو يمكن‬
‫حفظه و التعديل عليه الحقاً ‪.‬‬

‫في المثال التالي تم إنشاء متغير يحتوي على قيمة نصية و قد تم استدعائه ليتم عرض النتيجة على‬
‫المتصفح ‪.‬‬

‫‪10‬‬
‫ستظهر النتيجة على المتصفح‪:‬‬

‫مرحباً بكم‬

‫ربط األكواد‬

‫يوجد رابطة واحدة مستخدمة مع ‪ PHP‬لربط األكواد معاً و هي (‪ ).‬و تستخدم لربط قيمتين نصيتين مع‬
‫بعضهم‪.‬‬

‫مثال‬

‫‪11‬‬
‫ستظهر النتيجة‪:‬‬

‫مرحباً بكم في موقع معتز للبرامج‬

‫ان نظرنا للكود في المثال السابق سنشاهد أننا استخدمنا رابطة لربط بين المتغيرين ‪ .‬و أيضاً قمنا بإضافة‬
‫قيمة ثالثة و هي مسافة بين الكلمتين‪.‬‬

‫الكود الوظيفي )(‪strlen‬‬

‫يستخدم الكود الوظيفي )(‪strlen‬لتحديد طول النص أي عدد أحرف النص المستخدمة‪.‬‬

‫مثال‬

‫ستظهر النتيجة على المتصفح‪:‬‬

‫‪12‬‬

‫يستخدم عادة هذا الكود الوظيفي مع الحلقات أو بعض األكواد الوظيفية األخرى خاصة عندما يكون‬
‫من المهم معرفة متى ستتوقف الحلقة‪.‬‬

‫الكود الوظيفي )(‪strpos‬‬

‫‪12‬‬
‫يستخدم الكود الوظيفي )(‪strpos‬للبحث عن نص أو أحرف ضمن النص الواحد ‪.‬‬

‫ان تم إيجاد النتيجة سيتم عرض مكان الكلمة أو الحرف عند أو مطابقة للنتيجة ‪ .‬و لكن إن لم يتم إيجاد‬
‫نتيجة عندها ستكون النتيجة‪FALSE .‬‬

‫سنقوم اآلن بالبحث عن الكلمة ”‪ “world‬ضمن النص‪:‬‬

‫ستظهر النتيجة على المتصفح‪:‬‬

‫‪6‬‬

‫ان موضع الكلمة في النص هو ‪ 6‬في المثال السابق ‪ .‬و السبب بأنها ‪ 6‬وليست ‪ 7‬بأن الحرف األحرف من‬
‫النص يبدأ بالرقم ‪ 0‬و ليس ‪.1‬‬

‫‪ PHP‬الرموز الحسابية في‬

‫تستخدم الرموز الحسابية الضافة او تعيين عناصر معينة‬

‫الرموز الحسابية في ‪PHP‬‬

‫تستخدم ‪ PHP‬العديد من الرموز الحسابية ‪.‬‬

‫‪13‬‬
‫الرموز الحسابية الجبرية – ‪Arithmetic Operators‬‬

‫رموز التعيين الحسابية ‪Assignment Operators‬‬

‫‪14‬‬
‫رموز المقارنة‪– Comparison Operators‬‬

‫تستخدم الرموز المنطقية لتحديد عالقة منطقية بين المتغيرات والقيم‪.‬‬

‫لنفترض أن ‪ x=6‬و‪ y=3‬في الجدول التالي لشرح الرموز المنطقية‪:‬‬

‫الرموز المنطقية – ‪Logical Operators‬‬

‫‪15‬‬
‫‪ If…Else‬تعابير اذا ‪ ..‬غير ذلك‬

‫تستخدم التعابير الشرطية إلنشاء أوامر مختلفة تعتمد على شروط مختلفة ‪.‬‬

‫التعابير الشرطية‬

‫عندما تكتب كود معين غالباً ماتريد إنشاء أمر معين حسب شروط مختلفة ولهذا يمكنك استخدام‬
‫خاصية التعابير الشرطية لفعل ذلك وسنتعلم كيف في األمثلة ‪.‬‬

‫لدينا ‪ 4‬تعابير شرطية وهي ‪:‬‬

‫تعبير ‪ : if‬يستخدم هذا التعبير إلظهار كود معين في حال كانت الحالة صحيحة تماماً ‪.‬‬ ‫•‬

‫تعبير ‪ : if … else‬تعبير اذا وغير ذلك ‪ :‬يمكن استخدام هذا النوع من الكود الشرطي اذا‬ ‫•‬

‫كانت حالة الشرط األول صحيحة والثانية خاطئة ‪.‬‬


‫تعبير ‪ : if … else if ….else‬يستخدم هذا التعبير مع واحد من مجموعة أكواد أي‬ ‫•‬

‫يستخدم عند تحقق شرط معين واذا لم يتحقق سيتم إظهار شرط آخر واذا لم يتحقق سيتم‬
‫تلقائياً تطبيق الكود عند ‪. else‬‬
‫تعبير ‪ : switch‬يستخدم هذا التعبير إلختيار كود من مجموعة أكواد ‪.‬‬ ‫•‬

‫‪16‬‬
‫تعبير ‪If‬‬

‫يستخدم هذا التعبير إلظهار كود معين في حال كانت الحالة صحيحة تماماً ‪.‬‬

‫التركيبة‬

‫;الكود الذي سيعرض اذا كانت النتيجة صحيحة‬

‫‪ :‬اذا كان اليوم جمعة ”اليوم هو جمعة“سيعرض المثال التالي‬

‫في هذا المثال ‪ .‬ستظهر نتيجة الكود فقط عندما تكون النتيجة ‪else‬الحظ أننا لم نستخدم تعبير‬
‫‪ .‬صحيحة‬

‫‪17‬‬
‫تعبير‪if … else‬‬

‫تعبير اذا أو غير ذلك ‪ :‬يمكن استخدام هذا النوع من الكود الشرطي اذا كانت حالة الشرط األول صحيحة‬
‫والثانية خاطئة‪.‬‬

‫التركيبة‬

‫مثال‬

‫سيعرض المثال التالي “اليوم هو جمعة ”اذا كان اليوم جمعة أما اذا لم يكن جمعة فستعرض النتيجة‬
‫“اليوم ليس بيوم جمعة‪” :‬‬

‫‪18‬‬
‫اذا كان هناك أكثر من نتيجة سيتم عرضها اذا كان الشرط ‪true/false‬عندها يجب وضع الشرط‬
‫والنتائج ضمن أقواس منحنية}{‬

‫تعبير‪if … else if ….else‬‬

‫يستخدم هذا التعبير مع واحد من مجموعة أكواد أي يستخدم عند تحقق شرط معين واذا لم يتحقق‬
‫سيتم إظهار شرط آخر واذا لم يتحقق سيتم تلقائياً تطبيق الكود عند‪else .‬‬

‫‪19‬‬
‫التركيبة‬

‫مثال‬

‫في المثال التالي سيتم عرض الجملة ”!‪“Have a nice weekend‬اذا كان اليوم جمعة واذا لم يكن‬
‫سيتم عرض ”!‪ “Have a nice Sundayy‬اذا كان يوم األحد و سيتم عرض ”!‪ “Have a nice day‬اذا‬
‫كان غير ذلك‪.‬‬

‫‪20‬‬
‫تعبير ‪switch‬‬

‫تستخدم التعابير الشرطية إلنشاء أوامر مختلفة تعتمد على شروط مختلفة ‪.‬‬

‫تعبير ‪ switch‬في ‪PHP‬‬

‫يستخدم تعبير ‪ switch‬إلختيار كود من مجموعة أكواد ‪.‬‬

‫‪21‬‬
‫التركيبة‬

‫كيف يعمل الكود‬

‫أوالً يجب تحديد تعبير معين بين قوسيم عند استخدام التعبير ‪ switch‬وغالباً مايكون متغير ويتم‬
‫تقديره مرة واحدة ثم يتم مقارنة قيمة التعبير الذي سيتم مقارنته مع القيم األخرى في كل حالة‪.‬‬

‫إن كان هناك تطابق مع الكود سيت عرضه فوراً وسيتوقف الكود عن الفحص كما يمكن استخدام‬
‫‪break‬بعد كل حالة لتجنب عبور الفحص إلى الحالة األخرى تلقائياً‪.‬‬

‫‪22‬‬
‫مثال‬

‫المصفوفات‬

‫تستخدم المصفوفة لتخزين بيانات متعددة في متغير واحد ‪.‬‬

‫‪23‬‬
‫ماهي المصفوفة ‪ Array‬؟‬

‫المصفوفة هي متغير خاص حيث يمكنه تخزين قيمة أو أكثر في نفس الوقت ‪.‬‬

‫اذا كان لديك قائمة من العناصر ( كتب على سبيل المثال ) عندها يمكنك تخزينهم في متغير واحد ‪.‬‬

‫مثال‬

‫ولكن ماذا لو أردت أن تجلب كتاب معين من بين هذه الكتب وماذا لو كان لديك أكثر من ‪ 300‬كتاب‬
‫ليس فقط ‪ 3‬؟ ماذا ينبغي أن تفعل ؟‬

‫أفضل حل هو إنشاء مصفوفة )(‪array‬‬

‫يمكن للمصفوفة أن تحمل جميع القيم التي لديك وأيضاً جميع المتغيرات التي لديك بمتغير واحد فقط‬
‫ويمكنك استدعاء القيمة التي تريد من خالل ذكر اسمها فقط او ترتيبها‪.‬‬

‫يحتوي كل عنصر في المصفوفة على ‪ ID‬خاص به وبذلك يمكن استدعائه بسهولة‪.‬‬

‫يوجد ‪ 3‬أنواع للمصفوفات في لغة‪PHP :‬‬

‫المصفوفة الرقمية ‪ :‬تحتوي على فهرسة رقمية‪.‬‬ ‫•‬

‫مصفوفة التعيين ‪ :‬تتكون من مجموعة ‪ ID‬وكل ‪ ID‬يحمل قيمته الخاصة‪.‬‬ ‫•‬

‫المصفوفة المتعددة الخيارات ‪ :‬تحتوي على مصفوفة أو أكثر من مصفوفة‪.‬‬ ‫•‬

‫المصفوفة الرقمية‬

‫تخزن المصفوفة الرقمية كل عنصر من المصفوفة برقم مفهرس‪.‬‬

‫‪24‬‬
‫هناك طريقتين إلنشاء مصفوفة‬

‫‪1.‬في هذا المثال تم تعيين الفهرسة تلقائياً (تبدأ الفهرسة من الرقم ‪.)0‬‬

‫يدوياً‪.‬‬ ‫الفهرسة‬ ‫وتعيين‬ ‫مصفوفة‬ ‫إنشاء‬ ‫سيتم‬ ‫التالي‬ ‫المثال‬ ‫‪2.‬في‬

‫مثال‬

‫في المثال التالي سيتم اختيار قيمة معينة من المصفوفة‪.‬‬

‫‪25‬‬
‫ستظهر النتيجة على المتصفح‪:‬‬

‫يعتبر كتاب البرمجة و كتاب الحاسوب من أفضل الكتب العلمية‬

‫مصفوفة التعيين‬

‫يمكن تحديد في مصفوفة التعيين كل قيمة مع رقم ‪ ID‬الخاص بها‪.‬‬

‫ليس من الجيد استخدام المصفوفة الرقمية عند طلب قيمة معينة من المصفوفة لذلك أفضل طريقة‬
‫هي مصفوفة التعيين‪.‬‬

‫مثال ‪1‬‬

‫في هذا المثال سيتم تحديد قيم محددة اي سيتم تحديد اسم الشخص مع عمره‪.‬‬

‫مثال ‪2‬‬

‫يعتبر هذا المثال مماثل للمثال ‪ 1‬ولكن يظهر طريقة أخرى إلنشاء المصفوفة‪.‬‬

‫‪:‬‬ ‫يمكن استخدام ‪ ID‬في كود المثال التالي‬

‫‪26‬‬
‫ستظهر النتيجة على المتصفح‬

‫‪Peter is 32 years old.‬‬

‫المصفوفة المتعددة‬

‫يمكن ألي عنصر في المصفوفة المتعددة األصلية أن يصبح مصفوفة فرعية وأيضاً أي عنصر في المصفوفة‬
‫الفرعية يمكن أن يصبح مصفوفة مستقلة وهكذا‪.‬‬

‫في المثال التالي سنقوم بإنشاء مصفوفة متعددة و تلقائياً محدد بـآي دي ‪ ID‬خاص‪.‬‬

‫‪27‬‬
‫سيصبح شكل المصفوفة السابقة كالتالي في حال تم كتابتها كنتيجة على التصفح‪.‬‬

‫‪28‬‬
‫مثال ‪2‬‬

‫اآلن سنقوم باستدعاء أحد عناصر المصفوفة السابقة في‪:‬‬

‫ستظهر النتيجة على المتصفح‬

‫?‪Is Megan a part of the Griffin family‬‬

‫‪29‬‬
‫الحلقات – الحلقة ‪while‬‬

‫تستخدم الحلقات إلنشاء مجموعة من األكواد تحدد عدد مرات األرقام أو اذا كان الشرط صحيح ‪.‬‬

‫حلقات ‪PHP‬‬

‫عند كتابتك لكود معين وتريد أن يكون هذا الكود مماثل لعدة مرات بالظهور نفسه مجدداً ضمن سطر‬
‫معين ‪.‬‬

‫عوضاً عن كتابة الكود أكثر من مرة يمكنك استخدام الكود مرة واحدة وبشكل حلقات متتالية عندها‬
‫يظهر الكود الذي تريد أكثر من مرة ‪.‬‬

‫هناك ‪ 4‬أنواع من الحلقات في ‪PHP‬‬

‫الحلقات باستخدام ‪ : while‬من خالل استخدام مجموعة أكواد عند تحقق شرط معين ‪.‬‬ ‫•‬

‫الحلقات باستخدام ‪ : do…while‬من خالل استخدام مجموعة أكواد لمرة واحدة ثم تكرار‬ ‫•‬

‫الحلقة طالما يتحقق ذلك شرط ‪.‬‬


‫الحلقات باستخدام ‪ : for‬من خالل استخدام مجموعة أكواد لتحديد عدد مرات معينة ‪.‬‬ ‫•‬

‫الحلقات باستخدام ‪ : 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 :‬تستخدم عادة لضبط العداد (لكن يمكن أن يكون أي نوع من األكواد التي ستظهر‬ ‫•‬

‫مرة في بداية كل حلقة‪) .‬‬


‫‪Condition :‬الشرط و هو الشرط الذي سيرفق في الحلقة في حال كان الشرط ‪ true‬فإن‬ ‫•‬

‫الحلقة ستكمل الدوران ولكن في حال كان الشرط ‪false‬ستتوقف الحلقة‪.‬‬


‫‪Increment :‬تستخدم عادة لزيادة العداد‪.‬‬ ‫•‬

‫مالحظة ‪ :‬كل واحد من البارامتر في التركيبة السابقة يمكن أن يكون خالياً و يمكن أن يكون أكثر‬
‫من تعبير مفصول بفاصلة‪.‬‬

‫يعرّف المثال التالي حلقة تبدأ من ‪ i=1 .‬ستستمر الحلقة بالدوران طالما أن ‪ i‬هي أصغر أو تساوي ‪. 5‬‬
‫سيتم زيادة ‪ i‬بالرقم ‪ 1‬في كل مرة تدور فيها الحلقة‪.‬‬

‫‪34‬‬
‫النتيجة‬

‫الرقم هو ‪1‬‬
‫الرقم هو ‪2‬‬
‫الرقم هو ‪3‬‬
‫الرقم هو ‪4‬‬
‫الرقم هو ‪5‬‬

‫حلقة ‪foreach‬‬

‫من خالل استخدام مجموعة أكواد لكل عنصر في المصفوفة‪.‬‬

‫التركيبة‬

‫‪35‬‬
‫في المثال التالي يشرح كيفية إظهار النتيجة من المصفوفة ‪:‬‬

‫النتيجة‬

‫واحد‬ ‫•‬

‫اثنان‬ ‫•‬

‫ثالثة‬ ‫•‬

‫الوظائف و الدوال‬

‫تستمد لغة ‪ PHP‬قوتها من خالل األكواد الوظيفية ‪functions‬‬

‫هناك أكثر من ‪ 700‬كود وظيفي معرّف مسبقاً من خالل اللغة نفسها ‪.‬‬

‫‪36‬‬
‫األكواد الوظيفية المعرّفة مسبقاً‬

‫لمراجع كاملة عن الكواد الوظيفية المعرّفة مسبقاً يمكنك زيارة مرجعنا الشامل عن ‪PHP‬‬

‫دوال ‪PHP‬‬

‫سندرس في هذا الدرس كيفية إنشاء الكود الوظيفي الخاص بك ‪.‬‬

‫يمكنك وضعه ضمن وظيفة للحفاظ على الكود من ظهوره عند تحميل الصفحة ‪.‬‬

‫يمكن إظهار ‪ function‬من خالل استدعائه ‪.‬‬

‫يمكنك استدعائه في أي مكان في الصفحة ‪.‬‬

‫إنشاء كود وظيفي ‪PHP‬‬

‫يمكن إظهار ‪ function‬من خالل استدعائه ‪.‬‬

‫التركيبة‬

‫بعض النصائح عند إنشاء الكود الوظيفي‬

‫ضع اسم مناسب للكود الوظيفي بحيث يشرح ماهية عمل ذلك الكود‪.‬‬ ‫•‬

‫‪37‬‬
‫يمكن أن يبدأ اسم الكود بأحرف أو اشارة _ ولكن ليس رقم‪.‬‬ ‫•‬

‫إضافة ‪parameters‬‬

‫إلضافة فعالية إضافية الى الكود الوظيفي يمكنك اضافة ‪ parameters .‬يعتبر ‪ parameters‬مثل‬
‫المتغير تماماً‪.‬‬

‫يتم تحديد ‪ parameters‬بعد اسم ‪ function‬داخل األقواس‪.‬‬

‫ارجاع القيم‪Return values‬‬

‫إلرجاع قيمة من الكود الوظيفي يمكن استخدام التعبير‪return‬‬

‫مثال‬

‫النتيجة‬

‫‪1 + 16 = 17‬‬

‫‪38‬‬
‫النماذج و طرق االدخال‬

‫تستخدم المتغيرات ‪ $_GET‬و ‪ $_POST‬إلسترجاع معلومات من النماذج مثل اسم المستخدم وغيرها‬
‫‪.‬‬

‫التحكم بالنماذج‬

‫أكثر األشياء أهمية عند التعامل مع نماذج ‪ HTML‬و ‪ PHP‬هو أن أي عنصر من النماج في صفحات ‪HTML‬‬
‫ستكون متوفرة تلقائياً مع أكواد ‪. PHP‬‬

‫مثال‬

‫يحتوي المثال التالي على نموذج ‪ HTML‬مع حقلين من نماذج االدخال و أيضاً أيقونة إرسال ‪:‬‬

‫عند تعبئة الحقول في المثال السابق والضغط على األيقونة ارسال سيتم ارسال البيانات الى ملف ‪PHP‬‬
‫و المسمى ‪welcome.php‬‬

‫يجب أن يكون ملف ‪ welcome.php‬يحتوي على الكود التالي‪:‬‬

‫‪39‬‬
‫ستظهر النتيجة على المتصفح حسب وضع البيانات في ذلك الملف‬

‫مرحباً محمد !‬
‫عمرك هو ‪ 25‬عام‪.‬‬

‫فعالية النماذج‬

‫يجب التأكد من فعالية نماذج االدخال التي يستخدمها الزائر ان أمكن ألن عمليه التأكد على المتصفح‬
‫تعتبر سريعة و تقلل من ضغط التحميل على السيرفر‪.‬‬

‫يجب استخدام خاصية التأكد من نماذج االدخال وخاصة ان كان النموذج سيتم ارساله الى قاعدة البيانات‬
‫‪ .‬افضل طريقة إلنشاء تفعيل للنموذج على السيرفر هو ادراجه في النموذج نفسه بدالً من الذهاب الى‬
‫صفحة أخرى و عندها سيحصل المستخدم على رسالى الخطأ في نفس الصفحة و بتلك الطريقة يمكن‬
‫استكشاف األخطاء بسرعة و سهولة‪.‬‬

‫المتغير ‪GET‬‬

‫يستخدم المتغير ‪ $_GET‬في ‪ PHP‬لجمع القيم في النماذج مع الطريقة”‪method=”get‬‬

‫‪40‬‬
‫المتغير ‪$_GET‬‬

‫ترسل المعلومات عبر النماذج من خالل الطريقة ‪ GET‬وهي مرئية للجميع أي تظهر المعلومات على رابط‬
‫المتصفح كما تحتوي على كمية محدودة من المعلومات المرسلة ‪.‬‬

‫مثال‬

‫عند الضغط على رز االرسال سيظهر على المتصفح المعلومات التي قمت بإدخالها في حقول النموذج‪.‬‬

‫يستخدم الملف ‪ welcome.php‬المتغير ‪$_GET‬لجمع البيانات أي ستصبح األسماء الخاصة بالنموذج‬


‫عبارة وسوم للمصفوفة ‪$_GET :‬‬

‫‪41‬‬
‫متى نستخدم الطريقة ”‪method=”get‬‬

‫عند استخدام الطريقة ”‪method=”get‬في نماذج ‪ HTML‬عندها جميع األسماء و القيم الموجودة ضمن‬
‫وسم >‪<inputt‬ستظهر على رابط المتصفح‪.‬‬

‫مالحظة‬

‫ال يجب استخدام هذه الطريقة عند ارسال بيانات هامة مثل كلمة المرور أو أي معلومات‬ ‫•‬

‫حساسة ‪ .‬و على أي حال ألن المتغيرات يتم عرضها على رابط المتصفح يمكن استخدام‬
‫‪bookmark‬عالمة للصفحة و التي يمكن أن تكون مفيدة في بعض الحاالت‪.‬‬
‫ان الطريقة ‪ get‬غير مناسبة عند ارسال كميات كبيرة من البيانات و أيضاً اليجب استخدامها‬ ‫•‬

‫عندما تتجاوز كمية القيم عند ‪ 2000‬حرف‪.‬‬

‫‪ POST‬المتغير‬

‫يستخدم المتغير ‪ $_POST‬في ‪ PHP‬لجمع القيم في النماذج مع الطريقة”‪method=”post‬‬

‫المتغير ‪$_POST‬‬

‫ترسل المعلومات عبر النماذج من خالل الطريقة ‪ POST‬وهي غير مرئية للجميع أي ال تظهر المعلومات‬
‫على رابط المتصفح كما تحتوي على كمية غير محدودة من المعلومات المرسلة ‪.‬‬

‫مالحظة ‪ :‬الحجم الكلي للطريقة ‪ POST‬هي ‪ 8‬ميجابايت و بشكل افتراضي يمكن تغيير هذه االعدادات‬
‫من خالل ملف ‪ php.ini‬من خالل الضبط ‪. post_max_sizee‬‬

‫‪42‬‬
‫مثال‬

‫عند الضغط على زر االرسال سيصبح الرابط كالتالي‪:‬‬

‫‪http://www.example.com/welcome.php‬‬

‫يستخدم الملف ‪ welcome.php‬المتغير ‪$_POST‬لجمع البيانات أي ستصبح األسماء الخاصة بالنموذج‬


‫عبارة وسوم للمصفوفة ‪$_POST :‬‬

‫متى نستخدم الطريقة ”‪method=”post‬‬

‫ان المعلومات التي ترسل من النماذج من خالل الطريقة ‪ POST‬تكون مخفية عن االخرين و غير محدودة‬
‫بكمية المعلومات المرسلة‪.‬‬

‫وعلى أي حال وبسبب أن هذه الطريقة مخفية و التظهر على الرابط فهذه الطريقة غير صالحة إلنشاء‬
‫عالمات للصفحات‪bookmarks .‬‬

‫المتغير ‪$_REQUEST‬‬

‫يحتوي المتغير المعرّف ‪$_REQUEST‬في لغة ‪ PHP‬على محتوى كالً‬


‫من ‪$_GET‬و ‪$_POST‬و ‪$_COOKIE .‬‬

‫يمكن أن يستخدم المتغير ‪$_REQUEST‬لجمع بيانات النموذج و إرساله الى كالً من الطريقتين ‪GET‬‬
‫و‪POST .‬‬

‫‪43‬‬
‫الدروس المتقدمة‬

‫التاريخ و الوقت‬

‫تستخدم الوظيفة )(‪ date‬لتشكيل الوقت و ‪ /‬أو التاريخ ‪.‬‬

‫الوظيفة )(‪Date‬‬

‫يستخدم الكود الوظيفي )(‪ date‬لتحديد الوقت و التاريخ وجعله واضح على المتصفح ‪.‬‬

‫التركيبة‬

‫تشكيل الزمن )(‪Date‬‬

‫يحدد الجزء المطلوب ‪ format‬في الكود )(‪date‬كيفية تشكيل التاريخ أو الوقت‪.‬‬

‫‪44‬‬
‫يمكن استخدام بعض األحرف كالتالي‪:‬‬

‫‪d :‬يعبر عن أيام الشهر و هي من ‪ 01‬الى ‪.31‬‬ ‫•‬

‫‪m :‬يعبر عن الشهر من الشهر ‪ 01‬الى ‪.12‬‬ ‫•‬

‫‪y :‬تعبر عن السنة من خالل أربع خانات‪.‬‬ ‫•‬

‫من هنا يمكن مشاهدة جميع تشكيالت الوقت من خالل المرجع الخاص بالتاريخ و الوقت‪.‬‬

‫اشارات أخرى مثل ‪ /‬او ‪ .‬أو – يمكن أن توضع بين األحرف لتعديل تشكيل التاريخ‪.‬‬

‫مثال‬

‫ستظهر النتيجة على المتصفح‬

‫‪2009/05/11‬‬

‫‪2009.05.11‬‬

‫‪2009-05-11‬‬

‫‪45‬‬
‫اضافة تفاصيل للزمن‬

‫يمكن اضافة تفاصيل معينة للزمن و استخدام تاريخ رما قديم أو حديث ولكن هذه االضافة اختيارية‬
‫وان لم تقم بضبطها سيتم اختيار التاريخ الحالي‪.‬‬

‫يرجع الكود الوظفي )(‪mktime‬الزمن العالمي للتاريخ‪.‬‬

‫يحتوي الزمن العالمي على أجزاء صغيرة من الثانية والتي تبدأ من كانون الثاني ‪(1 1970 00:00:00‬‬
‫‪GMT ) .‬‬

‫تركيبة )(‪mktime‬‬

‫للذهاب الى وقت معين الى المستقبل يمكن اضافة تعبير اليوم من خالل الكود‪mktime() :‬‬

‫ستظهر النتيجة على المتصفح‬

‫‪46‬‬
‫المرجع الكامل في‪PHP‬‬

‫من هنا يمكن مشاهدة جميع تشكيالت الوقت من خالل المرجع الخاص بالتاريخ و الوقت‬

‫‪ include‬الملفات الضمنية‬

‫الملفات الضمنية في السيرفر)‪Server Side Includes (SSI‬‬

‫يمكنك ادراج محتوى ملفات ‪ 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‬‬

‫تعتبر )(‪require‬مشابهة تماماً للوظيفة )(‪include‬باستثناء طريقة التعامل مع األخطاء‪.‬‬

‫عند حوث خطأ برمجي معين تقوم الوظيفة )(‪include‬بتوليد التحذيرات ولكن سيتم استكمال عرض‬
‫باقي الكود أما الوظيفة )(‪require‬تقوم بتوليد خطأ فادح عندها سيتم إيقاف الكود ولن يتم عرضه‬
‫‪.‬‬

‫مثال رسالة الخطأ باستخدام )(‪include‬‬

‫رسالة الخطأ‪:‬‬

‫‪50‬‬
‫الحظ بأن الجملة !‪ Hello World‬تم عرضها وذلك ألن التحذير لم يقوم بإيقاف الكود بشكل كامل‪.‬‬

‫مثال رسالة الخطأ باستخدام )(‪require‬‬

‫اآلن لنقم بإنشاء الكود التالي الخاص بالوظيفة ‪require() :‬‬

‫رسالة الخطأ‪:‬‬

‫لم تظهر الجملة الموجودة بعد الكود وذلك ألنها التقوم بعرض باقي الكود عند استكشاف خطأ معين‬
‫‪.‬‬

‫‪51‬‬
‫من األفضل استخدام )(‪require‬مع الصفحات التي تحتوي على أكواد وألنها بشكل طبيعي لن تعمل‬
‫األكواد في حال الخطأ أما )(‪include‬يمكن استخدامها مع الصفحات التي التحتوي على األكواد مثل‬
‫‪HTML‬أو‪CSSS .‬‬

‫التعامل مع الملفات‬

‫تعتبر الوظيفة )(‪ fopen‬مسؤولة عن فتح الملفات في لغة ‪. PHP‬‬

‫فتح الملف‬

‫تعتبر الوظيفة )(‪ fopen‬مسؤولة عن فتح الملفات في لغة ‪. PHP‬‬

‫يستخدم أول رمز داخل الكود الوظيفي إلدراج اسم الملف المراد فتحه أما في الرمز الثاني سيتم تحديد‬
‫حالة الملف بعد فتحه ‪:‬‬

‫‪:‬‬ ‫يمكن تحديد حالة الملف من خالل الحاالت التالية‬

‫‪52‬‬
‫مالحظة ‪ :‬اذا كانت الوظيفة )(‪fopen‬غير قادرة على فتح ملف معين عندها ستعود القيمة ‪.00‬‬

‫مثال‪:‬‬

‫في المثال التالي سيتم اظهار رسالة اذا كانت الوظيفة )(‪fopen‬غير قادرة على فتح الملف‪.‬‬

‫‪53‬‬
‫إغالق الملف‬

‫تستخدم الوظيفة )(‪fclose‬إلغالق ملف معين‪.‬‬

‫فحص آخر الملف‬

‫يفحص الوظيفة )(‪feof‬نهاية الملف أي في حالة تم قراءة الملف بشكل كامل‪.‬‬

‫تعتبر الوظيفة )(‪feof‬مثالية في استخدام الحلقات عبر البيانات الغير معروفة الطول‪.‬‬

‫مالحظة ‪ :‬اليمكنك قراءة الملفات المفتوحة من خالل ‪ w‬و ‪ a‬و‪x .‬‬

‫‪54‬‬
‫قراءة الملف سطر بسطر‬

‫تستخدم الوظيفة )(‪fgets‬لقراءة سطر معين من الملف‪.‬‬

‫مالحظة ‪ :‬بعد استخدام هذه الوظيفة سينتقل المؤشر للسطر الثاني‪.‬‬

‫مثال‬

‫في المثال التالي سيتم قراءة سطر واحد من الملف أي حتى نهاية الملف‪.‬‬

‫قراءة الملف كلمة بكلمة‬

‫تستخدم الوظيفة )(‪fgetc‬لقراءة كلمة واحدة من الملف‪.‬‬

‫مالحظة ‪ :‬بعد استخدام هذه الوظيفة سينتقل المؤشر للكلمة الثاني‪.‬‬

‫‪55‬‬
‫مثال‬

‫في المثال التالي سيتم قراءة كلمة واحدة من الملف أي حتى نهاية الملف‪.‬‬

‫رفع الملفات‬

‫من الممكن رفع الملفات الى السيرفر باستخدام لغة‪PHP .‬‬

‫إنشاء نموذج لرفع الملفات‬

‫يمكن إنشاء نموذج يسمج للمستخدم رفع ملفاته بسهولة‪.‬‬

‫الحظ نموذج ‪ HTML‬التالي والذي يسمح برفع الملفات‪:‬‬

‫‪56‬‬
‫ان المثال السابق هو إنشاء نموذج من خالل لغة‪HTML :‬‬

‫تحدد الالحقة ‪ enctype‬الموجودة في وسم النموذج >‪<form‬نوع المحتوى المستخدم عند‬ ‫•‬

‫الضغط على زر “ارسال” ‪ .‬أما القيمة ”‪ “multipart/form-data‬تستخدم عندما يطلب‬


‫النموذج بيانات ثنائية مثل محتوى مجلد سيتم رفعه‪.‬‬
‫تحدد الالحقة ”‪type=”file‬الموجودة في الوسم >‪<input‬حيث يجب أن تكون العملية‬ ‫•‬

‫مجلد أي على سبيل المثال عند االستعراض على المتصفح سيتواجد بجانب حقل النص زر لرفع‬
‫الملف‪.‬‬

‫مالحظة ‪ :‬تعتبر مخاطرة كبيرة في الحماية عند السماح للمستخدم برفع ملفات على السيرفر لذلك مكنك‬
‫فقط السماح للمستخدمين الموثوقين برفع الملفات على السيرفر‪.‬‬

‫إنشاء سكربت لرفع الملفات‬

‫يحتوي ملف الرفع ‪ upload_file.php‬على الكود التالي‪:‬‬

‫‪57‬‬
‫باستخدام المصفوفة ‪$_FILES‬يمكنك رفع الملفات من حاسوب المستخدم الى السيرفر‪.‬‬

‫ان أول قيمة في حقل النموذج هي االسم أما الثانية فيمكن أن تكون اما االسم ‪ name‬أو النوع ‪type‬‬
‫أو الحجم ‪ size‬أو ‪ tmp_name‬أو الخطأ ‪ error‬كالتالي‪:‬‬

‫‪$_FILES[“file”][“name”] :‬اسم الملف المرفوع‪.‬‬ ‫•‬

‫‪$_FILES[“file”][“type”] :‬نوع الملف المرفوع‪.‬‬ ‫•‬

‫‪$_FILES[“file”][“size”] :‬حجم الملف المرفوع‬ ‫•‬

‫‪$_FILES[“file”][“tmp_name”] :‬اسم النسخة المؤقتة للملف الذي تم تخزينه في‬ ‫•‬

‫السيرفر‪.‬‬
‫‪$_FILES[“file”][“error”] :‬نتيجة الخطأ اذا كان هناك خطأ في الكود أو الملف المرفوع‬ ‫•‬

‫‪.‬‬

‫تعتبر هذه الخطوات أسهل طرقة لرفع ملف ولكن اذا أردت حماية الملفات على السيرفر يجب وضع قيود‬
‫على الرفع‪.‬‬

‫‪58‬‬
‫قيود الرفع‬

‫لقد قمنا بإضافة بعض األكواد لوضع قيود على الرفع أي يمكن فقط للمستخدم رفع ملفات‬
‫بامتداد ‪.gif‬أو ‪.jpg‬و يجب أن يكون الحجم أقل من ‪kbb :20‬‬

‫حفظ الملف المرفوع‬

‫في المثال السابق تم رفع نسخة مؤقتة للملفات المرفوعة في ملف ‪ PHP temp‬على السيرفر‪.‬‬

‫تختفي الملفات المؤقتة بعد انتهاء الكود و لحفظ ملفاتك المرفوعة يجب اختيار مكان آخر للملفات على‬
‫السيرفر‪:‬‬

‫‪59‬‬
‫يفحص الكود السابق الملف اذا كان موجودًا من قبل واذا لم يكن موجوداً عندها سيتم نسخ الملف الى‬
‫المجلد المخصص‪.‬‬

‫مالحظة ‪ :‬يتم حفظ الملف في المثال السابق في المجلد‪“upload” .‬‬

‫‪60‬‬
‫‪ Cookies‬الكوكيز‬

‫يستخدم الكوكيز عادة لتحديد هوية المستخدم ‪.‬‬

‫ماهو الكوكيز ؟‬

‫يستخدم الكوكيز عادة لتحديد هوية المستخدم ‪ .‬ان الكوكي ‪ cookie‬عبارة عن ملف صغير يتم ارساله‬
‫من خالل السيرفر الى حاسوب المستخدم ‪ .‬و في كل مرة يتم طلب الصفحة من خالل المتصفح سيتم‬
‫ارسال ملف الكوكي ايضاً ‪ .‬يمكنك إنشاء و استرجاع ملفات و قيم الكوكي ‪.‬‬

‫كيف يمكن إنشاء ‪ cookie‬؟‬

‫يستخدم الكود الوظيفي )(‪ setcookie‬إلنشاء كوكي ‪.‬‬

‫مالحظة ‪ :‬يجب وضع كود )(‪ setcookie‬قبل وسم <‪. >html‬‬

‫التركيبة‬

‫مثال ‪1‬‬

‫في المثال التالي سيتم إنشاء ‪ cookie‬اسمه ‪ user‬والقيمة هي ‪ Ahmad .‬كما سيتم تحديد انتهاء‬
‫‪cookie‬بعد ساعة‪:‬‬

‫‪61‬‬
‫مالحظة ‪ :‬يتم ترميز قيمة ‪ cookie‬تلقائياً عند ارسال ‪ cookie‬كما يتم ترميزه تلقائياً عند استرجاعه‬
‫ولتجنب ترميز الروابط ‪ URL‬يمكنك استخدام )(‪setrawcookie‬عوضاً عنها‪.‬‬

‫مثال ‪2‬‬

‫يمكنك تحديد وقت انتهاء ‪ cookie‬بطريقة أخرى أيضاً ‪ .‬كما يمكن أن تكون أسهل عند استخدام‬
‫الثواني‪:‬‬

‫في المثال السابق تم تحديد انتهاء وقت الملف لشهر ( ‪ 60‬ثا ‪ 60 ,‬د ‪ 24 ,‬سا ‪ 30 ,‬يوم )‪.‬‬

‫‪62‬‬
‫كيفية استرجاع قيمة ‪ Cookie‬؟‬

‫يمكن استخدام المتغير ‪$_COOKIE‬السترجاع قيمة‪cookie .‬‬

‫في المثال التالي تم استرجاع قيمة ‪ cookie‬المسماة ‪ user‬وعرضها في الصفحة‪:‬‬

‫تم استخدام )(‪isset‬في المثال التالي لمعرفة فيما اذا تم ضبط ‪ cookie‬أم ال‪:‬‬

‫كيف تحذف ‪ Cookie‬؟‬

‫‪63‬‬
‫عند حذف ‪ cookie‬ينبغي التأكد بأن تاريخ االنتهاء هو في الماضي‪.‬‬

‫مثال عن حذف كوكي‪cookie‬‬

‫ماذا لو كان المتصفح ال يدعم ‪ 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‬‬

‫قبل إمكانية تخزين معلومات المستخدم على في جلسة ‪ PHP session‬عندها يجب البدء أوالً بالجلسة‬
‫‪. session‬‬

‫مالحظة ‪ :‬يجب أن تظهر )(‪ session_start‬قبل وسم <‪: >html‬‬

‫سيتم تسجيل المتستخدم من خالل الكود السابق مع السيرفر كما سمح لك ببدء حفظ معلومات‬
‫المستخدم وتثبيت االي دي الفريد ‪ UID‬لتلك جلسة المستخدم‪.‬‬

‫‪66‬‬
‫تخزين متغيرات الجلسات‪Session‬‬

‫أفضل طريقة لتخزين المعلومات واستردادها هو المتغير المعرّف مسبقاً من ‪ PHP‬وهو‪$_SESSION :‬‬

‫ستظهر النتيجة على المتصفح‬

‫في المثال التالي قمنا بإنشاء عدّاد بسيط إلحصاء عدد مشاهدة الصفحة ‪ .‬يقوم )(‪isset‬بفحص فيما اذا‬
‫كانت المشاهدات تم مشاهدتها بالفعل واذا تمت المشاهدة من قبل سيتم زيادة رقم عدد الزيارات ‪.‬‬
‫اذا لم يوجد سيتم إنشاء متغير و سيتم ضبطه الى ‪: 1‬‬

‫‪67‬‬
‫حذف‪session‬‬

‫استخدام )(‪unset‬أو‬ ‫يمكنك‬ ‫‪session‬‬ ‫الجلسة‬ ‫في‬ ‫البيانات‬ ‫بعض‬ ‫حذف‬ ‫أردت‬ ‫إن‬
‫استخدام ‪session_destroy() .‬‬

‫تستخدم )(‪unset‬لتحرير جزء معين من متغير الجلسة‪:‬‬

‫كما يمكنك أيضاً حذف الجلسة ‪ session‬بشكل كامل من خالل استدعاء‪session_destroy() :‬‬

‫‪68‬‬
‫سيتم حذف جميع البيانات عند استخدام )(‪session_destroy‬كما سيتم حذف جميع معلومات‬
‫المستخدمين المخزنة فيها‪.‬‬

‫إرسال البريد االلكتروني‬

‫تسمح ‪ PHP‬بإرسال بريد الكتروني مباشرة من خالل كود معين ‪.‬‬

‫‪mail() function PHP‬‬

‫تستخدم الوظيفة )(‪ mail‬الرسال البريد االلكتروني من داخل السكربت ‪.‬‬

‫التركيبة‬

‫‪69‬‬
‫إنشاء بريد الكتروني بسيط‬

‫أبسط طريقة إلنشاء و ارسال بريد باستخدام ‪ PHP‬هو ارسال بريد نصي‪.‬‬

‫في المثال التالي سيتم أوالً إنشاء متغيرات وهي )‪($to, $subject, $message, $from, $headers‬‬
‫ثم نستخدم المتغيرات في ‪mail() functionn‬الرسال بريد الكتروني‪:‬‬

‫‪70‬‬
‫نموذج البريد‬

‫باستخدام ‪ PHP‬يمكنك انشاء نموذج الرسال بريد الكتروني في موقعك ‪ .‬سنقوم بارسال رسالة نصية‬
‫في المثال التالي لبريد الكتروني محدد‪:‬‬

‫كيف يعمل كود المثال السابق‪:‬‬

‫أوالً ‪ ,‬فحص فما اذا تم تعبئة حقول مدخالت البريد‪.‬‬ ‫•‬

‫‪71‬‬
‫اذا لم يتم ذلك مثل اذا كانت اول زيارة للصفحة عندها سيتم إظهار نموذج‪HTML .‬‬ ‫•‬

‫و ان تم تعبئة النموذج سيتم ارسال البريد من النموذج‪.‬‬ ‫•‬

‫عند الضغط على زر ارسال بعد تعبئة النموذج سيتم اعادة تحميل الصفحة وسيتم فحص فيما‬ ‫•‬

‫اذا تم ذبط مدخالت النموذج ثم سيتم ارسال البريد‪.‬‬

‫مالحظة ‪ :‬هذه اسهل طريقة الرسال بريد الكتروني و لكنه غير آمن وفي الدرس القادم سيتم شرح‬
‫كيفية انشاء بريد الكتروني محمي مع الكثير من السكربتات‪.‬‬

‫مراجع البريد في‪PHP‬‬

‫لمزيد من المعلومات حول كيفية إنشاء بريد بسيط او محمي او )(‪mail‬يمكنك زيارة مراجع بريد ‪PHP‬‬

‫البريد االلكتروني المحمي‬

‫هناك نقطة ضعف في انشاء البريد االلكتروني لكن سيتم حل هذه المشكلة في هذا الدرس ‪.‬‬

‫إنشاء البريد االلكتروني المحمي‬

‫أوالً الحظ الكود من خالل الدرس السابق ‪:‬‬

‫‪72‬‬
‫المشكلة في الكود السابق هو أن أي مستخدم غير مرخص له يمكنه ادخال البيانات الى البريد من خالل‬
‫نماذج االدخال‪.‬‬

‫ماذا يحصل لو أن المستخدم أدخل النصوص التالية الى حقول مدخالت النماذج ؟‬

‫يضع الكود )(‪mail‬النص السابق الى مدخالت النموذج بأنه نص طبيعي و ترويسة النموذج لديها حقول‬
‫‪73‬‬
‫‪Cc‬و ‪ Bcc‬و ‪ Too .‬عند الضغط على زر االرسال عندها سيتم ارسال البريد الى جميع العناوين التي تم‬
‫وضعها في النص السابق‪.‬‬

‫إيقاف ادخال البريد االلكتروني‬

‫أفضل طريقة اليقاف ادخال البريد االلكتروني هي تفعيل المدخالت‪.‬‬

‫يعتبر الكود نفسه في الدرس السابق ولكن قمنا بإضافة مفعّل للمدخالت و التي بدورها تفحص مدخالت‬
‫حقول البريد‪:‬‬

‫‪74‬‬
75
‫في المثال السابق قمنا باستخدام فلتر ‪ PHP‬لتفعيل الحقول‪:‬‬

‫يمسح الفلتر ‪ FILTER_SANITIZE_EMAIL‬جميع أحرف البريد الغير شرعية من النصوص‬ ‫•‬

‫‪.‬‬
‫يغعّل الفلتر ‪ FILTER_VALIDATE_EMAIL‬القيمة مثل عنوان بريد الكتروني‪.‬‬ ‫•‬

‫يمكنك قراءة المزيد عن الفالتر من خالل درس فالتر‪PHP .‬‬

‫معالجة األخطاء‬

‫معالجة األخطاء االفتراضي في ‪ PHP‬بسيط جداً ‪ .‬يتم ارسال رسالة الخطأ بإسم الملف أو رقم السطر أو‬
‫شرح الخطأ في رسالة الى المتصفح ‪.‬‬

‫معالجة األخطاء‬

‫تعتبر معالجة األخطاء مهمة جداً عند إنشاء تطبيقات و سكربتات على االنترنت ‪ .‬سيبدو برنامجط غير‬
‫احترافي وربما يمكن أن يكون معرض للمخاطر األمنية اذا كان الكود لديك ينقصه فحص األخطاء ‪.‬‬

‫يحتوي الدورة لدينا على بعض طرق فواص األخطاء السائدة في لغة ‪. PHP‬‬

‫سنقوم بعرض طرق مختلفة لمعالجة األخطاء ‪:‬‬

‫رسالة بسيطة من خالل )(‪. die‬‬ ‫•‬

‫إحداث رسائل أخطاء تقليدية ‪.‬‬ ‫•‬

‫تقاير األخطاء ‪.‬‬ ‫•‬

‫‪76‬‬
‫معالج األخطاء البسيط )(‪die‬‬

‫يظهر المثال التالي كود بسيط حيث يفتح ملف نصي ‪:‬‬

‫‪:‬‬ ‫اذا لم يتم إيجاد الملف سيتم إظهار رسالة خطئ‬

‫لتجنب رسالة الخطأ مثل المثال السابق سيتم فحص فيما اذا كان الملف موجود قبل المحاولة بالدخول‬
‫اليه‪:‬‬

‫‪:‬‬ ‫ان لم يتم ايجاد النص ستظهر هذه الرسالة على المتصفح‬

‫‪77‬‬
‫إنشاء معالج أخطاء‬

‫ان إنشاء معالج األخطاء بسيط جداً ‪ .‬ببساطة يمكن إنشاء كود وظيفي خاص يمكن استدعائه عند حدوث‬
‫الخطأ في‪PHP .‬‬

‫يجب أن يكون معالج األخطاء ويجب أن يحمل قيمتين على األقل ( مستوى الخطأ و رسالة الخطأ ) ولكن‬
‫يمكن قبول خمسة قيم ( اختياري ‪ :‬الملف ‪ ,‬رقم السطر ‪ ,‬محتوى الخطأ )‪.‬‬

‫التركيبة‬

‫‪78‬‬
‫مستويات تقارير الخطأ‬

‫تحتوي مستويات تقارير االخطاء على أنواع مختلفة والتي تعالج األخطاء التي يمكن أن تستخدم ألجل‬
‫مايلي‪:‬‬

‫‪:‬‬ ‫اآلن سنقوم بإنشاء ‪ function‬حيث يعالج األخطاء‬

‫‪79‬‬
‫يعتبر الكود في المثال السابق بسيط جداً ‪ .‬عندما يتم التعيين سيتم معرفة مستوى الخطأ و رسالة‬
‫الخطأ ‪ .‬ثم سيتم إظهار رسالة الخطأ و مستوى الخطأ ثم حذف السكربت‪.‬‬

‫و اآلن وبعد إنشاء معالج لألخطاء سنحتاج الى معرفة أن سظهر بلضبط‪.‬‬

‫ضبط معالج األخطاء‬

‫يمكن معالجة األخطاء من خالل استخدام معالج األخطاء في ‪ PHP .‬سنقوم بإنشاء ‪ function‬فوق‬
‫معالج األخطاء االفتراضي لمدة السكربت‪.‬‬

‫يمكن تغيير معالج األخطاء من أجل تطبيق بعض التغيرات الخاصة باألخطاء البسيطة و بتلك الطريقة‬
‫يمكن معالجة أخطاء مختلفة بطرق مختلفة ‪ .‬على أي حال في هذا المثال سنقوم باستخدام معالج‬
‫األخطاء لجميع أنواع األخطاء‪:‬‬

‫يمكن )(‪set_error_handler‬أن يتحكم بجميع األخطاء و فقط حتاج قيمة واحدة و ان أردت اضافة‬
‫قيمة أخرى فهي تحديد مستوى الخطأ‪.‬‬

‫مثال‬

‫‪80‬‬
‫اختبار معالجة األخطاء من خالل المحاولة بإظهار متغير غير موجود أصالً‪:‬‬

‫ستكون النتيجة على المتصفح كالتالي‪:‬‬

‫إستكشاف األخطاء‬

‫يمكن استخدام استكشاف األخطاء عند حدوث ادخال غير شرعي وذلك سيتم حدوثه من‬
‫خالل )(‪trigger_error‬وذلك في السكربت حيث يمكن للمستخدمين وضع بياناتهم‪.‬‬

‫مثال‬

‫في المثال التالي سيتم حدوث الخطأ اذا كان المتغير ‪ test‬أكبر من ‪:1‬‬

‫‪81‬‬
‫ستكون النتيجة على المتصفح كالتالي ‪:‬‬

‫يمكن اظهار الخطأ في أي مكان في السكربت و ذلك بإضافة قيمة أخرى كما يمكنك تحديد مستوى‬
‫الخطأ الذي سيظهر‪.‬‬

‫أنواع األخطاء المحتملة‪:‬‬


‫‪E_USER_ERROR :‬خطأ مروع يحدث عند خطأ يحدثه المستخدم و هذا الخطأ اليمكن‬ ‫•‬

‫تغطيته ‪ .‬يكون انجاز السكربت متوقف‪.‬‬


‫‪E_USER_WARNING :‬خطأ غير مروع يتم التحذير فيه و يكون إنجاز السكربت غير‬ ‫•‬

‫متوقف‪.‬‬
‫‪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‬لفلترة و جعل البيانات شرعية التي تأتي من جهات غير محمية مثل‬
‫مدخالت المستخدم ‪.‬‬

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

‫تم تصميم زيادات فالتر ‪ PHP‬لجعل فلترة البيانات أسهل وأسرع ‪.‬‬

‫لماذا نستخدم الفالتر ؟‬

‫غالباً تعتمد جميع تطبيقات االنترنت على مدخالت خارجية و ذلك يأتي من مستخدم أو من خالل تطبيق‬
‫آخر ( مثل خدمات الويب ) و باستخدام الفلترة يمكنك أن تكون واثقاً بأن تطبيقك حصل على نوع المدخل‬
‫الصحيح ‪.‬‬

‫يجب دائماً استخدام الفلترة للبيانات الخارجية‬

‫تعتبر فلترة المدخالت واحدة من أهم القضايا األمنية المهمة للتطبيقات ‪.‬‬

‫ماهي البيانات الخارجية ؟‬

‫البيانات المدخلة من خالل النماذج ‪.‬‬ ‫•‬

‫الكوكيز ‪. cookies‬‬ ‫•‬

‫‪85‬‬
‫بيانات الويب الخدمية ‪.‬‬ ‫•‬

‫نتائج أوامر قواعد البيانات ‪.‬‬ ‫•‬

‫الوظائف و الفالتر‬

‫لفلترة أو تصفية متغير يمكن استخدام احدى هذه األكواد الوظيفية ‪:‬‬

‫)(‪ : filter_var‬فلترة متغير واحد مع فلتر محدد ‪.‬‬ ‫•‬

‫)(‪ : filter_var_array‬فلترة متغيرات متعددة مع فلترات متشابهة أو مختلفة ‪.‬‬ ‫•‬

‫‪ : filter_input‬الحصول على متغير لمدخل واحد و فلترته ‪.‬‬ ‫•‬

‫‪ : filter_input_array‬الحصول على متغيرات لمدخالت متعددة و فلترتهم مع فلترات‬ ‫•‬

‫مختلفة او متشابهة ‪.‬‬

‫في المثال التالي سنقوم بتفعيل رقم باستخدام الوظيفة )(‪: filter_var‬‬

‫تم استخدام الفلتر ‪ FILTER_VALIDATE_INT‬لفلترة متغير ‪ .‬بما أن الرقم فعال سيتم إظهار نتيجة‬
‫الكود‪“Integer is valid” .‬‬

‫لو كان المتغير ليس رقماً ( مثل “‪abc” ) 123‬سيتم إظهار نتيجة الكود‪“Integer is not valid” .‬‬

‫للحصول على قائمة كاملة للوظائف و الفالتر يمكنك زيارة مرجع فالتر‪PHP .‬‬

‫‪86‬‬
‫التفعيل ‪ Validating‬و التعقيم‪Sanitizing‬‬

‫هناك نوعين من الفلترة‪:‬‬

‫تفعيل الفالتر‪:‬‬
‫تستخدم لتفعيل مدخل مستخدم‪.‬‬ ‫•‬

‫تثبيت القواعد ( مثل تفعيل ‪ URL‬أو‪Email ) .‬‬ ‫•‬

‫إعادة األنواع المتوقعة من النجاج أو الفشل‪.‬‬ ‫•‬

‫تعقيم الفالتر‪:‬‬
‫تستخدم للمساح أو عدم السماح بحرف معين في النص‪.‬‬ ‫•‬

‫اليوجد قواعد معينة للبيانات‪.‬‬ ‫•‬

‫دائماً تعيد نص‪.‬‬ ‫•‬

‫الخيارات و الرايات‬

‫تستخدم الخيارات والرايات إلضافة فلترة اضافية الى فلتر معين‪.‬‬

‫تختلف الخيارات والرايات مع اختالف الفالتر‪.‬‬

‫في المثال التالي قمنا بتفعيل رقم معين ‪ integer‬باستخدام )(‪filter_var‬باالضافة الى خيارات‬
‫‪min_range‬و‪max_rangee :‬‬

‫‪87‬‬
‫للحصول على قائمة كاملة للوظائف و الفالتر يمكنك زيارة مرجع فالتر ‪ PHP .‬يمكنك فحص كل فلتر‬
‫لمشاهدة الخيارات و الرايات المتوفرة‪.‬‬

‫المدخالت المفعلة‬

‫دعنا نقوم بتفعيل مدخل للنموذج‪.‬‬

‫أول شيء يجب أن نقوم فيه هو تأكيد بأن بيانات االدخال التي نبحث عنها موجودة ‪ .‬ثم نقوم بفلترة‬
‫البيانات المدخلة باستخدام الوظيفة ‪filter_input() .‬‬

‫في المثال التالي سيتم ارسال مدخل المتغير ”‪ “email‬الى صفحة‪PHP :‬‬

‫‪88‬‬
‫شرح المثال‬

‫يحتوي المثال السابق على مدخل تم ارساله الى باستخدام طريقة‪GET :‬‬

‫‪ .1‬سيفحص فيما اذا مدخل البريد ‪ email‬فعال و موجود باستخدام النوع‪GET .‬‬
‫‪ .2‬اذا كان المتغير موجود سيتم فحص فعالية البريد االلكتروني‪.‬‬

‫تعقيم المدخالت‬

‫دعونا نقوم بتنظيف الرابط ‪ URL‬المرسل من النموذج‪.‬‬

‫أوالً يجب التأكيد على أن البيانات المدخلة التي نبحث عنها موجودة ‪ .‬ثم نقوم بتعقيم البيانات المدخلة‬
‫من خالل استخدام الوظيفة )(‪filter_input‬‬

‫في المثال التالي سيتم ارسال مدخل المتغير ‪ url‬الى صفحة‪PHP :‬‬

‫‪89‬‬
‫شرح المثال‬

‫يحتوي المثال السابق على مدخل ‪ url‬تم ارساله الى باستخدام طريقة‪POST :‬‬

‫‪ .1‬سيفحص فيما اذا مدخل ‪ url‬فعال و موجود باستخدام النوع‪POST .‬‬


‫‪ .2‬اذا كان المتغير موجود سيتم تعقيم ( حذف األحرف الغير فعالة ) و حفظها في‬
‫المتغير ‪$url .‬‬

‫اذا كان مدخالت المتغير نص عادي مثل ‪ 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‬للمدخالت الغير‬
‫فعالة‪.‬‬

‫يمكن أن يكون القيمة الثانية في الوظيفة )(‪filter_input_array‬مصفوفة أو فلتر ‪ IDD‬واحد‪.‬‬

‫اذا كان المتغير فلتر ‪ id‬واحد عندها سيتم فلترة جميع المتغيرات في مصفوفة مدخالت من خالل فلتر‬
‫محدد‪.‬‬

‫اذا كان المتغير مصفوفة عندها يجب اتبّاع التعليمات التالية‪:‬‬


‫يجب أن يكون مرفق بمصفوفة تحتوي على متغير مدخل مثل وسم المصفوفة‪.‬‬ ‫•‬

‫قيمة المصفوفة يجب أن تكون مفلترة ‪ id‬او مصفوفة تحدد فلتر او راية او خيار‪.‬‬ ‫•‬

‫استدعاء الفلتر‬

‫يمكنك استدعاء وظيفة معرفة من خالل المستخدم و استخدامه كفلتر باستخدام ميزة‬
‫‪FILTER_CALLBACK .‬و بهذه الطريقة لديك تحكم كامل بفلترة البيانات‪.‬‬

‫يمكنك إنشاء وظفة خاصة للمستخدم او استخدام وظائف ‪ PHP‬الحالية‪.‬‬

‫الوظيفة التي ترغب باستخدامها لفلترتها محددة بنفس الطريقة كخيار مخصص‪.‬‬

‫في المثال التالي سيتم إنشاء وظيفة تقوم بتحويل جميع “_” الى فراغات‪:‬‬

‫‪92‬‬
‫ستظهر النتيجة على المتصفح كالتالي ‪:‬‬

‫شرح المثال‬

‫في المثال التالي سيتم إنشاء وظيفة تقوم بتحويل جميع “_” الى فراغات‪:‬‬

‫إنشاء ‪ function‬الستبدال “_” الى فراغات‪.‬‬ ‫•‬

‫استدعاء )(‪filter_var‬مع الفلتر ‪ FILTER_CALLBACK‬و مصفوفة تحتوي على‬ ‫•‬

‫‪functionn .‬‬

‫‪93‬‬
‫استخدام ‪ PHP‬مع‪MySQL‬‬

‫مقدمة‪MySQL‬‬

‫تعتبر لغة ‪ MySQL‬أشهر نظام قواعد بيانات مفتوح المصدر ‪.‬‬

‫ماهي لغة ‪ MySQL‬؟‬

‫ان ‪ MySQL‬لغة خاصة بقواعد البيانات ‪.‬‬

‫تخزن البيانات في ‪ MySQL‬في كائنات قواعد بيانات تسمى جداول ‪.‬‬

‫ان الجدول هو عبارة عن مجموعة من البيانات المدخلة و المتصلة كما يتألف الجدول من أعمدة و صفوف‬
‫‪.‬‬

‫تعتبر قواعد البيانات مفيدة جداً عند تخزين المعلومات بشكل تصنيفي أي عند استخدام شركة لقواعد‬
‫البيانات يمكن أن تستخدم الجداول التالية ‪:‬‬

‫“‪ ”Employees‬و “‪ ”Products‬و “‪ ”Customers‬و “‪. ”Orders‬‬

‫جداول قواعد البيانات‬

‫تحتوي غالباً قواعد البيانات على جدول او أكثر يتم تعريف كل جدول باسم مثل (‪ Customers‬أو‬
‫‪ . ) Orders‬كما يحتوي الجدول على صفوف تمسى ‪ rows‬أو ‪ records‬باالضافة الى البيانات ‪.‬‬

‫في المثال التالي جدول يسمى ‪. Persons‬‬

‫‪94‬‬
‫يحتوي الجدول السابق على ‪ 4‬أعمدة و ‪ 3‬صفوف لكل شخص صف يتألف من االسم و الكنية و العنوان و‬
‫الدولة‪.‬‬

‫األوامر‪Queries‬‬

‫األوامر هي عبارة عن طلبات أو أسئلة‪.‬‬

‫باستخدام ‪ MySQL‬يمكن تقديم أوامر لقواعد البيانات معلومات معينة والتي تحتوي على امكانية‬
‫تقديم النتائج من خالل الصفوف أو األعمدة‪.‬‬

‫الحظ األمر التالي‪:‬‬

‫‪95‬‬
‫يختار األمر السابق جميع البيانات الموجودة في عمود الكنية ‪ LastName‬من الجدول المسمى‬
‫‪Persons‬ثم سيقوم بإعادة النتيجة كالتالي ‪:‬‬

‫تحميل قواعد البيانات‪MySQL‬‬

‫اذا لم يكن لديك تطبيق يحتوي على ‪ PHP‬مع قواعد البيانات ‪ MySQL‬يمكنك تحميلها من موقعها‬
‫الرسمي من خالل الرابط التالي‪: http://www.mysql.com/downloads/‬‬

‫حقائق حول قواعد البيانات‪MySQL‬‬

‫أحد الحقائق المذهلة عن ‪ MySQL‬أنها تقوم بتخزين البيانات الضمنية الموجودة في التطبيقات و هذه‬
‫الحقيقة مذهلة بسبب أم معظم الناس تعتقد أن ‪ MySQL‬تستخدم فقط مع التطبيقات التي تخزن‬
‫بيانات صغيرة أو متوسطة‪.‬‬

‫لكن الحقيقة بأن ‪ MySQL‬تستخدم مع قواعد بيانات مع مواقع االنترنت التي تستخدم لتخزين هائل‬
‫للبيانات و المستخدمين مثل ‪Friendster‬و ‪Yahoo‬و‪Google .‬‬

‫لمشاهدة الشركات التي تستخدم ‪ MySQL‬لقواعد البيانات من خالل الرابط التالي‪:‬‬


‫‪http://www.mysql.com/customers/‬‬

‫‪ MySQL‬االتصال مع قاعدة البيانات‬

‫تستخدم عادة ‪ MySQL‬مع لغة ‪. PHP‬‬

‫‪96‬‬
‫إنشاء اتصال لقاعدة البيانات ‪MySQL‬‬

‫قبل الوصول الى البيانات في قاعدة البيانات يجب إنشاء اتصال مع قاعدة البيانات ‪.‬‬

‫باستخدام لغة ‪ PHP‬يمكن انشاء اتصال مع قاعدة البيانات من خالل الوظيفة)(‪. mysql_connect‬‬

‫التركيبة‬

‫مالحظة ‪ :‬هناك الكثير من القيم المستخدمة مع قواعد البيانات ولكن في الجدول أهمها فقط لكن‬
‫لمزيد من المعلومات يمكنك زيارة مراجع‪PHP MySQL .‬‬

‫‪97‬‬
‫مثال‬

‫في المثال التالي سنقوم بتخزين االتصال مع قاعدة البيانات من خالل المتغير ‪$con‬من أجل استخدامات‬
‫الحقة في السكربت باالضافى الى استخدام )(‪die‬من أجل معرفة نوع الخطأ مع قواعد البيانات في حال‬
‫فشل االتصال‪:‬‬

‫إنهاء االتصال‬

‫سيتم اغالق االتصال بشكل تلقائي عند انتهاء السكربت لكن اذا أردت انهاء االتصال يمكن استخدام‬
‫الوظيفة ‪mysql_close() :‬‬

‫‪98‬‬
‫إنشاء قاعدة بيانات و الجداول‬

‫تحتوي قاعدة البيانات على جدول أو اكثر ‪.‬‬

‫إنشاء قاعدة بيانات‬

‫يمكن إنشاء قاعدة بيانات من خالل التعبير ‪. CREATE DATABASE‬‬

‫التركيبة‬

‫الستخدام التعبير يمكن استخدام الوظيفة )(‪mysql_query‬و بهذه الوظيفة يمكن استخدام‬
‫الرسال األوامر الى االتصال مع‪MySQL .‬‬

‫مثال‬

‫في المثال التالي سنقوم بإنشاء قاعدة بيانات تسمى ‪my_db‬‬

‫‪99‬‬
‫إنشاء جدول‬

‫يمكن إنشاء قاعدة بيانات من خالل التعبير ‪CREATE TABLE .‬‬

‫التركيبة‬

‫إلنشاء األمر يجب اضافة التعبير ‪ CREATE TABLE‬الى الوظيفة‪mysql_query() .‬‬

‫‪100‬‬
‫مثال‬

‫في المثال التالي سيتم إنشاء جدول مسمى ‪ Persons‬مع ثالثة أعمدة ‪ .‬ستكون أسماء األعمدة كالتالي‬
‫‪FirstName‬و ‪ LastName‬و‪Age :‬‬

‫‪101‬‬
‫مالحظة هامة‪:‬‬

‫يجب اختيار قاعدة البيانات قبل إنشاء الجدول حيث يمكن اختيار قاعدة البيانات من خالل‬ ‫•‬

‫الوظيفة‪mysql_select_db() .‬‬
‫عند إنشاء حقل قاعدة بيانات بنوع ‪ varchar ,‬يجب تحديد الحد األقصى للطول في الحقل‬ ‫•‬

‫مثل ‪varchar(15) .‬‬


‫تحدد نوع البيانات نوع العمود الذي سيقوم بحمل البيانات فيها‪.‬‬ ‫•‬

‫الحقول ‪ Primary Keys‬و‪Auto Increment‬‬

‫يجب أن يحتوي كل حقل على وسم أساسي‪Primary Keys .‬‬

‫يستخدم ‪ primary key‬لتحديد فريد ومميز للصفوف في الجدول ‪ .‬يجب أن يكون ‪ primary key‬فريد‬
‫ضمن الجدول باالضافة بأن ‪ primary key‬اليجب أن يكون فارغ ‪ null‬ألن محرك قاعدة البيانات يحتاج‬
‫الى قيمة لتحديد مكان الصف في الجدول‪.‬‬

‫في المثال التالي سيتم تحديد حقل لعنوان ‪ id‬للجدول ‪ personID‬مثل حقل ‪ primary key .‬غالباً‬
‫مايكون ‪ primary key‬يحتوي على رقم ‪ ID‬و غالباً مايكون مع ‪ AUTO_INCREMENT .‬تزيد‬
‫‪AUTO_INCREMENT‬تلقائياً قيمة الحقل برقم واحد في كل مرة يزيد عدد الصفوف ‪ .‬وذلك للتأكد‬
‫بأن ‪ primary key‬ليس فارغاً ‪ null‬يجب تحديد ضبط بأن القيمة غير فارغة‪NOT NULL .‬‬

‫مثال‬

‫‪102‬‬
‫إدراج قيمة الى قاعدة البيانات‬

‫تستخدم ‪ INSERT INTO‬إلدراج صف جديد في الجدول ‪.‬‬

‫ادراج بيانات الى جدول قاعدة البيانات‬

‫تستخدم ‪ INSERT INTO‬إلدراج صف جديد في الجدول ‪.‬‬

‫التركيبة‬

‫من الممكن كتابة التعبير ‪ INSERT INTO‬من خالل طريقتين ‪.‬‬

‫اليحدد الشكل األول اسماء األعمدة حيث سيتم ادراج البيانات فقط قيمهم ‪:‬‬

‫‪:‬‬ ‫يحدد الشكل الثاني كالً من اسماء األعمدة و قيمهم التي سيتم ادراجها‬

‫‪103‬‬
‫الستخدام التعابير السابقة بشكل جيد يمكن استخدام الوظيفة )(‪mysql_query‬حيث سيتم ارسال‬
‫األوامر و الطلبات الى االتصال الخاص مع‪MySQLL .‬‬

‫مثال‬

‫في الدرس السابق قمنا بإنشاء جدول باسم ‪ Persons‬مع ثالثة أعمدة ‪ Firstname‬و ‪ Lastname‬و‬
‫‪Age‬كما سنقوم باستخدام نفس الجدول في هذا المثال ‪ .‬يضيف المثال التالي صف جديد للجدول‬
‫‪Persons :‬‬

‫ادراج بيانات من نموذج الى قاعدة البيانات‬

‫اآلن سنقوم بإنشاء نموذج ‪ HTML‬والذي بدوره سيقوم بإضافة صف جديد للجدول‪Persons .‬‬

‫هنا كود نموذج‪HTML :‬‬

‫‪104‬‬
‫عند ضغط المستخدم على زر االرسال في نموذج ‪ HTML‬سيتم ارسال المعلومات الى الملف ‪insert.php‬‬
‫‪.‬‬

‫يقوم الملف ‪ insert.php‬باالتصال بقاعدة البيانات ثم يحوّل المعلومات المسجلة في النموذج الى‬
‫متغيرات ‪$_POST .‬‬

‫ثم يرسل )(‪mysql_query‬أمراً الى ‪ INSERT INTO‬ليتم ادراج صف جديد الى جدول‪Personss .‬‬

‫هناالكود الموجود في صفحة ‪insert.php :‬‬

‫‪105‬‬
‫‪ SELECT‬االختيار‬

‫يستخدم التعبير ‪ SELECT‬الختيار البيانات من قاعدة البيانات‬

‫اختيار البيانات من جدول قاعدة البيانات‬

‫يستخدم التعبير ‪ SELECT‬الختيار البيانات من قاعدة البيانات ‪.‬‬

‫‪106‬‬
‫التركيبة‬

‫الستخدام التعبير يمكن استخدام الوظيفة )(‪ mysql_query‬و بهذه الوظيفة يمكن استخدام الرسال‬
‫األوامر الى االتصال مع‪MySQLL .‬‬

‫مثال‬

‫يختار المثال التالي جميع البيانات المخزنة في جدول ‪ Persons‬تستخدم االشارة * الختيار جميع البيانات‬
‫الموجودة في الجدول‪:‬‬

‫‪107‬‬
‫يخزن المثال السابق البيانات العائدة من خالل الوظيفة )(‪mysql_query‬في المتغير ‪$result .‬ثم‬
‫سنقوم باستخدام )(‪mysql_fetch_array‬السترجاع الصف الثاني من صفوف الجدول ‪ .‬أما الحلقة‬
‫‪whilee‬فإنها ستدور حول جميع الصفوف في جدول البيانات وتقدم النتيجة‪.‬‬

‫لعرض النتيجة لجميع الصفوف يمكن استخدام متغير ‪$row‬كالتالي‪:‬‬

‫ستظهر النتيجة كالتالي‪:‬‬


‫‪Mutaz Hakmi‬‬
‫‪Abdo Mando‬‬
‫‪Abdo Fajr‬‬

‫‪108‬‬
‫عرض النتيجة في جدول‪HTML‬‬

‫يختار المثال التالي نفس البيانات في المثال السابق لكن سيتم عرض البيانات في جدول ‪ HTML‬كالتالي‬
‫‪:‬‬

‫‪ Where‬استخدام‬

‫تستخدم العبارة ‪ WHERE‬لفلترة الصفوف في جداول قاعدة البيانات ‪.‬‬

‫‪109‬‬
‫عبارة ‪WHERE‬‬

‫تستخدم عبارة ‪ WHERE‬لتحديد صف معين في جدول قاعدة البيانات ‪.‬‬

‫التركيبة‬

‫و هي تستخدم الرسال )(‪mysql_query‬الستخدام التعبير السابق يمكن استخدام ‪ PHP‬إلنشاء كود‬


‫‪ MySQLL .‬األوامر أو الطلبات الى اتصال‬

‫مثال‪:‬‬
‫يختار المثال التالي جميع الصفوف من الجدول ‪ Persons‬حيث ‪ WHERE‬االسم‪Mutaz‬‬

‫‪110‬‬
‫ستظهر النتيجة على المتصفح كالتالي‪:‬‬

‫الترتيب‪Order By‬‬

‫تستخدم الترتيب ‪ ORDER BY‬لترتيب البيانات المعروضة من قاعدة البيانات ‪.‬‬

‫الترتيب ‪Order By‬‬

‫تستخدم الترتيب ‪ ORDER BY‬لترتيب البيانات المعروضة من قاعدة البيانات ‪.‬‬

‫عند استخدام ‪ ORDER BY‬يكون الترتيب تصاعدي بشكل تلقائي ولكن ان أردت الترتيب بشكل آخر‬
‫مكن استخدام الكلمة ‪ DESC‬والتي تشكل ترتيب تنازلي ‪.‬‬

‫التركيبة‬

‫‪111‬‬
‫الترتيب من خالل عمودين‬

‫أيضاً من الممكن ترتيب أكثر من عمود ‪ .‬عند استخدام الترتيب من خالل أكثر من عمود فإن العمود‬
‫التاني سيتم استخدامه اذا كانت القيمة األولى متساوية‪:‬‬

‫‪ Update‬تحديث القاعدة‬

‫تستخدم خاصية التحديث ‪ UPDATE‬للتعديل على البيانات في الجدول ‪.‬‬

‫تحديث البيانات في قاعدة البيانات‬

‫تستخدم خاصية التحديث ‪ UPDATE‬للتعديل على البيانات الحالية في الجدول ‪.‬‬

‫‪112‬‬
‫التركيبة‬

‫مالحظة ‪ :‬الحظ بأن التعبير ‪ WHERE‬يحدد أي الصف أو الصفوف الذي ينبغي تحديثه لكن بينما اذا لم‬
‫تستخدم ‪ WHEREE‬عندها سيتم تحديث جميع الصفوف‪.‬‬

‫و هي تستخدم الرسال )(‪mysql_query‬الستخدام التعبير السابق يمكن استخدام ‪ PHP‬إلنشاء كود‬


‫‪ MySQLL .‬األوامر أو الطلبات الى اتصال‬

‫الحذف ‪Delete‬‬

‫يستخدم الحذف ‪ DELETE‬لحذف بيانات في صفوف الجدول ‪.‬‬

‫حذف بيانات من قاعدة البيانات‬

‫يستخدم التعبير ‪ DELETE FROM‬لحذف بيانات من جدول قاعدة البيانات ‪.‬‬

‫‪113‬‬
‫التركيبة‬

‫مالحظة ‪ :‬الحظ بأن التعبير ‪ WHERE‬يستخدم مع تركيبة الحذف ‪ DELETE‬لتحديد معين أي البيانات‬
‫التي سيتم حذفها من الجدول ولكن ان لم تستخدم ‪ WHERE‬سيتك حذف جميع صفوف الجدول‪.‬‬

‫إلنشاء كود ‪ PHP‬الستخدام التعبير السابق يمكن استخدام )(‪mysql_query‬و هي تستخدم الرسال‬
‫األوامر أو الطلبات الى اتصال‪MySQLL .‬‬

‫‪114‬‬

You might also like