الزملاء الكرام
إذا احتوت صفحة كود لحشر بيانات في قاعدة البيانات, عند تنفيذها لأول مرة تتم الإضافة و هو المطلوب..........لكن
إذا قام الزائر بتحديث الصفحة من شريط أدوات المستعرض.........كيف نوقف عملية الإضافة مرة ثانية....
أخوكم الحكيم
الزملاء الكرام
إذا احتوت صفحة كود لحشر بيانات في قاعدة البيانات, عند تنفيذها لأول مرة تتم الإضافة و هو المطلوب..........لكن
إذا قام الزائر بتحديث الصفحة من شريط أدوات المستعرض.........كيف نوقف عملية الإضافة مرة ثانية....
أخوكم الحكيم
تم تعديل هذه المشاركة بواسطة phpspider في 1 ديسمبر 2006 في 21:01
بسم الله الرحمن الرحيم
و قل ربي زدني علماً
صدق الله العظيم
معتقدش ان دة ممكن .
أو خاينى افكر معاك بصوت عالى من حبث انى عندى برد و مش ناوى اعمل حاجة تانية دلوقتى.
فى فكرة انه ممكن تمنع المستخدم من انه يضيف اكتر من مرة فى فترة زمنية ما (مثلا مرة\دقيقة).
زى فى المثال , لو استنى لمدة اكتر من دقيقة و بعد كدة عمل refresh يبقى كأننا معملناش حاجة.
عموما الفكرة دى كويسة فى الحد من مشكلة ان لو المستخدم ضغظ زر الأدخال مرتين ورة بعض من غير قصد.
-----
الفكرة الثانية , استخدم الـ tokens :
فى الـ session بتاعت المستخدم اعمل array سميها FormTokens مثلا و كل امة تعرض فورم للمستخدم , ضيف فى الفورم hidden input اسمه token و حط قيمته اى قيمة عشوائية صعب تكرارها , مثلا زى :
md5(time());
ممكن تعمل انت حاجة معقدة اقدر عشان محدش يعرف يخمنها بسهولة عشان لو حب يضرب الى انت عامله.
المهم, بعد كدة ضيف القيمة الى انت حتيطها فى الـ hidden input كعنصر فى مصفوفة FormTokens .
بعد مالمستخدم ميملء الفورم و يضغط ادخال , حتوصلك البيانات الى ادخالها و معاها الـ token , خد قيمة الـ token الى جيالك من المستخدم و اتأكد انها موجودة فى الـ FormTokens , فى حالة وجود الـ token , يبقى العملية سليمة و نفذ الى طلبه المستخدم و احذف الـ token دة من مصفوفة الـ FormTokens .
إذا حاول المستخدم انه يعمل refresh للصفحة من تانى يبقى حتترسل نفس البيانات القديمة مع نفس الـ token القديم , و ساعتها انت حتدور على الـ token فى الـ FormTokens كالعادة , بس مش حتلاقيه لأنك حذفته فى أول مرة , بالتالى بيبقى الباقى عليك هو انك توقف العملية .
الحل دة جيد جدا فى نظرى
هذا الموضوع مغلق.
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…