it-swarm.asia

كيفية التعامل مع نماذج الخطوات المتعددة حيث لا يتم تقديم أحد النماذج

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

كان الحل الوحيد لي هو تحديث قاعدة البيانات بعلم من إرسال النموذج الأول الذي يحدد أنه لم يتم إرسال بريد إلكتروني. سيؤدي تقديم النموذج الثاني إلى إطلاق حدث لإرسال بريد إلكتروني وتحديث قاعدة البيانات بعلم يحدد إرسال بريد إلكتروني. سيتم تشغيل وظيفة cron بشكل دوري للتحقق من وجود أي علامات على رسائل البريد الإلكتروني غير المرسلة ، وجمع المعلومات ، وإرسال بريد إلكتروني.

هل هذه هي أفضل طريقة للتعامل مع هذه القضية؟

شكر.

تحرير: الوضوح

نموذج 1 مستخدم يقدم البيانات العامة

رسالة 1 قدم المستخدم مع اختيار. يحتاج المستخدم إلى اختيار "النجاح" أو "القبول". إذا أرسل المستخدم نموذج "قبول" (نموذج 2) ، يتم إرسال بريد إلكتروني. إذا أرسل المستخدم نموذج "النجاح" (النموذج 2) ، فسيتم تقديمه مع رسالة أخرى مع خيار آخر (النموذج 3). إذا لم يقم المستخدم بأي شيء ، فإن الخيار الأخير المقدم هو اختياره الافتراضي ، ولكن في هذه المرحلة ، لا يزال يتعين إرسال رسالة بريد إلكتروني.

آمل أن يكون هذا أكثر وضوحا.

2
user334

نظرًا لأن HTTP بدون جنسية ، فإن الطريقة الوحيدة لتتبع ما إذا كان المستخدم قد أرسل النموذج الأول بمجرد إغلاق المتصفح هي باستخدام آلية الثبات (على سبيل المثال ، قاعدة بيانات) تمامًا مثلما فعلت.

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

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

0
Andy West

هذا يعتمد على سبب قلقك بشأن هذا.

إذا كان اهتمامك هو عدم وجود بيانات غير كاملة في قاعدة بياناتك ، أقترح فقط الاحتفاظ بالبيانات التي تم إدخالها في جلسة المستخدم حتى يكمل المستخدم النموذج الثاني ثم يقوم بتحديث قاعدة البيانات وإرسال البريد الإلكتروني. إذا لم يكلف المستخدم عناء ملء النموذج الثاني ، فسيُنسى التبادل بالكامل بمجرد انتهاء الجلسة.

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

يمكن أن يساعد وجود علامة (كما تمت مناقشته في السؤال) في تحديد ما إذا كان هذا يحدث ، لكنه لن يخبرك بما إذا كان يحدث من خلال خطأ المستخدم أو ببساطة لأن المستخدم فقد الاهتمام (ما لم يكن لديك جمهور أسير من نوع ما).

كبديل ، إذا تمكنت من الاتصال عند انتهاء جلسة المستخدم (هذا بسيط إلى حد ما مع Java المواقع ، لست على دراية بهذه الميزة في تقنيات جانب الخادم الأخرى) ، يمكنك التحقق من المعاملات غير المكتملة في ذلك نقطة.

1
Kris

كما تصف ، يجب أن يكون لديك state من العملية في قاعدة البيانات الخاصة بك لتحديد الخطوات التي تم إكمالها ..

الآن ، تعتمد الخطوة التالية على التكنولوجيا المستخدمة ..

من أجل ASP/ASP.NET هناك حدث تم تشغيله ( جانب الخادم ) عند انتهاء الجلسة ، ومن ثم يمكنك التقاطه. القيام بعملية التنظيف/الإكمال التلقائي للإجراء ..

لست متأكدًا مما إذا كان هذا ممكنًا في البيئات PHP على الرغم من .. أفترض أنه يمكنك تخزين طابع زمني بمجرد اكتمال الخطوة الأولى وسيتم تشغيل مهمة cron بشكل دوري ولكن تحقق أولاً من الطابع الزمني = لمعرفة ما إذا كان قد تم تحديد فترة زمنية محددة قبل الإكمال التلقائي ..

0
Gabriele Petrioli