ربما يشعر القراء أن برامج CGI تتمتع بحس الغموض. في هذا القسم، سنصف بعض عمليات البرمجة الأساسية لبرامج CGI. بعد قراءتها، لن يكون هناك أي لغز بعد الآن.
3. مشكلات أخرى تتعلق بمواصفات CGI:
ربما يشعر القراء أن برامج CGI تتمتع بحس الغموض. في هذا القسم، سنصف بعض عمليات البرمجة الأساسية لبرامج CGI. بعد قراءتها، لن يكون هناك أي لغز بعد الآن.
أولًا، عند القيام بأي عمل برمجي، قم بتقسيم المهمة الكبيرة إلى العديد من المهام الصغيرة، وكل مهمة صغيرة تكمل وظيفة مستقلة نسبيًا. يتردد العديد من الأشخاص في كتابة برامج CGI بأنفسهم لأنهم يعتقدون أن برمجة CGI صعبة. في الواقع، إذا قمت بتقسيم برنامج CGI النموذجي إلى الأجزاء التالية وحلها واحدًا تلو الآخر، فلن تجد صعوبة في برنامج CGI:
بشكل عام، عند استدعاء برنامج CGI في المتصفح، يجب على الخادم أولاً العثور على برنامج CGI. بشكل عام، يتم وضع برنامج CGI في الدليل المحدد بواسطة الخادم في OmniHTTPD الخاص بنا، في cgi-bin وcgi-win الدلائل الفعلية المحددة بواسطة الدليل هي الدلائل c:httpdcgi-bin وc:httpdcgi-win على التوالي. يمكنك تعديل الدليل الفعلي في OmniHTTPD، أو إضافة دليل ظاهري، مثل: تحديد الدليل الظاهري cgi-test كـ c:my-cgi؛ إذا كان لديك CGI اسمه test1.cgi في برنامج الدليل c:my-cgi ، يمكنك الاتصال به في متصفحك على العنوان http://localhost/cgi-test/test1.cgi.
في الظروف العادية، يعثر الخادم على برنامج CGI الذي يطلبه المتصفح ويقوم بإنشاء عملية لبرنامج CGI هذا. بهذه الطريقة، يكون المتصفح والخادم قد أنشأا اتصالاً. بمجرد انتهاء برنامج CGI من التنفيذ، تختفي العملية ويتم فقدان الاتصال. يتم إكمال جميع العمليات في الشكل أعلاه خلال الوقت الذي يتم فيه إنشاء الاتصال، لذلك، يجب أن تكون المهام التي يكملها كل برنامج CGI صغيرة قدر الإمكان، وإلا فإنها ستستهلك الكثير من الوقت والموارد على الخادم سيكون وقت انتظار متصفح العميل طويلاً جدًا أيضًا.
كما ترون في الشكل أعلاه، تنقسم برامج CGI بشكل عام إلى ثلاثة أجزاء: إدخال البيانات ومعالجة البيانات وإخراج البيانات، وفي بعض الأحيان يكون من الضروري التفاعل مع قاعدة البيانات في جزء معالجة البيانات (وهذا أيضًا هو تخصص CGI). البرامج). من بين هذه الأجزاء الثلاثة، يكون إدخال البيانات وإخراج البيانات بمواصفات صارمة، ومعالجة البيانات هي المكان الذي يمكنك فيه استخدام خيالك. بعد ذلك، سأركز على المواصفات والاحتياطات الخاصة بإدخال وإخراج البيانات:
لقد قمنا سابقًا بإدراج جميع متغيرات البيئة التي تستخدمها برامج CGI تقريبًا. من بينها، يرتبط جزء كبير منها ارتباطًا وثيقًا بإدخال البيانات ومخرجاتها. ندرج أدناه متغيرات البيئة الأكثر استخدامًا حسب الفئة:
متغيرات البيئة المتعلقة بالخادم:
بوابة_الواجهة
SERVER_NAME
SERVER_PORT
SERVER_PROTOCOL
SERVER_SOFTWARE
متغيرات البيئة المتعلقة بالعميل:
HTTP_ACCEPT
HTTP_ACCEPT_ENCODING
HTTP_ACCEPT_LANGUAGE
HTTP_AUTHORIZATION
HTTP_CHARGE_TO
HTTP_FROM
HTTP_IF_MODIFIED_SINCE
HTTP_PRAGMA
HTTP_REFERER
HTTP_USER_AGENT
متغيرات البيئة المتعلقة بالطلب:
AUTH_TYPE
CONTENT_FILE
CONTENT_LENGTH
CONTENT_TYPE
OUTPUT_FILE
PATH_INFO
PATH_TRANSLATED
QUERY_STRING
REMOTE_ADDR
REMOTE_USER
REQUEST_LINE
REQUEST_METHOD
SCripT_NAME
ومن الجدير بالذكر هنا أن CONTENT_FILE وOUTPUT_FILE. في Windows 3.1 وDOS، لا تستطيع العديد من اللغات القراءة والكتابة عبر الإدخال والإخراج القياسي (STDIN وSTDOUT)، لذلك يتم استخدام هذين المتغيرين بدلاً من ذلك. بالنسبة لمتغيرات البيئة الأخرى، يرجى الرجوع إلى القائمة التفصيلية السابقة.
كما ذكرنا سابقًا، يقوم أسلوب GET بتمرير البيانات من خلال عنوان URL؛ بينما يقوم أسلوب POST بتمرير البيانات من خلال STDIN. بغض النظر عن الطريقة المستخدمة، يتم تشفير البيانات أثناء نقل البيانات. ومع ذلك، لا داعي للقلق بشأن التشفير وفك التشفير، لأن لغة التطوير التي سنستخدمها يمكنها إكمال هذه المهمة تلقائيًا: cgi-lib.pl في Perl، وTWebModule في Delphi، وما إلى ذلك.
تعد معلومات الرأس أيضًا مهمة جدًا في برمجة CGI. معلومات الرأس هي إشارة من برنامج CGI قبل إرسال المعلومات إلى العميل. هناك ثلاثة أنواع رئيسية من معلومات الرأس:
نوع المحتوى // نقل HTML إلى المتصفح
الموقع // قم بتمرير عنوان URL الجديد إلى المتصفح
الحالة // تُستخدم عادةً للتحقق من الأخطاء عند حدوث خطأ في برنامج CGI
نوع المحتوى هو نوع المعلومات التي يعالجها المتصفح، وخاصة نوع MIME. يتم تعريف الأساليب على أنها مجموعات من الأنواع والأنواع الفرعية. أنواع MIME شائعة الاستخدام هي: النص، ومتعدد الأجزاء، والرسالة، والتطبيق، والصورة، والصوت والفيديو.
على سبيل المثال، قبل أن يرسل برنامج CGI مستند HTML إلى المتصفح، يجب عليه أولاً إرسال نص/html. مكتوب في بيرل على النحو التالي:
طباعة "نوع المحتوى: نص/html"
طباعة "< h1> مرحبًا بالجميع! </h1> "
يؤدي الموقع إلى قيام المتصفح بإعادة التوجيه إلى عنوان URL الجديد. على سبيل المثال:
طباعة "الموقع:http://www.chinabyte.com"
يقوم برنامج Perl هذا بإعادة توجيه المتصفح إلى الصفحة الرئيسية لـ ChinaByte.
تشير الحالة إلى حالة برنامج CGI وعادةً ما تُستخدم للتحقق من الأخطاء عند فشل برنامج CGI. يسرد الجدول التالي رموز الحالة شائعة الاستخدام ومعانيها:
وصف نتيجة الكود
200 موافق يتم تلبية الطلب بشكل طبيعي
202 قبول تم قبول الطلب وجارٍ معالجته.
301 تم النقل تم نقل المستند إلى موقع جديد
302 تم العثور على المستند ليس في الوصف، ولكن في مكان آخر على الخادم.
400 طلب سيئ بناء جملة طلب HTTP غير صحيح.
401 مستند غير مصرح به يتطلب حقوق الوصول
403 Forbindden الخادم يرفض الوصول إلى المستند
404 لم يتم العثور على الخادم لا يمكن العثور على المستند.
500 خطأ في الخادم حدث خطأ خطير في الخادم
502 خدمة مثقلة الخادم مشغول ولا يمكنه معالجة الطلب.
هذا ينتهي هنا. بعد حصولك على هذه المعرفة الأساسية بـ CGI، يمكنك البدء في تطوير برامج CGI خطوة بخطوة باستخدام أي لغة. دعني أخبرك مرة أخرى، برامج CGI ليست غامضة، إنها مجرد حوار لإنشاء خادم ونوع من المهام.