بسم الله الرحمن الرحيم
والصلاة والسلام على اشرف الخلق , سيدنا محمد وعلى آله وصحبه آجمعين .
في هذا الموضوع سأحاول التطرق إلى برمجة مواقع الويب باستخدام واجهات CGI ولغة سي ++ .
سأحاول ان افصل الموضوع إلى عدة دروس وسأبتدي بهذا الدرس الأول , على امل ان يستجيب المولى دعائي ويوفقني في هذه الدروس .
1- ماذا احتاج لكي ابدا ؟
تحتاج اولا لتركيب Apache Server ليتم التعامل مع الجهاز على انه سيرفر , ويمكن الحصول عليه من الانترنت ويوجد منه اصدارات مختلفة , وبالنسبة للاصدار الذي اتعامل معه فهو appserv-win32,V:2.5.7
بعد ذلك تحتاج لمعرفة بسيطة في لغة Html والتعامل مع بعض وسومها .
تحتاج ايضا لمعرفة جيدة في لغة سي ++ لكتابة البرامج .
2- كيف انفذ البرنامج ؟
بعد كتابة البرنامج وترجمته نقوم بنسخه ووضعه في مجلد cgi-bin على المسار التالي : AppServ\www\cgi-bin
ونقوم بتحويل امتداد البرنامج من exe إلى cgi وعند التحويل ستظهر لك رسالة تسألك فيما اذا كنت ترغب بالتغيير فعلا , اختر موافق .
3- اعدادات Apache Server
ابدا تنزيل البرنامج واستمر حتى تأتي لك شاشة تطالبك باسم السيرفر , اكتب هنا اسم السيرفر localhost لكي نكمل عليه امثلتنا كما بالصورة .
بعد ذلك ستأتي لك شاشة كلمة المرور لـ MYSQL ادخل اي كلمة ولتكن root
بعد ذلك ستتم عملية تنصيب الاعدادات بنجاح ليكتمل تنزيل Apache Server
********************************************************************************
***
البداية مع برمجة مواقع الويب باستخدام واجهات CGI ولغة سي ++.
1- كتابة برامج CGI
نبدا اولا في تحديد النمط الذي سيتعامل معه المتصفح في معالجة البيانات التي يتلقاها Multipurpose Internet Mail Extensions (MIME)
هناك انماط مختلفة ليتعامل معها المتصفح مثل :
text/html , text/plain,image/gif
يتم تحديد النمط من خلال التعليمة التالية :
Content-type: text/html
والتي نعبر عنها بلغة السي ++ بواسطة الخرج cout كما يلي :
cout << "Content-type: text/html\n\n";
نلاحظ من السطر السابق ان كتابة التعليمات بلغة سي ++ على شكل تعليمات للغات اخرى يتم بواسطة الخرج cout وللتوضيح اكثر لاحظ التالي :
بعد كتابة التعليمة التي تحدد لنا نمط MIME نقوم بكتابة عناصر XML والتي نجدها مكتوبة بشكل افتراضي ببعض المحررات مثل Rapid php
<?xml version = \"1.0\"?>" <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-Strict.dtd">
والان لكي نقوم بكتابة هذه التعليمة داخل برنامجنا بلغة سي ++ نقوم بكتابة التعليمات وكأننا نرغب بطباعتها على الشاشة , ولكن عند تحويل البرنامج إلى cgi بدلا من exe سيتم التعامل معها على انها عناصر XML
cout << "<?xml version = \"1.0\"?>" << "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 " << "Transitional//EN\" \"http://www.w3.org/TR/xhtml1" << "/DTD/xhtml1-transitional.dtd\">";
الان سنقوم بكتابة برنامج بسيط يقوم بطباعة الجملة "Hello World" على الشاشة .
نعلم ان اي مستند html يأخذ الشكل التالي في الكتابة :
<html> <head> <title> </title> </head> <body> </body> </html>
يسمى كل مما سبق وسوم , وسنقوم الان بكتابة برنامجنا البسيط الذي يطبع عبارة Hello World طبعا وفقا لهذه الوسوم , قد تحتاج اخي القارئ إلى التعرف اكثر لوسوم html .
cout << "<html xmlns = \"http://www.w3.org/1999/xhtml\">" << "<head><title>My First Program</title></head>" << "<body><p>" << "Hello World ! " << "</p></body></html>";
الشرح :
يبدا برنامجنا بوسم html وينتهي به , وبعدها قمنا بالتعامل مع الوسم title والذي يقوم بإعطاء تسمية في شريط العنوان العلوي للمتصفح . وقمنا بكتابة الجملة التالية My First Program
الان وداخل الجسم body نقوم بكتابة الجمالة Hello World بين وسوم فقرة paragraph .
ننهي بعدها كل وسم تم فتحه بوسم اغلاق .
ليصبح البرنامج بشكل كامل كما يلي :
int main()
{
cout << "Content-type: text/html\n\n";
cout << "<?xml version = \"1.0\"?>"
<< "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 "
<< "Transitional//EN\" \"http://www.w3.org/TR/xhtml1"
<< "/DTD/xhtml1-transitional.dtd\">";
cout << "<html xmlns = \"http://www.w3.org/1999/xhtml\">"
<< "<head><title>My First Program</title></head>"
<< "<body><p>" << "Hello World ! " << "</p></body></html>";
return 0;
}الان قم بكتابة البرنامج وترجمته , ستلاحظ عند التنفيذ ان ماكتب اعلاه يخرج لنا على شكل عبارات نصية , هذا طبيعي , قم الان بنسخ البرنامج من مجلد Debug إلى المجلد cgi-bin كما اوضحنا سابقا بالمسار AppServ\www\cgi-bin وقم بتغيير امتداده من exe إلى cgi وقم بإعادة تسميته مثلا : first.cgi .
بعدها قم بتنفيذ البرنامج من خلال المتصفح بكتابة الرابط التالي :
http://localhost/cgi-bin/first.cgi
ستفتح لك صفحة مكتوب بها Hello World ولاحظ ايضا التسمية الموجودة في شريط العنوان للمتصفح , إلى هنا نكون قد انتهينا من برنامجنا الاول .
********************************************************************************
*********
دعونا الان نسترسل بالامثلة :
مثال آخر:
سنقوم الان بكتابة برنامج يطبع لنا الجملة التالية : " بسم الله الرحمن الرحيم " بخط اندلوسي ,وبلون احمر وبحجم خط 8.
سنستخدم الوسم <Font> وقد تعاملنا سابقا مع الوسوم في المثال السابق فلا يوجد لدينا مشكلة بها , لكن ماذا لو كان الوسم له مجموعة من الخصائص مثل الوسم font ؟
تختلف الكيفية التي يتم فيها اعطاء القيم للخصائص في سي ++ عن الكيفية التي كنا نعطي فيها القيم بلغة html ,
وفيما يلي مثال بسيط يوضح المسألة :
cout << "<html xmlns = \"http://www.w3.org/1999/xhtml\">" << "<head><title>My First Program</title></head>" << "<body><font face=\"Andalus\" color=\"Red\" size=\"+8\"><p>" <<"بسم الله الرحمن الرحيم" << "</p></font></body></html>";
********************************************************************************
****
إلى هنا اكون قد انتهيت من درسي الاول , وسأكمل الباقي في الدرس القادم بإذن الله .
تحياتي . . .



