"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لماذا يتم الهروب التلقائي لبيانات POST في PHP حتى عند تعطيل عروض الأسعار السحرية؟

لماذا يتم الهروب التلقائي لبيانات POST في PHP حتى عند تعطيل عروض الأسعار السحرية؟

تم النشر بتاريخ 2024-11-20
تصفح:804

Why is POST Data Auto-Escaping in PHP Even When Magic Quotes are Disabled?

الكشف عن بيانات النشر الغامضة التي يتم الهروب منها تلقائيًا في PHP مع علامات الاقتباس السحرية المعطلة

عند العمل مع بيانات POST في PHP، لا سيما داخل في بيئة WordPress، من الممكن أن تواجه سلوكيات الهروب التلقائي غير المتوقعة على الرغم من إيقاف علامات الاقتباس السحرية. تنشأ هذه المشكلة المحيرة عندما تخضع بيانات POST للهروب التلقائي، على الرغم من أنه تم تعطيل علامات الاقتباس السحرية (get_magic_quotes_gpc() تُرجع 0).

تأثير ووردبريس

عند التعمق أكثر في هذه المشكلة، يصبح من الواضح أن WordPress يلعب دورًا حاسمًا في تفعيل آلية الهروب التلقائي هذه. عندما يتم تشغيل WordPress كجزء من عملية تهيئة التطبيق الخاص بك، فإن التعليمات البرمجية الخاصة به تتداخل مع السلوك الطبيعي لعلامات الاقتباس السحرية في PHP.

يتضمن WordPress وظائف تعترض بيانات الطلب، بما في ذلك بيانات POST، وتنفذ عمليات معينة، إحداها يتم الهروب من علامات الاقتباس المفردة ('). يمتد هذا السلوك حتى عند تعطيل علامات الاقتباس السحرية في php.ini.

مصدر الخطأ

يكشف الفحص الدقيق لقاعدة تعليمات WordPress عن خطأ تم الإبلاغ عنه ضمن نظام WordPress Core Trac (التذكرة 18322). تتعلق هذه المشكلة بالمعالجة غير الصحيحة لبيانات الطلب، مما يؤدي إلى الهروب غير المرغوب فيه.

الحل

لحسن الحظ، يتوفر حل لحل معضلة الهروب التلقائي هذه . يوصي WordPress Codex باستخدام وظيفة stripslashes_deep() "لإلغاء الهروب" من بيانات POST قبل إجراء أي عمليات عليها. من خلال استخدام هذه الوظيفة، يمكنك تجاوز ميزة الهروب التلقائي في WordPress بشكل فعال واسترداد البيانات بتنسيقها الأصلي.

لتنفيذ هذا الحل، أضف الكود التالي إلى برنامج PHP النصي الخاص بك:

$_GET       = array_map('stripslashes_deep', $_GET);
$_POST      = array_map('stripslashes_deep', $_POST);
$_COOKIE    = array_map('stripslashes_deep', $_COOKIE);
$_SERVER    = array_map('stripslashes_deep', $_SERVER);
$_REQUEST   = array_map('stripslashes_deep', $_REQUEST);

يزيل هذا الكود الخطوط المائلة من جميع الكائنات العالمية الفائقة، مما يضمن عدم الهروب من بيانات POST تلقائيًا عند الوصول إليها في PHP.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3