تعد قيم ملفات تعريف الارتباط أكثر تعقيدًا من قيم مجموعات ASP الأخرى مثل Form وServerVariables. ملف تعريف الارتباط هو جزء صغير من النص يتم تخزينه على نظام العميل بواسطة المتصفح ويتم إرساله مع كل طلب إلى الخادم في المجال الذي تنطبق عليه.
يسهل ASP تطبيق ملفات تعريف الارتباط، ويمكنك الحصول على جميع قيم ملفات تعريف الارتباط المرسلة مع الطلب من مجموعة ملفات تعريف الارتباط لكائن الطلب، ويمكنك إنشاء ملفات تعريف الارتباط أو تعديلها وإرسالها مرة أخرى إلى المستخدم من خلال مجموعة ملفات تعريف الارتباط الخاصة بالاستجابة. هدف.
تحتوي ملفات تعريف الارتباط على معلومات يمكن إنشاؤها بطريقتين. توفر ملفات تعريف الارتباط ذات القيمة الواحدة قيمها للترميز من خلال مجموعة عامة تشبه ASP. ومع ذلك، قد يكون كل عضو في المجموعة في حد ذاته مجموعة، وتسمى ملفات تعريف الارتباط التي تحتوي على هذه المعلومات بملفات تعريف الارتباط متعددة القيم.
يعد إنشاء ملف تعريف ارتباط ذو قيمة واحدة أمرًا بسيطًا نسبيًا، كما يلي:
Response.Cookies("item-name") = "item-value"
لإنشاء ملف تعريف ارتباط متعدد القيم، يمكنك استخدام الأمر التالي:
Response.Cookies("item" -name" )("sub-item-name") = "sub-item-value"
تحدد المجال ومسار تطبيق ملف تعريف الارتباط وفترة صلاحيته. نستخدم:
Response.Cookies("item-name").domain = "عنوان URL للمجال"
Response.Cookies("اسم العنصر").path = "المسار الظاهري"
Response.Cookies("item-name").expires = #date#
عادةً، يرسل العميل ملف تعريف الارتباط إلى الخادم فقط مع الطلب عند تقديم طلب لصفحة في الدليل حيث تم إنشاء ملف تعريف الارتباط. من خلال تحديد سمة المسار، يمكنك تحديد المكان الذي يكون فيه ملف تعريف الارتباط صالحًا في الموقع وسيتم إرسال ملف تعريف الارتباط مع الطلب. إذا تم إرسال ملف تعريف الارتباط مع طلبات الصفحة للموقع بأكمله، فاضبط المسار على "/".
إذا لم يتم تعيين سمة انتهاء الصلاحية، فسيتم حذف ملف تعريف الارتباط تلقائيًا عند إغلاق مثيل المتصفح الحالي.
لاحظ أنه تم إنشاء ملف تعريف الارتباط بالفعل عندما نرسل أي مخرجات إلى المتصفح. لأن ملفات تعريف الارتباط هذه جزء من رأس HTTP الخاص بالصفحة.
في ASP 3.0، تكون الحالة الافتراضية للتخزين المؤقت قيد التشغيل، ولا يتم إرسال أي مخرجات إلا إذا تم استخدام Response.Flush لتحديد ذلك أو وصلت الصفحة إلى النهاية. وهذا يعني أن التعليمات البرمجية التي تنشئ ملف تعريف الارتباط يمكن أن تكون في أي مكان على الصفحة، ويمكن تنفيذها حتى يتم "مسح" أي مخرجات إلى العميل.
لقراءة ملفات تعريف الارتباط الموجودة، استخدم مجموعة Request.Cookies. يمكن الوصول إلى العناصر الموجودة بشكل فردي، على غرار الطريقة المستخدمة في إنشائها.
StrSingleValue = Request.Cookies("اسم العنصر")
StrSubItemValue = Request.Cookies("item-name")("sub-item-name")
لاحظ أن مجموعة Request.Cookies (مثل كافة مجموعات الطلبات الأخرى) للقراءة فقط. مجموعة Response.Cookies مخصصة للكتابة فقط، وفي الواقع، يمكنك الوصول إلى أسماء سلسلة من ملفات تعريف الارتباط في هذه المجموعة، ولكن ليس إلى قيمها.
اجتياز مجموعة ملفات تعريف الارتباط
لاستخدام مجموعة ملفات تعريف الارتباط بسهولة أكبر، يمكنك استخدام السمة الإضافية المسماة Haskeys. إذا كان ملف تعريف الارتباط الذي تم الوصول إليه عبارة عن مجموعة في حد ذاته، أي أنه ملف تعريف ارتباط متعدد القيم، فسيؤدي ذلك إلى إرجاع True. باستخدام خاصية Haskeys، يمكنك التكرار من خلال مجموعة Request.Cookies الكاملة للحصول على قائمة بجميع ملفات تعريف الارتباط وقيمها.
لكل كائن في الطلب.ملفات تعريف الارتباط
إذا كان Request.Cookies(objItem).HasKey إذن
'استخدم "لكل" آخر لتكرار كافة المفاتيح الفرعية
لكل objItemKey في Request.Cookies(objItem)
Response.Write objItem & "(" & objItemKey & ") = "_
& Request.Cookies(objItem)(objItemKey) و"<BR>"
التالي
آخر
"اطبع سلسلة ملفات تعريف الارتباط كالمعتاد."
Response.Write objItem & "=" & Request.Cookies(objItem) & "<BR>"
نهاية إذا
Nextهذا
مشابه جدًا للكود المعقد السابق الذي يستخرج قيمًا متعددة من مجموعة Request.Form. ولكن يمكنك استخدام خاصية Haskeys هنا لتحديد ما إذا كان كل إدخال يمثل مجموعة أم لا. في مثال النموذج، يجب الاستعلام عن الخاصية Request.Form(item_name).Count لأن أعضاء مجموعة النماذج (وكافة المجموعات الأخرى باستثناء ملفات تعريف الارتباط) لا يمكن أن يكونوا مجموعات حقيقية. يقوم ASP فقط بعمل "وراء الكواليس" ويحصل على قيمة كل مجموعة متعددة الإدخالات.
الاختلافات بين النموذج وسلسلة الاستعلام
بعد فهم تقنيات الوصول إلى مجموعات ASP المختلفة، يجب حل سؤال آخر: ما الفرق بين مجموعات النموذج وسلسلة الاستعلام؟ إذا كنت ستستخدم ASP، فلا شك أنك يجب أن تكون على دراية بهذا الاختلاف، ولكن عليك الرجوع إلى الطريقة التي يعمل بها HTTP لإعادة فهمها وفهمها.
هناك طريقتان عامتان لطلب صفحة أو مورد آخر من خادم الويب عبر HTTP. يمكنك استخدام أسلوب GET للحصول على المورد مباشرة، أو يمكنك استخدام POST لتمرير القيمة إلى المورد المقابل. طريقة GET هي الطريقة الافتراضية. يمكنك الاطلاع على مثال لطلب HTTP سابقًا في هذا الفصل:
7/8/99 10:27:16 تم إرسال GET /Store/Download.asp HTTP/1.1
إذا قمت بوضع واحد أو أكثر مقترنًا. الأسماء عندما يتم إلحاق القيمة / بعنوان URL للصفحة المطلوبة، فإنها تصبح سلسلة الاستعلام المطلوبة ويتم توفيرها لصفحة ASP في مجموعة QueryString. النقر فوق ارتباط تشعبي على صفحة ويب، أو رسالة بريد إلكتروني، أو أي مستند آخر، أو إدخال العنوان في شريط عنوان المتصفح والضغط على Enter، أو النقر فوق الزر Links أو Favorites في المتصفح، كلها تستخدم طريقة GET.
ولذلك، فإن الطريقة الوحيدة لتمرير القيم إلى ASP في هذه الإجراءات هي من خلال مجموعة QueryString، وإلحاق القيم بعنوان URL.
تعمل القيم التي تظهر في مجموعة Request.QueryString والتي يتم الوصول إليها بنفس طريقة عمل مثيل مجموعة النماذج الذي رأيناه سابقًا. مزيج من عنوان URL وسلسلة الاستعلام:
http://mysite.com/process_page.asp?FirstName=Priscilla&LastName=Descartes
يمكن الوصول إلى القيمة المقدمة في مجموعة QueryString على النحو التالي:
strFirstName = Request.QueryString("FirstName") 'Return "بريسيلا"
strLastName = Request.QueryString("LastName") 'إرجاع "ديكارت"
strRaw = Request.QueryString
'إرجاع "FirstName=Priscilla&LastName=Descartes"
أساليب GET وPOST للنموذج.
عند استخدام مقطع <FORM> في الصفحة، يمكنك تعيين قيمة سمة METHOD لعلامة FORM المفتوحة إلى "GET" أو "POST". القيمة الافتراضية هي "GET". إذا تم استخدام "GET" أو تم حذف السمة الخاصة به، فإن المتصفح يربط هذه القيمة بجميع عناصر التحكم الموجودة على الصفحة، ويصبح سلسلة استعلام، ويتم إرفاقه بعنوان URL الخاص بالصفحة المطلوبة.
عندما يصل هذا الطلب إلى خادم الويب، يتم توفير قيمته من خلال مجموعة Request.QueryString الخاصة بـ ASP. ومع ذلك، إذا قمت بتعيين سمة METHOD إلى "POST"، يقوم المستعرض بتغليف القيمة في رأس HTTP الخاص بالخادم المرسل ويوفرها لـ ASP من خلال مجموعة Request.Form.
بالمناسبة، يمكن استخدام طريقة POST في جميع نماذج HTML. ومع ذلك، هناك بعض القيود على طول سلسلة عنوان URL للمتصفح أو الخادم. لذلك، قد يؤدي إلحاق سلاسل طويلة إلى تجاوز السعة واقتطاع بعض أحرف السلسلة. وفي الوقت نفسه، تظهر سلسلة الاستعلام في شريط عنوان المتصفح وفي جميع الروابط والمفضلة المحفوظة. ليس هذا فحسب، بل إنه يكشف أيضًا عن قيم غير مرغوب فيها في طلب HTTP عند المرور عبر خادم الويب، وقد تظهر أيضًا في ملفات السجل الخاصة بخادمك وخوادم التوجيه الأخرى. نادرًا ما تكون القيم الموجودة في رؤوس طلبات HTTP مرئية ولا تظهر في ملفات السجل.
هناك مشكلة صغيرة يجب ملاحظتها عند استخدام طريقة POST وهي أنه عندما يقوم المستخدم بإعادة تنزيل <FORM>، لم يعد يتم الاحتفاظ بقيم النموذج وتكون قيمها فارغة ويجب إعادة إدخالها. ومع ذلك، عند إرفاقها بعنوان URL، يتم تخزين القيمة كرابط وسيتم الاحتفاظ بها وبالتالي ستظهر في جميع الطلبات التي يتم فيها دمج عنوان URL مع السلسلة. قد يكون هذا ميزة أو عيبًا اعتمادًا على التطبيق (بعض المتصفحات يمكنه الاحتفاظ تلقائيًا بالقيم الموجودة على صفحة ضمن نطاق معين على العميل).
هناك نقطة أخرى وهي أن الجمع بين عنوان URL وسلسلة الاستعلام لا يمكن أن يحتوي على أي مسافات أو أحرف أخرى غير قانونية، وإلا فسيواجه Navigator وبعض المتصفحات الأخرى مشكلات. الأحرف غير القانونية هي تلك المستخدمة للفصل بين عنوان URL وسلسلة الاستعلام، مثل "/"، و"":، و"؟"، و"&" (يمكن لـ IE تحويل المسافات تلقائيًا إلى التنسيق الصحيح - علامة الجمع "+"، ولكن لا يمكن معالجة الأحرف غير القانونية الأخرى)
استخدام ملفات تعريف الارتباط في ASP
سنتعلم في هذا القسم التقنيات المختلفة التي توفر المجموعات والأساليب والخصائص للاستخدام بواسطة تعليمات ASP البرمجية.
1) يتم تخزين تفاصيل المستخدم في ملفات تعريف الارتباط.
يمكن استخدام ملفات تعريف الارتباط لتخزين نوعين من القيم: القيم التي لا نريد حفظها عند إغلاق المتصفح (مثل معلومات تسجيل المستخدم) والقيم التي نريد حفظها. الاحتفاظ بها عند زيارة المستخدم للموقع. وفي كل حالة، تكون قيمة ملف تعريف الارتباط متاحة لـ ASP لكل طلب صفحة من متصفح المستخدم.
ومع ذلك، عليك أن تتذكر أنه لن يتم إرسال ملف تعريف الارتباط إلى الخادم إلا عند تقديم طلب لصفحة داخل المسار الظاهري (المسار) في ملف تعريف الارتباط. افتراضيًا، إذا لم يتم تعيين قيمة المسار في ملف تعريف الارتباط، فستكون قيمته هي المسار الظاهري للصفحة التي أنشأت ملف تعريف الارتباط. لكي يتم إرسال ملف تعريف الارتباط إلى جميع صفحات الموقع، يجب استخدام المسار = "/".
فيما يلي مثال. من صفحة تسجيل الدخول المخصصة، يتم تخزين معلومات تسجيل المستخدم في ملف تعريف الارتباط نظرًا لعدم وجود فترة صلاحية للتطبيق، يتم الاحتفاظ بقيمة ملف تعريف الارتباط فقط حتى يتم إغلاق المتصفح:
...
Request.Cookies("User")("UID") = "<% = Request("اسم المستخدم") %>"
Request.Cookies("المستخدم")("PWD") = "<% = طلب("كلمة المرور") %>"
Request.Cookies("User").Path = "/adminstuff" 'ينطبق فقط على صفحات الإدارة
...
سيتم الآن العثور على ملف تعريف الارتباط هذا في كل صفحة يطلبها المستخدم من دليل adminstuff أو أدلةه الفرعية. إذا لم يكن موجودًا، فيمكنك إعادة توجيه المستخدم إلى صفحة التسجيل:
If (Request.Cookies("User")("UID") <> "alexhomer") _
أو (Request.Cookies("User")("PWD") <> "secret") ثم
Response.Redirect "login.asp?UserName=" & Request.Cookies("User")("UID")
نهاية إذا
...
نظرًا لأن اسم المستخدم الموجود في ملف تعريف الارتباط موضوع في سلسلة استعلام URL الخاصة بـ Response.Redirect، إذا حدث خطأ عند إدخال كلمة المرور وتريد ألا يضطر المستخدم إلى إعادة كتابة اسم المستخدم، فيمكنك استخدامه في تسجيل الدخول. صفحة asp:
<FORM ACTION=”check_user.asp” METHOD=”POST”>
<نوع الإدخال=”نص” اسم=”اسم المستخدم”
VALUE=”<% = Request.QueryString(“اسم المستخدم”) %>”><P>
<نوع الإدخال=”إرسال” القيمة=”تسجيل الدخول”>
</FORM>
2) تعديل ملفات تعريف الارتباط الموجودة
يمكنك استخدام ASP لتعديل ملفات تعريف الارتباط الموجودة، ولكن لا يمكنك تعديل قيمة واحدة فقط في ملف تعريف الارتباط. عند تحديث ملف تعريف الارتباط في مجموعة Response.Cookies، سيتم فقدان القيمة الحالية. يمكننا إنشاء ملف تعريف ارتباط بالرمز التالي، والذي يمكن استخدامه:
Response.Cookies("VisitCount")("StartDate") = dtmStart
Response.Cookies("VisitCount")("LastDate") = الآن
Response.Cookies("VisitCount")("الزيارات") = CStr(intVisits)
Response.Cookies("VisitCount").Path = "/" 'تنطبق على الموقع بأكمله
Response.Cookies("VisitCount").Expires = DateAdd("m",3,Now)
إذا كنت ترغب في تحديث قيم الزيارات وLastDate، فيجب عليك أولاً عدم تغيير جميع القيم، ثم إعادة كتابة ملف تعريف الارتباط بالكامل :
datDtart = Response .Cookies("VisitCount")("StartDate")
intVisits = Response.Cookies("VisitCount")("الزيارات")
Response.Cookies("VisitCount")("StartDate") = dtmStart
Response.Cookies("VisitCount")("LastDate") = الآن
Response.Cookies("VisitCount")("الزيارات") = Cstr(intVisits)
Response.Cookies("VisitCount").المسار = "/"
Response.Cookies("VisitCount").Expires = DateADD("m",3,Now + 1) وكما هو الحال مع جميع أساليب وخصائص الاستجابة الأخرى تقريبًا، يجب القيام بذلك قبل كتابة أي شيء (أي فتح علامة <HTML> أو أي نص أو HTML آخر) للرد.