موصى به: حلل الاستعلام المتعدد ASP غالبًا ما نواجه مشاكل في استعلام متعددة ، وغالبًا ما تجعل عبارات SQL طويلة الرهبان مرتبكين. خاصة عندما يملأ جزء العميل ظروف الاستعلام ، سيكون من الصعب استخدام الطرق العادية. يستخدم ما يلي بذكاء هوية مكان 1 = 1 (في الواقع ، إنه كثير ، فقط اترك قيمة حقيقية) لحل هذه المشكلة. ملخص النص "معلومات الموضوع"
كيفية الحد من التقديمات المتكررة المتعددة في ASP؟ على الإنترنت ، نواجه أشكالًا لا حصر لها كل يوم ، ونرى أيضًا أن معظمهم لا يمنع المستخدمون من تقديم نفس النموذج عدة مرات. يمكن أن يؤدي عدم وجود هذه القيود في بعض الأحيان إلى تحقيق بعض النتائج غير المتوقعة ، مثل الاشتراك المكررة في خدمات البريد الإلكتروني أو التصويت المكرر.
تصف هذه المقالة طريقة بسيطة لمنع المستخدمين من إرسال نفس النموذج عدة مرات خلال الجلسة الحالية في تطبيق ASP. وهو يتكون أساسا من أربع برامج فرعية. في التطبيقات البسيطة ، تحتاج فقط إلى وضع هذه الرموز في الملف وتضمين الاقتباس مباشرة ؛ بالنسبة لتلك البيئات الأكثر تعقيدًا ، سنقدم بعض اقتراحات التحسين في نهاية المقالة.
1. عملية العمل الأساسية
بعد ذلك ، نناقش هذه الروتين الفرعي الأربعة بدورها.
(يقوم ASP بتقييد عمليات التقديم المتكررة المتعددة من النماذج) التهيئة
هنا نريد حفظ متغيرين في كائن الجلسة ، من بينها:
⑴ يتوافق كل نموذج مع معرف فريد يسمى FID ، ويستخدم عداد لجعل هذه القيمة فريدة من نوعها.
⑵ كلما تم تقديم نموذج بنجاح ، يجب تخزين FID في كائن القاموس.
نستخدم عملية مخصصة لتهيئة البيانات أعلاه. على الرغم من أن كل روتين فرعي سيطلق عليه في المستقبل ، إلا أنه لن يتم تنفيذه إلا مرة واحدة فقط خلال كل جلسة:
ما يلي هو المحتوى المقتبس: التهيئة الفرعية () إذا لم يكن isObject (الجلسة (Fidlist)) ثم تعيين الجلسة (FidList) = server.createBject (scripting.dictionary) جلسة (FID) = 0 إنهاء إذا نهاية الفرعية |
(تقييد التقديمات المتكررة المتعددة للأشكال في ASP) معرف فريد لتوليد النماذج
يتم استخدام الوظيفة التالية generatefid () لإنشاء علامة فريدة للنموذج. تضيف الوظيفة أولاً قيمة FID بمقدار 1 ثم تُعيدها:
ما يلي هو المحتوى المقتبس: وظيفة generatefid () تهيئة الجلسة (FID) = الجلسة (FID) 1 generatefid = جلسة (FID) وظيفة نهاية |
(التقديمات المتكررة المتعددة للنماذج المقيدة في ASP) قم بتسجيل النموذج المقدم
عند تقديم النموذج بنجاح ، يتم تسجيل معرفه الفريد في كائن القاموس:
ما يلي هو المحتوى المقتبس: السجل الفرعي () قاتمة strfid تهيئة strfid = طلب (FID) الجلسة (Fidlist) .Add Strfid ، الآن () نهاية الفرعية |
(يقيد ASP التقديمات المتكررة المتعددة من النماذج 4) تحقق مما إذا كان النموذج قد تم تقديمه مرارًا وتكرارًا
قبل معالجة نموذج يتم تقديمه رسميًا ، يجب عليك التحقق مما إذا كان FID مسجلاً في كائن القاموس. يتم استخدام وظيفة checkfid () التالية لإكمال هذا العمل. إذا تم تسجيله ، فإنه يعيد خطأ ، وإلا فإنه يعود صحيحًا:
ما يلي هو المحتوى المقتبس: وظيفة checkfid () قاتمة strfid تهيئة strfid = طلب (FID) CheckFid = ليس الجلسة (FidList). وظيفة نهاية |
2. كيفية الاستخدام
هناك مكانان يتم فيه استخدام الوظائف المذكورة أعلاه ، وهما عند توليد النماذج ومعالجة النتائج. على افتراض أن الروتين الفرعي الأربعة أعلاه قد تم وضعها في أشكال ملف التضمين. عملية المعالجة التي تصفها مناسبة لمعظم تطبيقات ASP:
ما يلي هو المحتوى المقتبس: <٪ خيار صريح ٪> <!-#تضمين ملف = forms.inc <html> <head> <title> اختبار التقديم النموذج </title> < /الرأس <body> <٪ إذا طلب (FID) = إذن توليد آخر ProcessForm إنهاء إذا ٪> < /body> </html> |
التوليد المسؤول عن توليد النموذج ، ويجب أن يحتوي النموذج على FID مخفي ، مثل:
ما يلي هو المحتوى المقتبس: <٪ Sub GenerateForm () ٪> <form action = <٪ = request.servervariables (path_info) ٪> method = get> <نوع الإدخال = name hidden = fid value = <٪ = generatefid () ٪ >> <نوع الإدخال = اسم النص = param1 value => <نوع الإدخال = إرسال قيمة = موافق> < /form> <٪ نهاية الفرعية ٪> |
ProcessForm مسؤولة عن معالجة المحتوى المقدم من خلال النموذج ، ولكن قبل المعالجة ، يجب على الاتصال أولاً CheckFid () للتحقق مما إذا كان قد تم تقديم النموذج الحالي. فئة الكود مثل:
ما يلي هو المحتوى المقتبس: <٪ Sub ProcessForm () إذا كان checkfid () ثم الرد. اكتب ما تكتبه |
مشاركة: كيفية إنشاء HTML في ASP؟ هناك بالفعل العديد من أنظمة الأخبار التي تولد HTML ، لكنها تستخدم جميع القوالب. تقوم هذه الوظيفة بحفظ رمز HTML الذي تم إنشاؤه بواسطة صفحة ASP في ملف HTML ، لذلك ليست هناك حاجة لتغيير الصفحة الأصلية لإكمال نظام الأخبار بسهولة يولد HTML. ^ _^ نظرًا لأن الرمز قصير نسبيًا ، فإن المحتوى المقتبس التالي لا يتم التعليق هنا: ٪ 'عندما يكون الهدف