كيف يمكنني إزالة البيانات الحساسة من وظيفة debug_backtrace؟

StackOverflow https://stackoverflow.com/questions/2654223

  •  27-09-2019
  •  | 
  •  

سؤال

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

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

هل هناك طريقة بسيطة يمكنني إزالة بعض أزواج مفتاح/قيمة حساسة من صفيف الخلفية؟ ربما بطريقة ما لتحويل الصفيف إلى سلسلة باستخدام print_r ، ثم العودة إلى صفيف مع تم تغيير المواقع العودية إلى السلسلة العودية, ، والتي يمكنني التكرار من خلال.

لا أريد تنفيذ تعبيرات منتظمة على تمثيل السلسلة إن أمكن.

هل كانت مفيدة؟

المحلول

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

$backtrace = debug_backtrace();
$backtrace = serialize($backtrace);
$backtrace = unserialize($backtrace);

recursive_sanitization_func($backtrace);

تعديل: حسنًا ، لذلك هذا ليس حلاً كاملًا. إنه يعمل مع مراجع الكائنات العودية (فقدت) ولكن ليس للصفائف العودية (يتم الاحتفاظ بها).

إن حلي الحالي هو تسلسل/عدم التسلسل على النحو الوارد أعلاه ، ثم تشغيل الصفيف الناتج من خلال وظيفة الكشف عن التكرار مثل تلك الموضحة هنا: http://www.php.net/manual/en/ref.array.php#96914

أتمنى أن يكون هناك شيء أكثر وضوحًا ، لكن هذا يحصل علي الآن إلا إذا جاء شخص آخر بحل أفضل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top