برامج CGI والتفاعلية عبر صفحات ويب
كان التعامل مع صفحات ويب في بداياته ، ساكناً ، ولم تكن عملية تصفح المواقع في مجملها ، أكثر من بديل إلكتروني لتصفح كتاب ، والتجول بين صفحاته . وكانت صفحات ويب المصممة بالاعتماد على " لغة تحديد النصوص المتشعبة " (Hyper Text Markup , Language, HTML) تستخدم إصدار HTML 1.0 في أول ظهور لها لخدمة صفحات ويب على شبكة إنترنت ، حيث كانت المتصفحات تتيح عرض المعلومات ، والتنقل بين روابط الصفحات ، بدون تفاعل مع المستخدم ، ولا تتيح استقبال أي بيانات أو مدخلات من واجهة الاستخدام ، أي من المتصفح ، ولم تكن تتوافر أي نتائج أو ردود من مزودات ويب التي تحتضن هذه الصفحات . ولم يكن القصور في المزودات ذاتها ، أو في بروتوكول HTTP الذي تم تطويره في " مختبر الفيزياء الذرية الأوروبي " (CERN ) في سويسرا ، وشكل النواة الأولى لتواجد خدمة شبكة ويب العالمية WWW سنة 1989، إنما كان في لغة HTML 1.0 ذاتها ، التي لم تدعم استخدام نماذج التراسل ( forms) ، وواصفاتها (form tags) ، والتي أضيفت في الإصدارة الثانية HTML 2.0 ، والإصدارات التي تلتها . ومع بداية استخدام النماذج ( forms) ، بدأ التفاعل بين متصفحات ويب والمزودات ، يأخذ طابعاً أكثر ديناميكية ، حيث أصبح ممكناً للمستخدم ملء نموذج بيانات على صفحة ويب ، وإرسالها للمزود ، ليحصل منه رد فوري يظهر على متصفحه ، أو رد متأخر يأتي لاحقاً على هيئة بريد إلكتروني . ويتم التعامل مع هذه النماذج، في الواقع، عن طريق برامج كامنة في برنامج مزود ويب (HTTP Web, Server ) تعرف باسم برامج "واجهة المعبر العمومي"( Common Gateway , Interface, CGI) ، يتم تشغيلها كلما تسلم مزوّد ويب نموذجاً من المتصفح . وهي عبارة عن برامج قابلة للتنفيذ ( executable) تقطن في مزود ويب ، وتوضع عادة في دليل اسمه CGI-BIN (والاسم ليس إلزامياً) .
يخلط الكثيرون بين CGI ولغة بيرل ، ويمكننا اعتبار CGI بمثابة مجموعة من المواصفات القياسية ، تحدد طريقة تعامل المتصفحات مع المزودات ، بينما بيرل هي إحدى لغات البرمجة التي تلتزم بمواصفات CGI .
طبيعة برامج CGI
يمكن أن توجد برامج CGI على مزودات ويب بصيغتين : شيفرة نصية تفسيرية (interpreted script) ، أو شيفرة مترجمة ( compiled code) .
النوع الأول (interpreted script) عبارة عن شيفرة نصية (تعليمات برمجية) ، وخليط من أوامر نظام يونيكس ولغة C الأساسية ، وأوامر البحث والتبديل المتقدمة لنظام يونيكس (Unix AWK and SED commands) ، وتسمى هذه التوليفة لغة بيرل ( PERL) ، وهي الأحرف الأولى من عبارة (Practical Extraction and Report Language ) . وتحتاج برامج الشيفرة النصية إلى تشغيل مفسّر بيرل ( PERL Interpreter ) على المزود ، لتنفيذها . وتُستخدم لغة بيرل بفعالية مع مزودات HTTP التي تعتمد على نظام التشغيل يونيكس ، كما تم تطوير نسخة أولية منها للعمل في ظل ويندوز إن.تي ، إلا أنها لا تزال قيد التعديل والتحديث .
يسمى النوع الثاني من برامج CGI الشيفرة المترجمة( compiled code) ، وهي عبارة عن برامج صُممت بلغات مثل C++ أو لغات أخرى ، وتُرجمت إلى لغة الآلة ، أي أنها جاهزة للتنفيذ على المزوّد فور تحميلها ، بدون الحاجة إلى الاستعانة بمفسّر .
محتويات وعناصر النموذج ، وشروط التفاعل مع برامج CGI
بعد ملء النموذج (form) في صفحة ويب ، ينقر المستخدم على زر الإرسال ( submit) ، فيرسل المتصفح بيانات النموذج ، إلى عنوان مضمن في صفحة النموذج مع شيفرة HTML في عنصر اسمه ( ACTION) ، مثل :
ACTION=http://www.yoursite.net/cgi-bin/registration ، الذي يمثل اسم البرنامج ، وعنوان ( URL) الذي سيتولى عملية استقبال عناصر النموذج ( form objects) ، والرد عليها أو تنفيذ عمليات أخرى ، حسب طبيعة البرنامج .
وحتى يتم إرسال بيانات النموذج بنجاح ، يجب أن تتوافر في شيفرة صفحة ( HTML) الخاصة بالنموذج ، الشروط والعناصر التالية :
· يجب أن يوجد عنصر > FORM < و </FORM> في وسط شيفرة HTML ، أي بين : <HTML> </FORM>..</BODY>...</HTML>...<BODY>..<FORM>....
· يجب أن يوجد العنصر METHOD ضمن النموذج ، ويمكن أن يوضع بقيمة GETأو POST .
· يجب أن يتضمن العنصر ACTION العنوان الكامل لموقع برنامج CGI المطلوب تشغيله لمعالجة بيانات النموذج والرد عليها ، مثل (ACTION=http://www. yoursite.net/cgi-bin/mylog.cgi ) . ويمكن ، أيضاً ، إرسال بيانات النموذج إلى عنوان بريد إلكتروني ، بدون معالجة ، وفي هذه الحالة لن يحدث تفاعل مع المزود ، بل سترسل كامل بيانات النموذج إلى العنوان المحدد، مثل:
(ACTION= "mail to:taher@ yoursite.com)
· يمكن أن توجد عناصر إدخال البيانات في النموذج بهيئة عناصر نصية (NEXT) ، أو أزرار اختيار (CHECKBOX) ، أو مساحات نصية (TEXTAREA) ، أو كلمات سر ( PASSWORD)، أو غيرها من عناصر الإدخال الخاصة بالنماذج .
· يمكن أن يوجد العنصر RESET لمسح النموذج <Input, Type= submit" > " وهو اختياري .
آلية عمل برامج CGI's
يمكن تلخيص آلية عمل برامج CGI في الخطوات التالية :
1- يتصفح المستخدم صفحة ويب تحتوي على نموذج <FORM> ، حيث يملأ بيانات النموذج أو جزءاً منه .
2- ينقر المستخدم على زر الإرسال SUBMIT لإرسال بيانات النموذج .
3- يرسل المتصفح حقول النموذج إلى مزود HTTP ، حسب عنوان " URL" المعرف في الحقل ACTION ، واستخدام البيانات المرسلة كإدخالات . وتختلف النتائج حسب طبيعة البرنامج ، فيمكن أن يقوم بالرد مباشرة على المتصفح ، أو يحفظ البيانات في سجل أو قاعدة بيانات ، للرجوع إليها لاحقاً .
شروط عمل برامج CGI على المزود
يشترط في برامج CGI أن تكون قابلة للقراءة والتنفيذ داخل الموقع الذي تحفظ فيه في المزود ، ويجب أن يسمح نظام التشغيل بقراءة محتويات دليل عملها (ويمكن أن يشترط حقوق الكتابة في دليل التخزين ، في حالة تخزين البيانات الواردة في ملفات التسجيلات Logfiles) .يمكنك تغيير سمات وحقوق استخدام الملفات والأدلة في نظام يونكس ، باستخدام برنامج مثل Cute FTP ، لتسمح بالقراءة والتنفيذ للآخرين . لكن ، لا تنسى أن تغيير الحقوق والسمات يستوجب حصولك على حقوق الدخول إلى المزود ، أولاً .
مستقبل برامج CGI
لا زالت أغلب المزودات تستعمل برامج CGI للتفاعل مع المتصفحات ، لأنها أكثر فاعلية وتنوعاً حتى الآن ، وخصوصاً بالنسبة للمزودات التي تعتمد نظام يونكس . وبدأ المطورون حديثاً في استخدام برمجيات جافا للتفاعل مع ويب بكفاءة ، مما يعطي فرصة أكبر لتجربة الحلول المتاحة الجديدة ، وتجربتها بأنماط عمل الزبون/المزوّد أو Web Server/Browser ، ولا زالت التقنيات تتقدم ، في سبيل تفاعل أقوى وأسرع بين مزوّدات ويب والمتصفحات .