MKDIR/USR/SRC/TEMP
CD/USR/SRC/TEMP
gzip ´d stable.tar.gzip
TAR XVL مستقر
CD Perl-5.6.0
rm -f config.sh polycy.sh
SH تكوين -DE
ماكياج
اجعل الاختبار
اجعل التثبيت
ما هو cgi = https://homepages.dcc.ufmg.br/~mlbc/cursos/internet/cgi/intro.htm
CGI Serving Pages (html) = http://devfuria.com.br/miscellwer/cgi-common-gateway-interface/
ما هو CGI/تنسيق أشكال CGI = http://penta.ufrgs.br/edu/forms/cgi.html
موارد CGI إلى Java و JavaScript = http://penta.ufrgs.br/pesquisa/joice/cap4.html
CGI سهل حقًا/كتابة البرامج النصية CGI لمعالجة الصفائح على الويب = https://www.jmarshall.com/asy/cgi/portugues/
CGI - واجهة بوابة شائعة = https://web.fe.up.pt/~goii2000/m9/cgi.htm
متغيرات بيئة IBM في البرنامج النصي CGI (مرجع) = https://www.ibm.com/docs/en-br/netcoolomnibus/8.1؟topic=SSSHTQ_8.1.0/COM.IBM.NETCOOL_OMNIBUS.DOC_8.1.0/WEBTOP/WIP/REFERENCOM
CGI - TCL/TK Language = http://www.c2o.pro.br/automacao/ar01s14.html
نماذج CGI = http://penta.ufrgs.br/edu/forms/cgi.html
CGI Tutorial = https://www.w3.org/cgi/
واجهة بوابة شائعة (CGI) = https://en.wikipedia.org/wiki/Common_Gateway_Interface
CGI (Wikipedia) = https://en.wikipedia.org/wiki/cgi
CGI مقدمة = http://homepages.dcc.ufmg.br/~mlbc/cursos/internet/cgi/intro.htm
ما هي CGI (واجهة البوابة المشتركة) وماذا تفعل؟ واجهة Gateway Common (CGI) هي تقنية تتيح لك إنشاء صفحات ديناميكية مع تفاعل البرنامج النصي HTTP Server مع البرامج النصية للبوابة والبرامج من خلال المعلمات. لذا فإن البرامج النصية CGI هي البرامج الصغيرة التي تفسر هذه المعلمات وإنشاء صفحة بعد معالجتها.
لكن استخدام CGI ليس آمنًا للغاية ، مع الأخذ في الاعتبار أنه يجب اتخاذ بعض الاحتياطات الأمنية. أدناه ، سيتم مناقشة الاحتياطات الأمنية التي يجب اتخاذها بناءً على بعض قواعد برامج CGI بعد شرح كيفية عمل CGI.
كيف تعمل؟ مثال:
يطلب العميل (المتصفح) عنوان URL من عنوان URL المطلوب لـ CGI ، وبالتالي يقوم الخادم بإجراء أعمال CGI CGI التي تتفاعل مع تطبيقات النظام الأخرى ، ويقوم باسترداد البيانات من هذه التطبيقات وإرجاع النتيجة إلى الخادم الذي يرسله الخادم البيانات إلى العميل ، والتي تقوم بتنسيق النتيجة وتعرض المستخدم لإدخال وصف الصورة هنا.
لماذا تستخدم CGI؟ مع CGI ، يمكن لخادمك الوصول إلى المعلومات التي لا تكون بطريقة قابلة للقراءة إلى العميل (مثل قاعدة بيانات SQL) ، ويعمل كبوابة بينهما لإنتاج شيء يمكن للعميل استخدامه. يمكن استخدام البوابات لمجموعة متنوعة من الأغراض ، والأكثر شيوعًا هي معالجة ISIndex و HTTP نموذج.
CGI استخدم أمثلة: تحويل الصفحات اليدوية لـ HTML Systems وإرسال نتيجة HTML إلى العميل. واجهة مع قاعدة بيانات WAIS و Archie ، وتحويل النتائج إلى HTML وإرسال النتيجة إلى العميل. اسمح للمستخدم بتغذية الخادم الخاص بهم من خلال نموذج HTML وفتحار بعد CGI. قد تكتب هذه CGI من خلال البوابات التي يمكن كتابتها في أي أربطة تتيح لك تنفيذها في النظام ، مثل:
C/C ++ Fortran Perl Tcl Unix Shell Visual Basic Apple Script ما هي القواعد الرئيسية لبرامج CGI؟ برامج CGI ، أو البرامج النصية ، هي برامج قابلة للتنفيذ يمكن تنفيذها من قبل نفسك (وهي ليست طريقة آمنة). لذلك هناك بعض الاحتياطات الأمنية التي يجب تنفيذها عند استخدام برامج CGI.
القواعد الرئيسية هي:
يجب أن يكون Script CGI في مكان يحدده الخادم للبرامج النصية CGI أو يجب أن يكون له لاحقة خاصة ، تم تكوين الخادم للاعتراف كنصي قانوني CGI. تقوم معظم الأنظمة بتخزين البرامج النصية CGI في دليل جذر خادم HTTP يسمى CGI-BIN ، والذي تم تكوينه بطريقة بحيث يمكن فقط لبعض المستخدمين الموثوقين تسجيله. هذا يتجنب مشاكل السلامة الواضحة التي تنشأ من خلال السماح للمستخدمين عن بُعد مجهول الهوية بأداء أي شيء في النظام. مثال:/usr/local/apache/htdocs/cgi-bin
يمكن للبرنامج النصي جمع معلماته أو الإدخال الافتراضي (عبر لوحة المفاتيح) أو متغيرات البيئات أو كليهما.
يجب أن يعطي البرنامج النصي كإخراج ، أحد أنواع الرأس القياسية الثلاثة ، كسلسلة نصية عادية. كونها الأنواع الثلاثة:
Context_type: يشير نوع المحتوى إلى أي نوع من بيانات MIME المقبولة من قبل الخادم. تشمل الأنواع الشائعة النص/HTML ، النص/بسيط وبيانات/GIF. نظرًا لأن المتصفح/الخادم لا يمكنه استنتاج هذا النوع من الملفات من موقع اسم الملف أو لاحقة ، فإن هذا العنوان سيبلغ المتصفح نوع البيانات المتوقع وكيفية استخدامه.
التنسيق: الكتابة/النوع
الموقع: يشير إلى مستند في مكان آخر على الخادم. يتيح لك إعادة توجيه الطلبات للمستندات ، بناءً على بعض المعايير المرسلة بواسطة نموذج أو متغير البيئة.
الحالة: يمكن استخدامها لتشغيل برنامج نصي دون إرسال صفحة جديدة إلى العميل. يمكن استخدامه أيضًا لإرسال رسالة خطأ أو معلومات أخرى إلى العميل.
يجب أن يكون المستخدم قابلاً للتنفيذ من قبل المستخدم الذي تم تكوين الخادم. (يوجد مستخدم خاص يسمى "لا أحد" وهو المستخدم الافتراضي لمعظم خوادم الويب. يجب عليك التأكد من أن مستخدم "لا أحد" أو المستخدم الذي تم تكوين الخادم الخاص بك إلى العمل يسمح له بتشغيل البرامج النصية الخاصة بك والقراءة/الكتابة في أي ملفات يمكن للبرنامج النصي استخدامها).
المزيد من تفاصيل الأمان في البرامج النصية CGI
كيف تحصل على معلومات الخادم؟ في كل مرة يطلب المستخدم عنوان URL الذي يتوافق مع برنامج CGI الخاص به ، سيقوم الخادم بتشغيله في الوقت الفعلي. مفهوم خاطئ حول CGI هو أنه يمكنك إرسال خيارات للأوامر والوسائط الاختيارية لبرنامجك ، مثل:
command ٪ myProg -QA blorf
يستخدم CGI سطر الأوامر لغرض آخر. تستخدم Gateway المتغيرات البيئية لإرسال معلماتها إلى البرنامج.
كيف ترسل مستندات إلى المستخدم؟ يمكن لبرامج CGI إرجاع عدد كبير من أنواع المستندات. يمكنك إرجاع صورة إلى المستخدم ، أو مستند HTML ، أو ربما مقطع صوتي. قد تشير أيضا إلى المستندات الأخرى.
يحتاج العميل إلى معرفة نوع المستند الذي سيحصل عليه ، حتى يتمكنوا من تقديمه بشكل صحيح. يجب على برنامج CGI قريبًا إبلاغ الخادم بنوع المستند الذي يتم إرساله.
من أجل التواصل مع الخادم ، يتطلب نوع المستند الذي يعود ، سواء كان مستندًا كاملًا أو مرجعًا إلى آخر ، CGI يتطلب رأسًا صغيرًا عند الخروج. هذا الرأس عبارة عن نص ASCII ، يتكون من خطوط منفصلة أو بواسطة Linerifeeds أو بواسطة عائدات النقل (أو كليهما) تليها خط فارغ.
مثال:
وثيقة كاملة مع نوع MIME المقابل. إرسال مستند HTML إلى العميل.
نوع المحتوى: النص/html
<title> إخراج HTML من برنامج نصي CGI </title>نوع المحتوى: نص/html الموقع: gopher: //httprules.foobar.org/0
<title> آسف ... تم نقله </title>قد يحتوي نموذج واحد على مكونات مختلفة مثل المدخلات وخانات الاختيار والراديو.
كيفية الحصول على بيانات النموذج؟ هناك طريقتان يمكن استخدامهما للوصول إلى النماذج والحصول على النشر. اعتمادًا على الطريقة المستخدمة ، ستتلقى البيانات بشكل مختلف.
طريقة GET: إذا كان النموذج الخاص بك يستخدم method = "get" ، فسيتلقى برنامج CGI الخاص بك البيانات المشفرة في متغير بيئة Querry_String. مثال:
تسجيل الدخول: كلمة المرور:طريقة النشر: إذا كان النموذج الخاص بك يستخدم method = "post" ، فسيتلقى برنامج CGI الخاص بك بيانات الإدخال القياسية stdin. لن يرسل الخادم EOF في نهاية البيانات. بدلاً من ذلك ، سيتعين عليك استخدام متغير بيئة Content_length لتحديد مقدار البيانات المراد قراءتها من stdin.
مثال:
تسجيل الدخول: كلمة المرور:تعتمد كيفية قراءة متغير بيئي على نظام التشغيل الذي سيتم فيه تنفيذ برنامج CGI ولغة البرمجة التي تمت كتابتها فيها. يمكن لبرنامج C الذي يعمل في UNIX استخدام وظيفة char *getenv (const char *name) ؛ الذي يسمى المتغير كوسيطة ويعيد قيمته في سلسلة.
هل هي تقنية قديمة؟ تم تصور CGI على أنها تتويجا للمناقشات من قبل الخبراء خلال الأيام الأولى للإنترنت ، في عام 1993 من قبل المركز الوطني (لتطبيقات الحوسبة الفائقة) وهي على حد سواء بين روب ماكول وجون فرانكس وأري لوتونين وجورج فيليبس وتوني ساندرز. ما الذي يمكن أن يجعلها تعتبر تقنية قديمة.
مواصفات CGI 1.1: RFC3875
على الرغم من أن اللغة المرتبطة عادةً مع CGI هي perl ، فقد تم تصور CGI من أجل أن تكون مستقلة عن اللغة المستخدمة. تواصل تقنيات مثل ASP.NET و PHP و Python و Ruby استخدام المواصفات.
هل هناك بدائل أخرى له (أيها)؟ FastCGI: إنه بروتوكول ثنائي لتفاعل الواجهة مع خادم الويب.
PSGI: إنها واجهة بين خوادم الويب وتطبيقات Web Perl و Frameworks التي تتيح لك كتابة التطبيقات التي يمكن تنفيذها كخوادم مستقلة أو باستخدام CGI. الرف: يوفر واجهة معيارية وقابلة للتكيف لتطوير تطبيقات الويب في Ruby.
WRB: تقنية خادم HTTP على غرار Oracle Distributed CGI.
الواجهة: العنصر الذي يوفر اتصالًا ماديًا أو منطقيًا بين نظامين أو جزء من نظام لا يمكن توصيله مباشرة.
Vision General أدخل وصف الصورة هنا
بشكل عام ، يحتوي خادم HTTP على دليل (مجلد) ، والذي تم تعيينه كمجموعة من المستندات (الملفات) ، والتي يمكن إرسالها إلى متصفحات الويب المرتبطة بهذا الخادم. على سبيل المثال ، إذا كان خادم الويب يحتوي على اسم المجال example.com ، وتم تخزين مجموعة المستندات الخاصة بك في/usr/local/apache/htdocs في نظام الملفات المحلي ، فسيستجيب خادم الويب إلى طلب http://exemplo.com/index.html عن طريق إرسال المتصفح/file/local/pache/indocs/indocs/indoc.html.
يعمل CGI على توسيع هذا النظام ، مما يسمح لمالك خادم الويب بتعيين دليل ضمن مجموعة المستندات التي تحتوي على البرامج النصية القابلة للتنفيذ (أو الملفات الثنائية) بدلاً من الصفحات المحددة ، ويعرف ذلك باسم دليل CGI. على سبيل المثال ، يمكن تعيين/usr/local/apache/htdocs/cgi-bin كدليل CGI على خادم الويب. إذا طلب متصفح الويب عنوان URL الذي يشير إلى ملف داخل دليل CGI (على سبيل المثال ، http://exemplo.com/cgi-bin/printenv.pl) بدلاً من مجرد إرسال الملف (/usr/local/apache/htdocs/cgi-bin/printenv.pl) متصفح الويب. أي أن أي شيء يرسل البرنامج النصي يتم تمرير الإخراج الافتراضي إلى عميل الويب بدلاً من عرضه على الشاشة في نافذة طرفية.
الهيكل العام للنصوص CGI: قراءة البيانات وفك تشفيرها (و/أو حقول المعلومات لحزمة HTTP) ؛
معالجة البيانات (سجل معلومات عن قواعد البيانات ، وإجراء العمليات الحسابية ، واستعادة البيانات) ؛
إنشاء صفحة ويب مع النتائج المنتجة.
أمثلة على معالجة بيانات تطبيق CGI المقدمة من خلال النماذج ؛
بمثابة واجهة مع قواعد البيانات ، وتحويل معاملة HTML إلى SQL والتنسيق إلى HTML الإجابات التي تم الحصول عليها ، ثم أرسل النتائج إلى العميل ؛
تحويل بيانات النظام إلى HTML وإرجاع النتيجة إلى العميل ؛
إنشاء مستندات مخصصة ؛
إدارة عدادات الوصول ؛
معالجة الخريطة.
طرق الإرسال يستخدم بروتوكول HTTP العديد من أساليب معالجة البيانات وطرق التنظيم. الطريقتين الأكثر استخدامًا لتقديم بيانات النماذج هما GET و POST. كلتا الطريقتين تنقل البيانات من المتصفح إلى الخادم ، والفرق الأكبر بينهما هو الطريقة التي يتم بها تمرير المعلومات إلى برنامج CGI:
يحصل
استدعاء CGI من خلال طريقة الحصول
يضيف المتصفح "؟" عنوان URL المحدد في سمة الإجراء ، والقيم المشفرة ؛
http://exemplo.com/cgi-bin/registra.pl؟login=Guest
الخادم ، عند تلقي عنوان URL مع سلسلة الاستعلام ، يستدعي برنامج CGI المحدد في الجزء الأول من عنوان URL (قبل "؟") ويحتفظ بالجزء بعد "؟" في متغير بيئة Query_String (سلسلة الاستشارة الموجودة في عنوان URL بعد "؟"). على افتراض أن المستخدم كتب "ضيف" في حقل تسجيل الدخول ، عند النقر فوق زر الإرسال ، يرسل المتصفح إلى الخادم.
يحدد طلب GET المستند المراد إرساله (CGI-BIN/RECORD.PL). طالما تم تكوين الخادم للتعرف على جميع الملفات في دليل CGI-BIN كبرنامج CGI ، فإنه يقوم بتشغيل البرنامج بدلاً من إرسال المستند مباشرة إلى المتصفح ، ويضع سلسلة تسجيل الدخول = "الضيف" في متغير بيئة Query_String.
لا يمكن لمبرمج CGI التحكم في الطريقة التي سيتم بها استدعاء البرنامج. وبالتالي ، تتم كتابة البرامج النصية عادة لدعم كلتا الطريقتين.
البيانات التي تم تقديمها في نموذج هي جزء من نص الرسالة المرسلة إلى الخادم.
بينما تقوم طريقة GET بتمرير المعلومات من خلال المتغيرات البيئية ، يرسل المنشور البيانات إلى برنامج CGI من خلال الإدخال القياسي (الإدخال الافتراضي ، stdio.h) ، كسلسلة من الطول المحددة في متغير بيئة Content_Length ؛
يقوم بإجراء مكالمتين إلى الخادم ، أحدهما للاتصال بالخادم وواحد لإرسال المعلمات. بمعنى آخر ، إذا تلقى الخادم نموذجًا من النموذج باستخدام المنشور ، فهو يعلم أنه يتعين عليه مواصلة "انتظار" بقية المعلومات.
المزايا/العيوب
ميزة الحصول على أنها تتيح لك الوصول إلى برنامج CGI مع استعلام دون استخدام نموذج ، في الأساس نقوم بتمرير معلمات لبرنامج ما. مثال: برنامج CGI
أكبر عيب في الحصول على عدم وجود أمان وحقيقة أن هناك بعض العناية بأن المتصفح أو الخادم لا يخدعون المعلومات التي تتجاوز عدد الأحرف المسموح بها.
أكبر ميزة لطريقة البريد هي حجم الاستعلام ليكون غير محدود. للحصول على معلومات من خلال طريقة POST ، يقرأ برنامج CGI الإدخال القياسي ، لذلك لا يمكن الوصول إلى CGI دون استخدام نموذج.
التاريخ مع الأخذ في الاعتبار السرعة التي تحدث بها الابتكارات ، يمكن اعتبار CGI قديمًا ، مع مراعاة إنشاء الكمبيوتر ، ويمكن القول إنه في منتصف العمر.
في عام 1993 ، كتب المنتخب المركز الوطني لتطبيقات الحوسبة الفائقة (NCSA) مواصفات لاتصالات سطر الأوامر التنفيذيين في قائمة البريد الإلكتروني www-voltal. ومع ذلك ، فإن NCSA لا تستضيف المواصفات.
اعتمد المطورين الآخرون المواصفات ، وكانوا معيارًا لخوادم الويب منذ ذلك الحين. بدأت مجموعة برئاسة Ken Coar وظيفة في نوفمبر 1997 للحصول على تعريف NCSA الأكثر تعريفًا رسميًا. نتج عن هذا العمل RFC3875 ، والذي يحدد إصدار CGI 1.1. المذكورة صراحة في RFC هم دافعي الضرائب التاليين:
Rob McCool (مؤلف كتاب NCSA HTTPD Web Server) John Franks (مؤلف خادم الويب GN) Ari Lotonen (CERN HTTPD Web Server Developer) Tony Sanders (Plexus Web Server) George Phillips (صيانة خادم الويب في جامعة كولومبيا البريطانية).
كبديل يمكنك التفكير في:
fastcgi
PSGI (واجهة بوابة خادم ويب بيرل)
رف (واجهة خادم الويب)
WSGI (واجهة بوابة خادم الويب)
مثال بسيط لنص CGI
ضع الرقمين: