منتديات احمد سعيد عبده
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

الكائن Request- الجزء الأول

اذهب الى الأسفل

الكائن Request- الجزء الأول Empty الكائن Request- الجزء الأول

مُساهمة من طرف احمد سعيد الخميس أبريل 23, 2009 12:23 pm

الكائن Request- الجزء الأول
بسم الله الرحمن الرحيم

الكائن Request- الجزء الأول


سنتعرف في هذا الدرس بإذن الله على كائن جديد من الكائنات السبعة لـ ASP وهو الكائن Request، في الدرس الماضي تعرفنا على الكائن Response وكانت مسئوليته هي إرسال معلومات من الجهاز الخادم إلى متصفح المستخدم بالإضافة إلى إمكانيته للتحكم بطريقة عرض هذه المعلومات. فماذا عن الكائن الجديد Request؟!

الكائن Request يقوم بعكس ذلك ! فـ Request تعني " طلب " فإذاً مسئولية هذا الكائن هي الوصول للمعلومات التي يرسلها المستخدم لخادم الويب. مثلاً كالمعلومات التي يكتبها المستخدم في نموذج ما.

يعتبر هذا الكائن من أهم الكائنات التي يجب علينا معرفتها! وذلك لأنه يمكنك بواسطته أن تنشئ صفحات ويب ديناميكية ومتغيرة باستمرار وذلك تبعاً للقيم التي يدخلها المستخدم!! كإضافة حقول أو سجلات جديدة لقاعدة البيانات، أو البحث في قاعدة البيانات تبعاً لرغبة المستخدم !

حسناً، قبل البدء في شرح هذا الكائن بالتفصيل، أود أن أجعل صورة العلاقة بين خادم الويب و المتصفح ( تعبير دقيق أعني به جهاز المستخدم ) واضحة بالنسبة لك، وذلك بمثال بسيط جداً الكائن Request- الجزء الأول Smile:


أنظر معي لصفحة الويب هذه HTMLForm.htm :

الكائن Request- الجزء الأول Nmb

هذه الصفحة عبارة عن نموذج يطلب من المستخدم إدخال اسمه ثم الضغط على موافق حيث يؤدي ذلك إلى نقله للصفحة التالية hello.asp:

بعدها تظهر صفحة ترحيب بالمستخدم الذي أدخل اسمه في النموذج. هل تعلم ماذا حدث بالضبط؟!! أو بمعنى آخر ما الذي تم بين المستخدم والخادم في هذه العملية ؟!

العلاقة بين الخادم والمتصفح تتم بواسطة أحد برتوكولات حزمة TCP/IP وهو برتوكول HTTP الذي يعمل كالتالي:

* عندما كتب المستخدم عنوان صفحة النموذج في أعلى المتصفح وضغط على المفتاح " إنتر " وجه المتصفح طلباً من الخادم لعرض الصفحة HTMLForm/.

*يستقبل الخادم طلب المستخدم للصفحة HTMLForm/ والذي يستطيع أن يحدد منه نوع الطلب! .. هناك نوعين مشهورة و يطلق عليهما HTTP Request Types :


1- النوع الأول و هو النوع GET، هذا النوع يطلب من الخادم الوصول إلى معلومات بسيطة ملحقة مع عنوان الصفحة! ومن ثم يرسل الخادم استجابة لهذا الطلب للمتصفح لدى المستخدم.

2- أما النوع الثاني فهو النوع POST، هذا النوع يطلب من الخادم الوصول إلى المعلومات الموجودة في النموذج الموجود في الصفحة المطلوبة، ومن ثم يرسل الخادم استجابة لطلب المستخدم.


* بعد أن يستقبل الخادم طلب المستخدم ويحدد نوعه، يرسل الصفحة التي طلبها المستخدم إلى المتصفح لديه لعرضها وفي هذا المثال الصفحة المطلوبة هي: HTMLForm/.

* يستقبل المتصفح الصفحة المرسلة ويعرضها للمستخدم. هذه الصفحة عبارة عن نموذج يملأه المستخدم بالمعلومات المطلوبة وبعد الانتهاء يضغط على الزر "موافق".

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

* بعد أن يحصل الخادم على المعلومات الموجود في النموذج،تتم معالجة هذه المعلومات في الصفحة التي تستجيب للنموذج في هذا المثال هي الصفحة hello.asp والتي تقوم بعرض رسالة ترحيب تتضمن اسم المستخدم ، ومن ثم ترسل ناتج هذه المعالجة للمتصفح لدى المستخدم.

* سيستقبل المتصفح ناتج معالجة الصفحة hello.asp ليعرض رسالة الترحيب بالمستخدم!




الآن، وحتى هذه اللحظة، فإننا قد عرفنا عمل الكائن Request، وهي للتذكير، الوصول إلى المعلومات التي يدخلها المستخدم!

وعرفنا أيضاً بأن هناك طريقتين لإرسال المعلومات إلى الصفحة التي ستعالجها، وهي إما أن تكون المعلومات المدخلة ملحقة في عنوان الصفحة ( لا تقلق سنتعرف عليه بالتفصيل بعد قليل) و هذه هي الطريقة GET! ويتم الوصول لهذه المعلومات من عنوان الصفحة.

أو أن ترسل المعلومات المدخلة منفصلة عن عنوان الصفحة التي ستعالج هذه المعلومات، كما وضحّنا في المثال السابق، و هي تسمى بالطريقة POST. ويتم الوصول إلى هذه المعلومات من النموذج مباشرة.


ملاحظه

* يتم تحديد طريقة إرسال المعلومات المدخلة من قبل المستخدم، في نفس الصفحة التي تطلب من المستخدم إدخال المعلومات بها.(صفحة النموذج )

* طريقة إرسال المعلومات تحدد طريقة الوصول إليها من قبل الخادم!




.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^



السؤال الآن هو، كيف أستفيد من الكائن Request للوصول إلى المعلومات المدخلة باستخدام كلاً من الطريقتين السابقتين ؟!!

حسناً، تابع معي لنبدأ بالطريقة الأولى GET!!



Request.QueryString:

باستخدام عبارة Request.QueryString فإنك ستتمكن من جعل الخادم يصل للمعلومات المرسلة بواسطة الطريقة GET! حيث أن هذه المعلومات تكون ملحقة بعنوان صفحة ASP التي ستعالجها، فكيف نقوم بذلك؟!

لننشئ نموذج يطلب من المستخدم إدخال اسمه ، كما تعلمنا في دروس سابقة:

صفحة النموذج ستحتوي على الكود التالي:

........................................
<HTML>
<BODY>
<CENTER>
<FORM ACTION="UserInfo.asp" METHOD="GET">
<B>اسم المستخدم<BR><BR> <INPUT TYPE="text" NAME="Fname"><BR><BR></B>
<INPUT TYPE="submit" NAME="submit" VALUE=" موافق">
</FORM>
</CENTER>
</BODY>
</HTML>
........................................


لاحظ أننا قد حددنا طريقة إرسال المعلومات التي سيدخلها المستخدم في النموذج وهي الطريقة GET. وقد حددنا صفحة ASP التي ستصل للمعلومات المدخلة وتعالجها وهي الصفحة UserInfo.asp.

احفظ الصفحة بالاسم HTMLForm.htm .. والتي ستبدو كما في الشكل التالي:


الكائن Request- الجزء الأول Nbm1

والآن تبقى لدينا كتابة كود ASP للصفحة التي ستصل لمعلومات النموذج وهي الصفحة UserInfo.asp

بما أن الطريقة المستخدمة في النموذج هي GET، فإننا سنستخدم العبارة Request.QueryString حتى نصل للمعلومات المدخلة في النموذج.

سيكون كود ASP كالتالي:

...........................................
<%
Dim Name
Name=Request.QueryString("Fname")
Response.Write(" <CENTER><B>الاسم الذي أدخلته هو <BR>" & Name & "</B></CENTER>")
%>
..........................................


فقط ؟!!! .. نعم ! كل المطلوب كتابته للوصول لمعلومات النموذج المرسلة بواسطة الطريقة GET هو هذا الكود فقط ! ثم احفظ الصفحة بالاسم UserInfo.asp وستظهر النتيجة كالتالي:

الكائن Request- الجزء الأول Nbm2


لاحظ !!

لاحظ عنوان الصفحة UserInfo.asp !! ستجد بعد عنوان الصفحة علامة الاستفهام يليها اسم مربع النص في النموذج ثم علامة المساواة ثم القيمة المدخلة في مربع النص هذا! .. بمجرد أن ترى ذلك في عنوان الصفحة ستعلم أن الطريقة المستخدمة لإرسال معلومات النموذج للصفحة التي ستعالجها هي الطريقة GET وذلك لأن معلومات النموذج ملحقة بعنوان الصفحة!!


كيف يعمل هذا الكود؟!

* في البداية كتبنا أمر VB****** للإعلان عن المتغير Name

* ثم عيّنا قيمة لهذا المتغير وهي المضللة باللون الأخضر


حيث أن name هي اسم مربع النص الذي يحتوي على المعلومة المدخلة بواسطة المستخدم في النموذج. هذه العبارة تجعل الخادم يصل للقيمة التي أدخلها المستخدم في مربع النص Fname الموجود في النموذج من عنوان الصفحة وليس من النموذج مباشرة!

* كتبنا عبارة Response.Write التي تتضمن نص لعرضه في المتصفح بالإضافة إلى المتغير Name.
قد تكون حتى الآن مصّراً على أن الخادم وصل للمعلومة التي أدخلها المستخدم في النموذج من النموذج مباشرة وليس من عنوان الصفحة UserInfo.asp! هل هذا صحيح؟!!


حسناً، إليك مثال آخر سيقنعك إن شاء الله:

في هذا المثال لن ننشئ نموذج ولكن سننشئ الصفحة UserInfo.asp وسيكون الكود هو نفسه الكود السابق لهذه الصفحة.

.............................................
<%
Dim Name
Name=Request.QueryString("Fname")
Response.Write(" <CENTER><B>الاسم الذي أدخلته هو <BR>" & Name & "</B></CENTER>")
%>
.................................................


والآن افتح هذه الصفحة UserInfo.asp في متصفحك ستكون كالتالي عند فتحها :

الكائن Request- الجزء الأول Nbm3

أكتب بعد عنوان هذه الصفحة الظاهر في المتصفح العبارة التالية :

?Fname=Nora

كما في الشكل التالي:

الكائن Request- الجزء الأول Pic6_3


ثم اضغط على المفتاح " إنتر" بعد تضليل العنوان لتحصل على التالي:

الكائن Request- الجزء الأول Pic7_3

والآن قد أتضح الأمر بالنسبة لك! فنحن هنا لم نستخدم النموذج ومع ذلك استطعنا أن نصل للقيمة التي أدخلناها في العنوان، فهذا يدل على أن العبارة Request.QueryString تمكن الخادم من الوصول للقيمة المحددة من عنوان الصفحة وليس من النموذج مباشرة.

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




.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^


* يتيح لك الحرف & أن تدخل أكثر من متغير وأكثر من قيمة في العنوان كالتالي:

?Fname=Nora&Lname=Ahmed



* هذه المعلومات التي تضيفها للعنوان تسمى بالاستعلام.

* بإمكانك عرض الاستعلام الملحق بالعنوان كاملاً في صفحتك وذلك بالعبارة التالية فقط:


<%=Request.QueryString%>



وستبدو النتيجة كالتالي:

الكائن Request- الجزء الأول Oo1

* لو أخذنا صورة أخرى للنماذج وهي عبارة عن نموذج يحتوي على مربع اختيار، وليكن اختيار الدولة المفضلة لدى الشخص مثلاً، سنكتب صفحة HTML للنموذج كالتالي:

.................................................. .........................
<HTML>
<BODY>
<CENTER>
<B>حدد دول الخليج العربي التي قمت بزيارتها من قبل</B><BR>
<FORM ACTION="Country.asp" METHOD="GET">
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="17%" id="AutoNumber1">
<tr>
<td width="3%">
<INPUT TYPE="Checkbox" NAME="country" VALUE="المملكة العربية السعودية" CHECKED></td>
<td width="97%">المملكة العربية السعودية</td>
</tr>
<tr>
<td width="3%"><INPUT TYPE="Checkbox" NAME="country" VALUE=" البحرين" ></td>
<td width="97%">البحرين</td>
</tr>
<tr>
<td width="3%"><INPUT TYPE="Checkbox" NAME="country" VALUE=" الكويت" ></td>
<td width="97%">الكويت</td>
</tr>
<tr>
<td width="3%"><INPUT TYPE="Checkbox" NAME="country" VALUE=" قطر" ></td>
<td width="97%">قطر</td>
</tr>
<tr>
<td width="3%">
<INPUT TYPE="Checkbox" NAME="country" VALUE="الأمارات العربية المتحدة" ></td>
<td width="97%"><span lang="ar-sa">ا</span>لأمارات العربية المتحدة</td>
</tr>
<tr>
<td width="3%"><INPUT TYPE="Checkbox" NAME="country" VALUE=" عمان" ></td>
<td width="97%">عمان</td>
</tr>
<tr>
<td width="3%"><INPUT TYPE="Checkbox" NAME="country" VALUE=" اليمن" ></td>
<td width="97%">اليمن</td>
</tr>
</table>
<p>
<INPUT TYPE="submit" NAME="submit" VALUE=" موافق"><B><BR><BR></B>
</FORM>
</CENTER>
</BODY>
</HTML>
.................................................. .......................



حفظ الصفحة بالاسم countryForm.htm والتي ستبدو كما في الصورة:

الكائن Request- الجزء الأول Pic9_3

سنكتب صفحة ASP التي تعالج القيم التي يختارها المستخدم من النموذج ولتكن الصفحة بالاسم : country.asp كالتالي:

.................................................. ...
<%
Dim IndexNumber
IndexNumber=Request.QueryString("country")
Response.Write("<CENTER><B>مربع الخيار التي تم تحديدها في النموذج يشير إلى الدول التالية: " & IndexNumber & "</B></CENTER>")
%>
.................................................. ...


ستظهر النتيجة كالتالي:

الكائن Request- الجزء الأول Pic10_3


* ماذا لو أردت أن تظهر قيمة مربع خيار معين حسب تسلسل اختياره من قبل المستخدم فقط دون إظهار بقية المربعات المختارة الأخرى ؟!

فمثلاً في النموذج السابق تم اختيار المملكة العربية السعودية، البحرين، الكويت والأمارات العربية المتحدة والنتيجة قامت بعرض هذه الدول، أما الآن فأنا أريدها أن تعرض لي قيمة رابع مربع قمت باختياره فقط( وهو في المثال دولة الأمارات العربية المتحدة) دون أن تعرض قيمة بقية المربعات التي اخترتها !

ستلاحظ في النموذج بأن السمة NAME لكل مربع خيار في النموذج لها نفس القيمة وهي country. ولذا فإننا سنحتاج لرقم فهرس يحدد لي رقم كل مربع أقوم باختياره بترتيب متسلسل ففي مثالي السابق كانت أرقام الفهرس للمربعات التي اخترتها كالتالي:

المملكة العربية السعودية 1

البحرين 2

الكويت 3

الأمارات العربية المتحدة 4

وهكذا حسب اختياري للمربعات

إذاً كل ما احتاجه لعرض رابع مربع قمت باختياره هو تحديد الرقم 4 كرقم للفهرس، فقط قم بتغيير بسيط في الكود السابق كالتالي:

...........................................
<%
Dim IndexNumber
IndexNumber=Request.QueryString("country")(4)
Response.Write("<CENTER><B>مربع الخيار الرابع الذي تم تحديده في النموذج هو: " & IndexNumber & "</B></CENTER>")
%>
................................................



ستكون النتيجة مشابهه للصورة التالية:

الكائن Request- الجزء الأول Pic11_3

* باستطاعة الكائن Request الحصول على عدد المتغيرات في الاستعلام، فمثلاً لو أخذنا النموذج الذي يطلب اسم المستخدم الذي أنشأناه قبل قليل:

........................................
<HTML>
<BODY>
<CENTER>
<FORM ACTION="QueryNO.asp" METHOD="GET">
<B>اسم المستخدم<BR><BR> <INPUT TYPE="text" NAME="Fname"><BR><BR></B>
<INPUT TYPE="submit" NAME="submit" VALUE=" موافق">
</FORM>
</CENTER>
</BODY>
</HTML>
.........................................




لعد المتغيرات الموجودة في الاستعلام فإننا سنقوم بعمل صفحة ASP ولتكن QueryNO.asp وتحتوي على الكود التالي:

........................................
<%
Dim QueryNumber
QueryNumber=Request.QueryString.Count
Response.Write("<BR><CENTER><B>عدد المتغيرات في الاستعلام المرسل إلى الصفحة هي : " & QueryNumber & "</B></CENTER>")
%>
... ...................................


فالعبارة Request.QueryString.Count في الكود السابق تقوم بعد المتغيرات الموجودة في الاستعلام.

بعد تعبئة النموذج بالبيانات المطلوبة و الضغط على الزر موافق سأحصل على صفحة QueryNO.asp كالتالي:


الكائن Request- الجزء الأول Pic12_3

النتيجة هي متغيرين ! متغير عبارة عن اسم المستخدم ، والمتغير الثاني هو زر الإرسال " موافق "..



.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^



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

وبقي أن نتعرف على كيفية الوصول للمعلومات التي يرسلها المستخدم باستخدام الطريقة POST !!! ولكن بالطبع في درس جديد ! فيكفي ما تعلمناه اليوم الكائن Request- الجزء الأول Smile

تحيااتي لكم



احمد سعيد
احمد سعيد
المدير العام
المدير العام

ذكر عدد الرسائل : 350
العمر : 37
الموقع : https://ahmedsaid.yoo7.com
العمل/الترفيه : الرياضة
المزاج : تمام
تاريخ التسجيل : 02/04/2008

https://ahmedsaid.yoo7.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة

- مواضيع مماثلة

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