أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

كيفية كتابة تطبيقات CGI في Visual Basic

هام: تمت ترجمة هذه المقالة باستخدام برامج مايكروسوفت للترجمة الآلية ومن المحتمل ان يتم تحريرها او تدقيقها بعد ذلك من خلال تكنولوجيا منصة مجموعات الترجمة(CTF) او من خلال مترجم بشري. تقدم لك شركة مايكروسوفت هذه المقالات المترجمة بشكل آلي او بالترجمة البشرية او بعد تحريرها وتدقيقها من قبل مجموعات الترجمة حتى تمكنكم من الوصول إلى جميع المقالات الموجودة في قواعد المعرفة لديها بلغات مختلفة. إلا أن المقالات المترجمة قد تحتوي على أخطاء في المفردات او بناء الجمل او النحو. وعليه، فإن شركة مايكروسوفت ليست مسؤولة عن اية أخطاء او عدم دقة في الترجمة او أية أضرار قد تحدث نتيجة أخطاء في ترجمة محتويات النص او استخدامه من قبل العملاء.

اضغط هنا لرابط المقالة باللغة الانجليزية239588
الموجز
يمكن كتابة أحد تطبيقات واجهة عبارة شائعة (CGI) في أي لغة البرمجة التي يمكن الوصول إلى كل من متغيرات البيئة و STDIN أو STDOUT. وبسبب النص قوية معالجة قدرة لغة البرمجة Microsoft Visual Basic، ترغب العديد من مطوري الويب كتابة برامج CGI في Visual Basic. هذا المقال يوضح التقنيات لكتابة تطبيقات CGI في Visual Basic، ويوفر نموذج Visual Basic CGI بسيط.
معلومات أخرى
ملاحظة:تقدم Microsoft الأمثلة البرمجية للتوضيح فقط، دون أي ضمان سواء ضمنياً أم صريحا. هذا يتضمن دون الحصر، الضمانات الضمنية الخاصة بالتسويق أو الملاءمة لغرض معين. تفترض هذه المقالة أنك معتاد على لغة البرمجة التي يتم شرحها والأدوات المستخدمة لإنشاء الإجراءات وتصحيحها. يساعد مهندسو الدعم لدى Microsoft شرح وظيفة إجراء محدد، ولكن لن يقوموا بتعديل هذه الأمثلة لتقديم وظيفة إضافية أو إنشاء إجراءات تستوفي متطلبات محددة.

استرداد متغيرات البيئة

لاسترداد متغير بيئة، استخدم الدالة Environ$ في Visual Basic كما يلي:
VALUE = Environ$(NAME)				
لاحظ أن اسم متغير البيئة التي تريد استردادها. يتم إرجاع القيمة الخاصة به في القيمة.

القراءة من STDIN والكتابة إلى STDOUT

استخدم الدالة Win32 ReadFile قراءة من STDIN والدالة WriteFile الكتابة إلى STDOUT. تتطلب هذه المهام على مؤشر إلى STDIN أو STDOUT. يمكنك استخدام الدالة GetStdHandle للحصول على المقابض STDIN أو STDOUT. في هذه المقالة، يتم استخدام الدالة GetStdHandle من الصقل لتبسيط استدعاءات الدوال. التعريفات عن هذه الدالات كالتالي:
Public Declare Function stdin Lib "kernel32" Alias "GetStdHandle" _(Optional ByVal Handletype As Long = STD_INPUT_HANDLE) As LongPublic Declare Function stdout Lib "kernel32" Alias "GetStdHandle" _(Optional ByVal Handletype As Long = STD_OUTPUT_HANDLE) As LongPublic Declare Function ReadFile Lib "kernel32" _(ByVal hFile As Long, ByVal lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, _lpNumberOfBytesRead As Long, Optional ByVal lpOverlapped As Long = 0&) As LongPublic Declare Function WriteFile Lib "kernel32" _(ByVal hFile As Long, ByVal lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, _lpNumberOfBytesWritten As Long, Optional ByVal lpOverlapped As Long = 0&) As Long				
يتم تعريف الثوابت التي تم تمريرها إلى الدالة GetStdHandle ك:
Public Const STD_INPUT_HANDLE = -10&Public Const STD_OUTPUT_HANDLE = -11&				
الرجاء الرجوع إلى وثائق MSDN لتعريف كل معلمة في تلك الدالات. في النموذج التالي, يتم إجراء قائمة كاملة من متغيرات بيئة CGI ثابتة. تسرد كافة ثوابت معا على Ctrl--ج. فإنه أيضا يحل أخطاء البرمجة عن طريق توفير برنامج التحويل البرمجي والتحقق من صحة التحسس الذكي، ومع ذلك لا يحول يمكنك إدخال سلاسل الخاص بك.

نموذج التعليمات البرمجية

للتبسيط، تم حذف تراكب خطأ في النموذج التالي (Hello.bas):
Option ExplicitPublic Const STD_INPUT_HANDLE = -10&Public Const STD_OUTPUT_HANDLE = -11&Public Const CGI_AUTH_TYPE         As String = "AUTH_TYPE"Public Const CGI_CONTENT_LENGTH    As String = "CONTENT_LENGTH"Public Const CGI_CONTENT_TYPE      As String = "CONTENT_TYPE"Public Const CGI_GATEWAY_INTERFACE As String = "GATEWAY_INTERFACE"Public Const CGI_HTTP_ACCEPT       As String = "HTTP_ACCEPT"Public Const CGI_HTTP_REFERER      As String = "HTTP_REFERER"Public Const CGI_HTTP_USER_AGENT   As String = "HTTP_USER_AGENT"Public Const CGI_PATH_INFO         As String = "PATH_INFO"Public Const CGI_PATH_TRANSLATED   As String = "PATH_TRANSLATED"Public Const CGI_QUERY_STRING      As String = "QUERY_STRING"Public Const CGI_REMOTE_ADDR       As String = "REMOTE_ADDR"Public Const CGI_REMOTE_HOST       As String = "REMOTE_HOST"Public Const CGI_REMOTE_USER       As String = "REMOTE_USER"Public Const CGI_REQUEST_METHOD    As String = "REQUEST_METHOD"Public Const CGI_SCRIPT_NAME       As String = "SCRIPT_NAME"Public Const CGI_SERVER_NAME       As String = "SERVER_NAME"Public Const CGI_SERVER_PORT       As String = "SERVER_PORT"Public Const CGI_SERVER_PROTOCOL   As String = "SERVER_PROTOCOL"Public Const CGI_SERVER_SOFTWARE   As String = "SERVER_SOFTWARE"Public Declare Function Sleep Lib "kernel32" _(ByVal dwMilliseconds As Long) As LongPublic Declare Function stdin Lib "kernel32" Alias "GetStdHandle" _(Optional ByVal Handletype As Long = STD_INPUT_HANDLE) As LongPublic Declare Function stdout Lib "kernel32" Alias "GetStdHandle" _(Optional ByVal Handletype As Long = STD_OUTPUT_HANDLE) As LongPublic Declare Function ReadFile Lib "kernel32" _(ByVal hFile As Long, ByVal lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, _lpNumberOfBytesRead As Long, Optional ByVal lpOverlapped As Long = 0&) As LongPublic Declare Function WriteFile Lib "kernel32" _(ByVal hFile As Long, ByVal lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, _lpNumberOfBytesWritten As Long, Optional ByVal lpOverlapped As Long = 0&) As LongSub Main()    Dim sReadBuffer As String    Dim sWriteBuffer As String    Dim lBytesRead As Long    Dim lBytesWritten As Long    Dim hStdIn As Long    Dim hStdOut As Long    Dim iPos As Integer        ' sleep for one minute so the debugger can attach and set a break    ' point on line below    ' Sleep 60000        sReadBuffer = String$(CLng(Environ$(CGI_CONTENT_LENGTH)), 0)        ' Get STDIN handle    hStdIn = stdin()    ' Read client's input    ReadFile hStdIn, sReadBuffer, Len(sReadBuffer), lBytesRead    ' Find '=' in the name/value pair and parse the buffer    iPos = InStr(sReadBuffer, "=")    sReadBuffer = Mid$(sReadBuffer, iPos + 1)        ' Construct and send response to the client    sWriteBuffer = "HTTP/1.0 200 OK" & vbCrLf & "Content-Type: text/html" & _                    vbCrLf & vbCrLf & "Hello "    hStdOut = stdout()    WriteFile hStdOut, sWriteBuffer, Len(sWriteBuffer) + 1, lBytesWritten    WriteFile hStdOut, sReadBuffer, Len(sReadBuffer), lBytesWrittenEnd Sub				

نموذج HTML لاختبار CGI (Test.htm)
<HTML><HEAD><TITLE>Testing VB CGI</TITLE></HEAD><BODY><FORM action="/cgi-bin/hello.exe" method="POST"><INPUT TYPE="TEXT" NAME="Name"> Name<BR><INPUT TYPE="SUBMIT"></FORM></BODY></HTML>				

خطوات لإنشاء ملف CGI Hello.exe بسيطة:

  1. إنشاء "مشروع جديد" كمشروع.exe قياسي.
  2. إزالة النموذج من المشروع.
  3. إضافة وحدة نمطية إلى المشروع وتسميته مرحبا.
  4. تعيين Sub Main ككائن بدء التشغيل (ضمن خصائص المشروع).
  5. نسخ التعليمات البرمجية ل Visual Basic أعلاه ولصقه في الوحدة النمطية.
  6. جعل Hello.exe.
ملاحظات:
  • نموذج التعليمات البرمجية يوضح كيفية معالجة طلب HTTP POST. لمعالجة طلب GET، يجب تطبيق CGI أن استرداد متغير البيئة QUERY_STRING. المتغير QUERY_STRING يحتوي على زوج الاسم/القيمة مفصولة آند في التنسيق "الاسم = جو آند اللون = أحمر." لاحظ أنه يتم استخدام ترميز URL يتم تحويل كافة المسافات إلى +ويتم تحويل كافة الأحرف الخاصة مثل ! إلى قيمها ASCII ست عشري. بمعنى آخر، يتم تمثيل سلسلة "Hello, World!" ك "Hello + العالم % 21." يكون لتطبيقات CGI Visual Basic لتنفيذ كافة التعليمات البرمجية التحليل.
  • لأنه يتم بدء تشغيل تطبيق CGI بالخدمة، قد يتعذر الوصول إلى مشاركات شبكة الاتصال.
  • يجب أن تدرك أن CGI يعمل كخدمة، حيث يتصل مع الملقم. لذلك، واجهة مرئية النماذج وعناصر تحكم مربعات الرسائل لا معنى لها تماما. كما واقع الأمر، مربع رسالة يؤدي تطبيق CGI أن يتوقف عن الاستجابة.
  • وينبغي إجراء معالجة الأخطاء خلال رمز CGI في Visual Basic، حيث لا يتم عرض مربع رسالة خطأ الافتراضي. يمكنك تسجيل رسائل خطأ على الملقم أو كتابتها إلى مستعرض المستخدم.
  • يمكن تصحيح تصحيح visual C التطبيقات المكتوبة في Visual Basic. لذلك، يمكنك استخدام CGI تصحيح تقنيات المشار إليه أدناه. لتصحيح تطبيق Visual Basic مع Visual C, اختر التحويل البرمجي "التعليمات البرمجية الأصلية"، ومن ثم حدد إنشاء معلومات التصحيح رمزيوامثليه لا. عند اكتماله، ويتم إنشاء.exe، Visual C# إرفاق تطبيق CGI قيد التشغيل التي تم كتابتها ضمن Visual Basic.
  • لاختبار تطبيق CGI، نسخة إلى دليل ظاهري IIS مع أذونات التنفيذ.
  • يجب أن تدرك أن قد تتسبب أخطاء وقت التشغيل أو مربعات الحوار في التعليمات البرمجية Visual Basic تطبيق CGI أن يتوقف عن الاستجابة. إذا كان تطبيق CGI توقف عن الاستجابة، يمكن تشغيله في مصحح الأخطاء Visual Studio. للحصول على معلومات إضافية، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف ل Microsoft":
    238788 كيفية تصحيح تطبيقات CGI تشغيل ضمن IIS
مراجع
بروتوكول نقل نص تشعبي، RFC 2068
RFC 1738، محدد موقع المعلومات (URL).
238788 كيفية تصحيح تطبيقات CGI تشغيل ضمن IIS
207671 الوصول إلى ملفات الشبكة من تطبيقات IIS
iis

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 239588 - آخر مراجعة: 05/29/2013 23:23:00 - المراجعة: 1.0

ملقم معلومات إنترنت 3.0, Microsoft Internet Information Services 6.0

  • kbcgi kbinfo kbmt KB239588 KbMtar
تعليقات
"display: none; " src="https://c1.microsoft.com/c.gif?DI=4050&did=1&t=">html>ml>0&did=1&t=">