علي الكاسر نشر 17 فبراير 2023 أرسل تقرير نشر 17 فبراير 2023 لدي نمذج لدخال رساله، لما اضغط على زر الاسال اكثر من مره يتم ارسال النموذج على حسب الضغطات على زر الارسال وبالتالي تكرار تكرار الرساله في قاعدة البيانات، فماهو الحل لمنع هذا الامر 1 اقتباس
0 Adnane Kadri نشر 17 فبراير 2023 أرسل تقرير نشر 17 فبراير 2023 يمكنك تعطيل زر الارسال عند ضغطه لأول واعادة تمكينه عند اكتمال الطلب. سيمكنك بهذا تلافي هاته المشكلة. مثال: <button onclick="sendMessage()">send</button> .. <script> let isSending = false; function sendMessage(){ if(! isSending){ // يتم الارسال الآن isSending = true // ارسال طلب الاجاكس // بعد نجاح طلب الاجاكس .then(response => { isSending = false }) } } </script> اقتباس
0 Sam Ahw نشر 17 فبراير 2023 أرسل تقرير نشر 17 فبراير 2023 يوجد عدة حلول من ناحية الحماية لهذا الأمر، ومنها من طرف المستخدم كإضافة وقت عند كل عملية ضغط على زر الإرسال باستخدام setTimeOut في جافاسكريبت، أو الانتظار لعدد من الثواني بعد عملية إرسال البيانات. ولكن تبقى هذه الطرق عرضة للتلاعب فهي من طرف المستخدم وبالتالي يمكن لأي شخص تعطيل هذه الآلية. لذا يفضّل اتباع بعض معايير الحماية من طرف خادم الويب، مثل استخدام مايعرف ب Rate Limiter والذي يعمل على حجب الطلبات HTTP القادمة إلى خادم الويب من نفس المستخدم أو عنوان ال IP لمدّة معيّنة من الزمن حسب العدد الأعظمي الذي تحدده أنت، ولها أيضاً العديد من التطبيقات والمزايا التي قد تكون مفيدة في هذه الحالات. يختلف تطبيقها حسب لغة البرمجة وإطار العمل الذي تستخدمه ولكن يمكنك البحث عن المصطلح ضمن الانترنت تبعاً للغة البرمجة التي تتعامل معها وستجد العديد من الحلول والأمثلة لتطبيقها. ضمن لارافل يوجد قسم خاص ضمن التوثيق الرسمي يدعى Rate Limiting، أما في node.js يوجد العديد من المكتبات منها express-rate-limit لإطار العمل Express.js. اقتباس
0 علي الكاسر نشر 18 فبراير 2023 الكاتب أرسل تقرير نشر 18 فبراير 2023 بتاريخ 13 ساعة قال Sam Ahw: يوجد عدة حلول من ناحية الحماية لهذا الأمر، ومنها من طرف المستخدم كإضافة وقت عند كل عملية ضغط على زر الإرسال باستخدام setTimeOut في جافاسكريبت، أو الانتظار لعدد من الثواني بعد عملية إرسال البيانات. ولكن تبقى هذه الطرق عرضة للتلاعب فهي من طرف المستخدم وبالتالي يمكن لأي شخص تعطيل هذه الآلية. لذا يفضّل اتباع بعض معايير الحماية من طرف خادم الويب، مثل استخدام مايعرف ب Rate Limiter والذي يعمل على حجب الطلبات HTTP القادمة إلى خادم الويب من نفس المستخدم أو عنوان ال IP لمدّة معيّنة من الزمن حسب العدد الأعظمي الذي تحدده أنت، ولها أيضاً العديد من التطبيقات والمزايا التي قد تكون مفيدة في هذه الحالات. يختلف تطبيقها حسب لغة البرمجة وإطار العمل الذي تستخدمه ولكن يمكنك البحث عن المصطلح ضمن الانترنت تبعاً للغة البرمجة التي تتعامل معها وستجد العديد من الحلول والأمثلة لتطبيقها. اخي لقد بحثت كثيرا في قوقل عن Rate Limiter ولكن لم احد مصادر عربيه تتحدث عنه، جربت بعض الاكواد التي وجدتها في مصادر اجنبيه الا انها فاشله وغير مفهومه واغلبها لم تعمل، هل يمكن ان تشرح لي بالاكواد php لافهم الموضوع اقتباس
0 Sam Ahw نشر 18 فبراير 2023 أرسل تقرير نشر 18 فبراير 2023 بتاريخ 1 دقيقة مضت قال علي الكاسر: اخي لقد بحثت كثيرا في قوقل عن Rate Limiter ولكن لم احد مصادر عربيه تتحدث عنه، جربت بعض الاكواد التي وجدتها في مصادر اجنبيه الا انها فاشله وغير مفهومه واغلبها لم تعمل، هل يمكن ان تشرح لي بالاكواد php لافهم الموضوع في لارافل مثلاً يتم تعريفه التحكم بالمسار المراد تحديد عدد الطلبات له بالخطوات التالية: 1- ضمن المسار App\Providers\RouteServiceProvider يتم إضافة الإعدادات ضمن الدالة configureRateLimiting : use Illuminate\Cache\RateLimiting\Limit; use Illuminate\Http\Request; use Illuminate\Support\Facades\RateLimiter; /** * Configure the rate limiters for the application. */ protected function configureRateLimiting(): void { RateLimiter::for('api', function (Request $request) { return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); }); } حيث يمكنك التحكّم بالمسارات بشكل عام أو بشكل مخصص لكل مسار، بزمن الحجب بالثانية، والعامل الذي سيتم من خلاله التأكد من أن المستخدم هو نفسه وهنا تحققنا من id أو عنوان IP يوجد العديد من الأمثلة في التوثيق الرسمي للارافل، يمكنك ترجمتها إلى اللغة الغربية في حال لم تكن قادراً على قرائتها أو فهمها. اقتباس
السؤال
علي الكاسر
لدي نمذج لدخال رساله، لما اضغط على زر الاسال اكثر من مره يتم ارسال النموذج على حسب الضغطات على زر الارسال وبالتالي تكرار تكرار الرساله في قاعدة البيانات، فماهو الحل لمنع هذا الامر
4 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.