محاضرة ASP 2: قراءة البيانات المرسلة عبر النماذج
الكاتب:Eve Cole
وقت التحديث:2009-05-30 19:58:19
أهم شيء لتعلم ASP هو إتقان الكائنات الستة المضمنة في ASP. في الواقع، في المحاضرة السابقة، تعلمنا بالفعل عن كائن الاستجابة (حقًا؟ هل ارتكبت خطأ!)، وطريقة الكتابة الأكثر استخدامًا، وطريقة إعادة التوجيه، وخاصية انتهاء الصلاحية في كائن الاستجابة. عندما ترى مفاهيم الأشياء والأساليب والخصائص والمجموعات والأحداث (لا أعرف أيًا منها!)، إذا لم تتعرض لها من قبل، فأنت ذكي ولا تهتم بهذه المفاهيم. فقط أعرف كيفية استخدامها. وجهة نظري هي أن هذه مجرد البداية. دعونا نستمر في تعلم كائن الطلب من خلال الأمثلة، لتعميق فهمنا، يرجى تشغيل هذه البرامج لرؤية نتائج الإخراج.
1. استخدم Request.ServerVariables للحصول على متغيرات البيئة. هذا الجزء بسيط جدًا، ولكن المحتوى الذي تم الحصول عليه مهم جدًا. يرجى الاطلاع على المثال التالي:
<%@ اللغة=VBScript %>
<HTML><الجسم>
<% 'wuf8.asp
الاستجابة.اكتب "مسار تشغيل ملف ASP:" &_
Request.ServerVariables("Script_Name") و"<Br>"
Response.اكتب "إرجاع طول بيانات المحتوى: " &_
Request.ServerVariables("Content_Length") و"<Br>"
Response.اكتب "أعد عنوان IP الخاص بالعميل: " &_
Request.ServerVariables("Remote_Addr") و"<Br>"
الاستجابة.اكتب "اسم المتصفح:" &_
Request.ServerVariables("HTTP_USER_AGENT") و"<Br>"
Response.اكتب "العودة إلى المسار الفعلي الفعلي للصفحة الرئيسية: " &_
Request.ServerVariables("APPL_PHYSICAL_PATH") و"<Br>"
%>
<جدول colspan=8 cellpadding=5 حدود=0>
<تر>
<td align=CENTER bgcolor="#800000" width="109"> <font style="ARIAL NARROW" color="#ffffff" size="2">اسم متغير البيئة</font></td>
<td align=CENTER width=459 bgcolor="#800000"> <font style="ARIAL NARROW" color="#ffffff" size="2">المحتوى</font></td>
</tr>
<تر>
<td bgcolor = "f7efde" align = CENTER> <font style = "ARIAL NARROW" size = "2">
النتيجة1
</font></td>
<td bgcolor = "f7efde" align = CENTER> <font style = "ARIAL NARROW" size = "2">
النتيجة2
</font></td></tr>
</الجدول>
</BODY></HTML>
الآن، يجب أن تكتشف مدى سهولة روتين wuf2.asp في المحاضرة السابقة!
ملاحظة: إن ترميز HTML الموجود في الجزء الأخير من هذا البرنامج هو مجرد تحضير للمثال التالي، لذا لا تتفاجأ. إذًا، ما هي متغيرات البيئة الأخرى الموجودة؟ ستعرف من خلال تشغيل المثال التالي (هذا البرنامج قام بحذف بعض الأكواد، من الأفضل تنزيل البرنامج المصدر من موقعي لتسهيل الفهم).
<%@ اللغة=VBScript %>
<% 'wuf9.asp
الخيار صريح
خافت سيفرت
%>
<HTML><الجسم>
<جدول colspan=8 cellpadding=5 حدود=0>
<تر>
<td align=CENTER bgcolor="#800000" width="109"> <font style="ARIAL NARROW" color="#ffffff" size="2">اسم متغير البيئة</font></td>
<td align=CENTER width=459 bgcolor="#800000"> <font style="ARIAL NARROW" color="#ffffff" size="2">النتائج</font></td>
</tr>
<%
لكل Sv في Request.ServerVariables
الاستجابة.اكتب "<tr>"
Response.Write "<td bgcolor='f7efde' align=CENTER> <font style='ARIAL NARROW' size='2'>"
الاستجابة.اكتب سيفرت
الرد.اكتب "</font></td>"
Response.Write "<td bgcolor='f7efde' align=CENTER> <font style='ARIAL NARROW' size='2'>"
استجابة.كتابة الطلب.متغيرات الخادم (Sv)
الرد.اكتب "</font></td></tr>"
التالي
%>
</الجدول>
</BODY></HTML>
A For... يتم استخدام كل حلقة هنا لسرد كافة العناصر الموجودة في المجموعة. إذا لم تفهم النصف الثاني، فيرجى مقارنة wuf8.asp وإلقاء نظرة على نتائج التشغيل وفهمها بعناية (ما هو موقفك؟).
2. نقل البيانات إلى الخادم من خلال النموذج (يمكن فهم ذلك أيضًا على أنه كيفية قراءة الخادم للبيانات المرسلة من قبل العميل)
إذا كنت قد عملت على صفحة رئيسية، فيجب أن تعلم أن العديد من الصفحات الرئيسية تستخدم عادةً نماذج النماذج للسماح للمستخدمين بإدخال البيانات، ثم إرسال البيانات من خلال زر "إرسال". يحتوي "الأسلوب" في النموذج على طريقتين رئيسيتين: POST وGET. بعد "الإجراء"، يتم تحديد ملف .cgi أو .pl أو .asp عادةً. ما سنتعلمه اليوم هو كيفية كتابة ملف .asp هذا ملف.
(1) إذا كنت تستخدم طريقة POST لإرسال البيانات، فاستخدم Request.Form لقراءة البيانات.
قم أولاً بتحرير ملف wuf10.htm التالي ليتمكن المستخدمون من إدخال البيانات:
<أتش تي أم أل>
<body bgcolor="#FFFFFF">
<طريقة النموذج = "post" action = "wuf11.asp">
الاسم: <input type="text" name="yourname"><br>
الجنس: <اختر الاسم = "الجنس">
<الخيار>ذكر</option>
<الخيار>أنثى</option>
</اختر> <br>
الرسالة: <textarea name="message">مرحبًا!
انتبه إلى معالجة النص متعدد الأسطر</textarea> <br>
الهوايات (اضغط باستمرار على مفتاح Ctrl لتحديد عدة):
<حدد اسم = "هواية" حجم متعدد = "4">
<خيار>الكمبيوتر</option>
<option>التسوق</option>
<option>أفلام</option>
<خيار>القراءة</option>
</اختر> <br>
<نوع الإدخال = "إرسال" الاسم = "إرسال" القيمة = "إرسال">
<نوع الإدخال = "إعادة تعيين" اسم = "إرسال 2" القيمة = "إعادة تعيين">
</النموذج>
</الجسم>
</html>
ثم اكتب ملف wuf11.asp الذي يحتاج wuf10.htm إلى استخدامه لجمع البيانات:
<%@ اللغة=VBScript %>
<% 'wuf11.asp
الخيار صريح
الاستجابة.انتهاء الصلاحية=0
خافت StrName، StrGender، StrM، StrMsg
StrName = Trim(Request.Form("yourname")) 'يتم استخدام وظيفة القطع لإزالة المسافات البادئة والزائدة
StrGender = Trim(Request.Form("gender"))
StrM = Trim(Request.Form("message"))
StrMsg = استبدال (StrM,vbcrlf،"<Br>" & vbcrlf)
'vbcrlf يعادل مجموعة إرجاع السطر وتغذية السطر. أما بالنسبة لوظيفة الاستبدال، فوظيفتها هي استبدال vbcrlf في السلسلة StrM بـ "<Br>" & vbcrlf (يرجى التفكير في استخدام vbcrlf هذا؟ ستفهمه من خلال النظر إلى كود مصدر HTML لملف الإخراج) الرجاء الرجوع إلى تعليمات VBScript للحصول على التفاصيل.
%>
<HTML><الجسم>
الاسم: <%= StrName%><Br><Br>
الجنس: <%= StrGender%><Br><Br>
الرسالة: <br><br>
<%= StrM%><Br><Br>
<%= StrMsg%><Br><Br>
في الواقع، تم أيضًا تمرير قيمة الزر "إرسال": <Br>
<%= Request.Form("إرسال")%><Br><Br>
<% 'افهم أولاً ما ورد أعلاه، ثم تعرف على كيفية قراءة الخيارات المتعددة إذا كنت مهتمًا
Response.اكتب "إجمالي عدد الهوايات المحددة:" & Request.Form("hobby").Count & "<Br>"
خافت أنا
لأني = 1 إلى Request.Form("hobby").Count
Response.Write Request.Form("hobby")(I) و"<Br>"
التالي
%>
</BODY></HTML>
في هذا المثال، لسهولة الفهم، نستخدم برنامجين. في الواقع، يمكنك أيضًا استخدام برنامج واحد فقط. إذا كنت مهتمًا، يرجى الاطلاع على الروتين التالي wuf12.asp، والذي سيساعد على تعميق فهمك لمتغيرات البيئة.
<%@ اللغة=VBScript %>
<% 'wuf12.asp
الخيار صريح
الاستجابة.انتهاء الصلاحية=0
خافت StrName، StrGender، StrM، StrMsg
إذا Request.ServerVariables("Content_Length") <> 0 إذن
'بعد إرسال البيانات، لن يكون الطول 0، لذا قم بتنفيذ العبارة التالية لعرض النتيجة
'تم نسخ الجزء التالي بالفعل من wuf11.asp
StrName = Trim(Request.Form("اسمك"))
StrGender = Trim(Request.Form("gender"))
StrM = Trim(Request.Form("message"))
StrMsg = استبدال (StrM,vbcrlf،"<Br>" & vbcrlf)
%>
<HTML><الجسم>
الاسم: <%= StrName%><Br><Br>
الجنس: <%= StrGender%><Br><Br>
الرسالة: <br><br>
<%= StrM%><Br><Br>
<%= StrMsg%><Br><Br>
<%
Response.اكتب "إجمالي عدد الهوايات المحددة:" & Request.Form("hobby").Count & "<Br>"
خافت أنا
لأني = 1 إلى Request.Form("hobby").Count
Response.Write Request.Form("hobby")(I) و"<Br>"
التالي
%>
</BODY></HTML>
<%
آخر
'عند تحميل الصفحة لأول مرة لا يتم تقديم أي بيانات، وبالتالي لا يتم تنفيذ الجزء السابق، بل يبدأ من هنا
'وهذا هو سبب وجود زوجين من <HTML></HTML>
'فقط انسخ wuf10.htm أدناه.
تم استبدال <form Method="post" action="wuf11.asp"> بمتغيرات البيئة، ولكنه هو نفسه تمامًا
Response.Write "انظر إلى النتائج:" & Request.ServerVariables("Script_name") & "<Br>"
%>
<HTML><الجسم>
<form Method="post" action="<%= Request.ServerVariables("Script_name")%>">
الاسم: <input type="text" name="yourname"><br>
الجنس: <اختر الاسم = "الجنس">
<الخيار>ذكر</option>
<الخيار>أنثى</option>
</اختر> <br>
الرسالة: <textarea name="message">مرحبًا!
انتبه إلى معالجة النص متعدد الأسطر</textarea> <br>
الهوايات (اضغط باستمرار على مفتاح Ctrl لتحديد عدة):
<حدد اسم = "هواية" حجم متعدد = "4">
<خيار>الكمبيوتر</option>
<option>التسوق</option>
<option>أفلام</option>
<خيار>القراءة</option>
</اختر> <br>
<نوع الإدخال = "إرسال" الاسم = "إرسال" القيمة = "إرسال">
<نوع الإدخال = "إعادة تعيين" اسم = "إرسال 2" القيمة = "إعادة تعيين">
</النموذج>
</BODY></HTML>
<%النهاية إذا%>
(2) إذا كنت تستخدم طريقة GET لإرسال البيانات، فاستخدم Request.Querystring لقراءة البيانات.
قم أولاً بتحرير ملف wuf13.htm التالي ليتمكن المستخدمون من إدخال البيانات:
<أتش تي أم أل>
<body bgcolor="#FFFFFF">
<طريقة النموذج = "الحصول على" الإجراء = "wuf14.asp">
الاسم باللغة الإنجليزية: <input type = "text" name = "Ename"> <br>
الاسم الصيني: <نوع الإدخال = "نص" اسم = "Cname"> <br>
الجنس: <اختر الاسم = "الجنس">
<الخيار>ذكر</option>
<الخيار>أنثى</option>
</اختر> <br>
<نوع الإدخال = "إرسال" الاسم = "إرسال" القيمة = "إرسال">
<نوع الإدخال = "إعادة تعيين" اسم = "إرسال 2" القيمة = "إعادة تعيين">
</النموذج>
</الجسم>
</html>
ثم اكتب ملف wuf14.asp الذي يحتاج wuf13.htm إلى استخدامه لجمع البيانات:
<%@ اللغة=VBScript %>
<% 'wuf14.asp
الخيار صريح
الاستجابة.انتهاء الصلاحية=0
خافت StrCname، StrEname، StrGender
StrEname = Trim(Request.QueryString("Ename")) 'يتم استخدام وظيفة القطع لإزالة المسافات البادئة والزائدة
StrCname = Trim(Request.QueryString("Cname"))
StrGender = Trim(Request.QueryString("gender"))
%>
<HTML><الجسم>
الاسم باللغة الإنجليزية: <%= StrEname%><Br><Br>
الاسم الصيني: <%= StrCname%><Br><Br>
الجنس: <%= StrGender%><Br><Br>
ألق نظرة على السلسلة المقدمة: <Br>
<%= Request.ServerVariables("Query_String")%>
</BODY></HTML>
من أجل فهم هذا البرنامج بشكل أفضل، من الأفضل تجربة تأثير الروتين wuf13.htm في المتصفح أولاً، وإلقاء نظرة على نتائج الإخراج، وستجد أن السلسلة الطويلة في شريط العناوين تبدو مألوفة، تمامًا مثل متى البحث على Yahoo Seen هو نفسه إلى حد كبير. في هذا الوقت، تحاول إدخال "http://localhost/wuf14.asp?Ename=Rose&Cname=李二&gender=female" مباشرة في شريط العناوين، وتحصل على نفس النتيجة. لذلك يمكنك رؤية الأمر بهذه الطريقة، نتيجة wuf13.htm هي الحصول على رابط بمعلمات مثل هذه. يقرأ Request.QueryString كل البيانات من المعلمات الإضافية لعنوان http://.
في الواقع، عند الضغط على زر "إرسال"، سيتم إلحاق سلسلة الاستعلام (بيانات الإدخال) بعنوان URL في شكل معلمات (يتم فصل كل معلمة بواسطة "&") لتحقيق غرض نقل البيانات. في الوقت نفسه، يرجى ملاحظة أنه لا توجد لغة صينية في سلسلة الاستعلام المعروضة في المتصفح، ولكن هناك أحرف مشوهة لا يمكن التعرف عليها وتحتوي على علامات النسبة المئوية، وذلك لأنها مشفرة. أخيرًا، كما كان من قبل، يمكن أيضًا دمج هذين البرنامجين في برنامج واحد (روتين wuf15.asp، تحتاج إلى تنزيله من موقعي).
بعض الملاحظات:
1. إذا كنت تستخدم طريقة POST لإرسال البيانات، فإن Request.ServerVariables("Content_Length")>0.
إذا كنت تستخدم طريقة GET لإرسال البيانات، فإن Request.ServerVariables("Query_String") <> "".
2. بعد فهم المبدأ، يمكنك مزج Request.Form وRequest.QueryString في نفس ملف ASP.
3. إذا كان هناك عدة أزرار في النموذج، فكيف يمكنك تحديد الزر الذي ضغط عليه المستخدم؟ إذا انتبهت، فستجد أن هناك جملة في wuf11.asp الروتينية يتم فيها إرسال قيمة زر "إرسال" أيضًا، ويمكن العثور على قيمة مماثلة في سلسلة الاستعلام التي تم إنشاؤها في wuf13.htm. يرجى ملاحظة: يتم نقل قيمة الزر الذي تم الضغط عليه فقط، في حين أن قيمة الأزرار الأخرى هي "". وهذا هو أساس الحكم ("يحتوي موقع InfoWeb على أخبار التخطيط الصينية على مقالة مماثلة).