كلمـــة الإدارة لمنتدى الحاسب والجوال العربي

الأعضاء و الزوار الكرام

يا ‏‏" ‏زائر " اهلاً وسهلاً بك في اسرة منتدانا منتدى الحاسب والجوال العربي سعيدون بزيارتكم لنا *كما نرحب بلعضو الجديد ‏‏" ‏روفيان "

سحابة الكلمات الدلالية

حذيفة_احمد  Zuma  لعبة  انمي  


شاطر
استعرض الموضوع السابقاذهب الى الأسفلاستعرض الموضوع التالي
????
زائر

جديد ما هي الـ سي جي آي (CGI)؟

في 2012-05-14, 07:41
السلام عليكم ورحمة الله وبركاته..







ما هي الـ سي جي آي (CGI)؟





هي برامج تخدم صفحات الأنترنت و تربط بينها و بين البرمجيات التي لا تتفاهم بلغات الإنترنت.



مثلاً لدينا صفحة على الإنترنت. و صفحات الأنترنت ما تفهم غير ال html و أي شي
ثاني ممكن نضعة داخل ال html مثل ال JavaScript و DHTML وغيرها.



و لدينا قاعدة بيانات مكتوبة على ال Oracle، وال Oracle تفهم SQL.

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

مشكلة في التفاهم. واحد يتكلّم html والثاني يتكلّم Sql كأنه واحد يتكلم صيني،
والثاني عربي.

هنا يأتي دور ال CGI و هي اختصار: Common Gateway Interface و هي بيئة في الوسط
و تعنى بالترجمة بين الطرفين أو بشكل أدق بالربط بين الطرفين.


يمكن كتابة ال CGI بعدة لغات مثل: Perl, JSP,PHP, ASP وغيرها الكثير. هذه اللغات تعتبر
مرنة و تستطيع أن تنتج صفحات الأنترنت و في نفس الوقت تستطيع أن تتعامل مع
البرامج المختلفة على الخادم الذي تكون محفوظة عليه. كما هو موضّح في الشكل:












كيف نستخدم السي جي آي؟





كي نستخدم السي جي آي يلزم توفّر ثلاث أمور


  1. الخادم يجب أن يدعم مترجم للغة التي مكتوب بها السي جي لآي مثلا Perl Compiler
  2. ملف يحتوي السي جي آي سكربت و في حالتنا سيكون سمه مثلاً send.pl
  3. امكانية الدخول على الخادم لتعديل الترخيص.








مثال



المشكلة



لنفرض أننا نريد تصميم صفحة فيها فورم، و نريد أن نرسل محتوى الفورم لشخص معيّن


التفكير في الحل


ما الذي نريده؟ نريد ارسال بيانات من فورم إلى بريد محدد.

نستطيع تصميم الصفحة والفورم، صح؟ هذه محلولة

لدينا البريد الذي نريد أن نرسل له، صح؟ هذه أيضاً محلولة

لكن، المشكلة تكمن في أن ال html لا تستطيع بأي حال من الأحوال أن ترسل بريد الكتروني بنفسها؟


لماذا؟ لأن ارسال البريد الإلكتروني يعني استخدام خاصية من خصائص الخادم و هي
ال sendmail و هذه الخاصية هي المسؤولة عن ارسال البريد الإلكتروني. و لكن
sendmail لا تتكلّم بلغة الhtml أيضاً. إذا نحتاج إلى رنامج cgi مكتوب بلغة أو
بأخرى يقوم بالربط بين الإثنين :-)




الحل



  1. نحدد مكان خدمة ال sendmail على الخادم. (في هذا المثال)>
  2. نكتب (أو نبحث عن سي جي آي مكتوب يقوم بقراءة البيانات من حقول الفورم و ربطهم بالsendmail و نضمّنه مكان هذه الخدمة.

    و لاحظ معي أننا يجب أن نعرف أي المترجم لهذا الملف أيضاً، و سأخبرك لماذا
    لاحقاً. و في هذا السكربت أيضاً سنضع بعض الأوامر التي ستنتج لنا صفحة html
    تخبر الستخدم أن رسالته قد أرسلت :-) و سنسمي هذا الملف: sendItNow.pl مثلاً.
  3. نصمم الصفحة و الفورم كاملة ( واستخدم مواهبك المتقجرة في التصميم :-))
    في أمر الفورم Form tag ستلاحظ أنه مكتوب هكذا:






    هذه الفورم لا تعمل شيء! فقط تأخذ البيانات و لا تعرف ماذا تفعل بها.

    لذا سنستبدلها بما يلي:

    {form action=http://someserver.com/cgi-bin/sendItNow.pl}


    إضافة أمر ال action في ال form يجعلها تعرف ماذا ستفعل بالبيانات. فهي سترسلها إلى السكربت الذي وضعت عنوانه كاملاً، و الباقي عليه.

  4. نضع جميع هذه الملفات في أماكنها المناسبة. يعني نضع الصفحة في
    المكان الذي تريده. و تضع السي جي آي في هذا المكان:
    http://someserver.com/cgi-bin لأن صفحتنا ستبحث عنه في هذا المكان.
  5. نذهب إلى صفحتنا عبر المتصفّح :-)

مفاجــــــــــــــــــــــــــــأة. لن يعمل السكربت، و سيعطيك خطأ مفاده
Server Error لماذا؟ أه ها.. قلت لماذا. بسبب الترخيص! (و هو ما سأقوم
بشرحة في درس التراخيص)

لذا علينا قبل الخطوة (5) أن نضع الخطوة (4.5) و هي تغيير ترخيص ملف السيجي
آي عن طريق ال chmod إلى 755 . (انظر الملحق لهذا الموضوع في الأسفل)


مرّة ثانية الخطوة (5).. سيعمل تمام التمام ان شاء الله إذا كان مدير النظام يسمح لك باستخدام خاصية ال sendmail


أرجو أن أكون أفدت الجميع، وفي حال وجود أسئلة سأحاول أن أعمل جاهدة للإجابة عليها ان شاء الله :-)





وفوق كل ذي علم عليم





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