يعد تقديم النموذج المتكرر المشكلة الأكثر شيوعًا في تطبيقات الويب متعددة المستخدمين ويسبب الكثير من المتاعب. هناك العديد من سيناريوهات التطبيق التي تواجه مشاكل في التقديم المكررة ، مثل:
انقر فوق الزر إرسال مرتين. انقر فوق زر التحديث. كرر الإجراءات السابقة باستخدام زر استرداد المتصفح ، مما يؤدي إلى تقديم متكرر للنموذج. كرر نماذج التقديم باستخدام تاريخ المتصفح. طلبات HTTP المتكررة من المتصفح.
عدة طرق لمنع التقديمات المتكررة للأشكال
1. تعطيل زر إرسال . استخدم JavaScript لإجراء تعطيل زر الإرسال بعد إرسال النموذج. تمنع هذه الطريقة المستخدمين الصبر من النقر فوق الأزرار عدة مرات. ولكن هناك مشكلة. إذا حظر العميل JavaScript ، فستكون هذه الطريقة غير صالحة.قال مقالتي السابقة أن استخدام بعض الإضافات jQuery يعمل بشكل جيد.
2.post/redirect/get . قم بإجراء إعادة توجيه الصفحة بعد التقديم ، والذي يسمى وضع ما بعد REDIRECT-GET (PRG). باختصار ، عندما يقدم المستخدم النموذج ، تقوم بإعادة توجيه عميل وانتقل إلى صفحة معلومات نجاح التقديم.يمكن أن يتجنب ذلك التقديمات المتكررة الناجمة عن المستخدمين الذين يضغطون على F5 ، ولن تكون هناك تحذيرات من عمليات التقديم المتكررة لأشكال المتصفح ، ويمكنها أيضًا القضاء على نفس المشكلات التي تسببها الأمام وظهر المتصفحات.
3. تخزين شعار خاص في الجلسة . عند طلب صفحة النموذج ، يتم إنشاء سلسلة علامة شخصية خاصة ، والتي توجد في الجلسة ووضعها في الحقل المخفي للنموذج. عند قبول بيانات نموذج المعالجة ، تحقق مما إذا كانت سلسلة التعريف موجودة وحذفها من الجلسة على الفور ، ثم معالجة البيانات بشكل طبيعي.إذا وجدت أنه لا توجد سلسلة علامة صالحة في تقديم النموذج ، فهذا يعني أن النموذج قد تم تقديمه ويتم تجاهل هذا التقديم.
هذا يمنح تطبيق الويب الخاص بك حماية XSRF أكثر تقدمًا.
4. إضافة قيود في قاعدة البيانات. أضف قيودًا فريدة في قاعدة البيانات أو إنشاء فهارس فريدة لمنع البيانات المكررة. هذه هي الطريقة الأكثر فعالية لمنع التقديمات المتكررة للبيانات.ما سبق هو مقدمة لهذه الطرق الأربعة. إذا كان لديك حل أفضل ، فالرجاء إخباري ، وسيتم تحديث هذه المقالة بشكل مستمر.