Laravel هو إطار عمل شائع في عالم PHP، ويقدم للمطورين أدوات رائعة لتبسيط عملهم. ومع ذلك، في بعض الأحيان يمكن أن تؤدي وسائل الراحة هذه إلى مشاكل غير متوقعة. في هذا المنشور، سأناقش كيف يمكن للبرامج الوسيطة TrimStrings في Laravel أن تسبب مشكلات وكيفية حلها.
يتم استخدام البرنامج الوسيط TrimStrings في تطبيقات Laravel لقص المسافات البيضاء تلقائيًا من بيانات الطلبات الواردة، مثل مدخلات النماذج. يعد هذا مفيدًا بشكل خاص عندما يترك المستخدمون مسافات عن طريق الخطأ في بداية أو نهاية حقول الإدخال. على سبيل المثال، إذا قام المستخدم بإدخال "[email protected]" بمسافات حول عنوان البريد الإلكتروني في نموذج، فإن البرنامج الوسيط TrimStrings سوف يقوم بقص هذه المسافات، مما يضمن معالجة "[email protected]" فقط. .
هذه الميزة مفيدة لمنع الأخطاء الناجمة عن المسافات البيضاء غير الضرورية وللتعامل مع البيانات الأنظف. ومع ذلك، كما هو الحال دائمًا، في بعض الحالات الخاصة، يمكن أن يؤدي هذا السلوك الافتراضي إلى عواقب غير مقصودة.
في مشروع كنا نتكامل فيه مع مزود دفع في البرازيل، كنا بحاجة إلى التقاط نتائج الدفع والتحقق من صحتها من خلال نظام رد الاتصال. يرسل مزود الدفع نتيجة المعاملة إلى الخادم الخاص بنا عبر طلب POST، ونقوم بالتحقق من صحة الطلب عن طريق إجراء التحقق من التوقيع/التجزئة.
تتبع عملية التحقق هذه منطقًا مباشرًا:
في البداية، كان من الصعب فهم سبب رفض بعض الطلبات الصالحة. ومع ذلك، بعد فحص سجلات Nginx، لاحظنا أن المعلمة full_name في الطلب الوارد تحتفظ بالمسافات الزائدة. على الرغم من ذلك، تم قطع هذه المساحات على الخادم الخاص بنا، مما تسبب في فشل التحقق من التجزئة. وذلك عندما أدركنا أن البرنامج الوسيط TrimStrings كان يسبب هذه المشكلة.
لتجنب مثل هذه المشاكل، من الضروري تعطيل البرنامج الوسيط TrimStrings لمسارات أو طلبات محددة. قدم Laravel 8 طريقة TrimStrings::skipWhen، والتي توفر حلاً مخصصًا لهذه الحالة.
فيما يلي مثال لكيفية تطبيق هذا الحل باستخدام موفر:
use Illuminate\Foundation\Http\Middleware\TrimStrings; use Illuminate\Http\Request; // ... TrimStrings::skipWhen(function (Request $request) { return $request->is('api/v1/integrations/foo-provider/callback'); });
يعمل مقتطف التعليمات البرمجية هذا على تعطيل البرنامج الوسيط TrimStrings لمسار معين. في هذه الحالة، لن يتم إجراء القطع للطلبات الواردة من مسار api/v1/integrations/foo-provider/callback، مما يضمن أن عملية التحقق من التجزئة تعمل بسلاسة.
تعمل الميزات الافتراضية في Laravel بشكل عام على تسهيل الأمور، ولكن في سيناريوهات معينة، يمكن أن تؤدي إلى نتائج غير متوقعة. ولذلك، من المهم أن نفهم كيفية عمل الأدوات التي نستخدمها وأن نقيم تأثيراتها المحتملة بعناية. على الرغم من أن البرنامج الوسيط TrimStrings يعد أداة مفيدة في معظم الحالات، إلا أنه يمكن أن يسبب مشكلات في مثل هذه السيناريوهات. ولحسن الحظ، تتيح لنا الحلول المرنة مثل TrimStrings::skipWhen تجنب مثل هذه المشكلات.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3